Ven*_*nky 3 c# mef composition azure azure-functions
我想在我的功能应用程序中使用MEF.我的要求是访问5-10个外部API,通过HTTP触发的函数获取,聚合和返回数据.我需要根据某些逻辑动态地解决外部依赖关系.这些外部组件已经构建和导出.我需要将它们与元数据一起导入.
我发现 System.ComponentModel.Composition在VS 2017中创建的默认功能应用程序中已经引用了程序集.不确定如何继续.如果可以在Azure功能中使用,则示例设置代码将非常有用.
根据您的场景,我通过VS2017创建了Http Trigger功能来测试此问题.我按照简单计算器MEF应用程序.这是我的项目的结构,如下:
如果不将支持Mod操作的扩展lib添加到Extensions文件夹中,则可以检索以下结果:
添加时ExtendedOperations.dll,Mod操作可以按预期工作如下:
在我本地,我添加了DirectoryCatalog通过硬编码初始化的路径.部署到azure端时,将部署预编译的函数库D:\home\site\wwwroot\bin>,您可以Extensions在其中添加文件夹并使用以下代码检索扩展文件夹:
Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\bin\<your-extensions-folder>")
Run Code Online (Sandbox Code Playgroud)
此外,您可以利用kudu并导航到D:\home\site\wwwroot\<your-function-name>,然后Extensions在其下添加您的文件夹,然后DirectoryCatalog使用路径初始化您Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\<your-function-name>\<your-extensions-folder>").