我正在尝试在我的功能应用中使用MEF。我的要求是访问5-10个外部API,通过HTTP触发的函数获取,聚合和返回数据。我需要根据某些逻辑动态地解决外部依赖关系。这些外部组件已经构建和导出。我需要将它们与元数据一起导入。
我发现在VS 2017中创建的默认功能应用中已经引用了System.ComponentModel.Composition
程序集。不确定如何继续。如果可以在Azure功能中使用,则示例设置代码将非常有用。
答案 0 :(得分:5)
根据您的场景,我通过VS2017创建了Http Trigger功能来测试此问题。我跟着 Simple Calculator MEF Application。这是我的项目的结构,如下:
如果不将支持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>")
此外,您可以利用kudu并导航至D:\home\site\wwwroot\<your-function-name>
,然后在其下添加Extensions
文件夹,然后使用路径DirectoryCatalog
初始化您的Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\<your-function-name>\<your-extensions-folder>")