在Azure函数中使用MEF App

问题描述:

我想在我的函数应用程序中使用MEF。我的要求是访问5-10个外部API,通过HTTP触发函数获取,聚合和返回数据。我需要基于某种逻辑动态地解析外部依赖关系。这些外部组件已经构建并导出。我需要将它们与元数据一起导入。在Azure函数中使用MEF App

我观察到System.ComponentModel.Composition程序集已经在VS 2017中创建的默认函数应用程序中引用。不知道如何继续。如果在Azure函数中有可能,示例设置代码将会很有帮助。

+0

有人问类似[问题](https://github.com/Azure/Azure-Functions/issues/550)。我建议你可以使用这个示例[Simple Calculator MEF Application](https://code.msdn.microsoft.com/windowsdesktop/Simple-Calculator-MEF-1152654e/sourcecode?fileId=18843&pathId=1181778681)来使用你的天蓝色功能应用来缩小这个问题。 –

+0

我在蔚蓝功能社区提出这个问题。虽然没有回应。 https://github.com/Azure/Azure-Functions/issues/550 – Venky

根据你的场景,我通过VS2017创建了我的Http Trigger函数来测试这个问题。我跟着 Simple Calculator MEF Application。这里是我的项目的结构,如下所示:

enter image description here

无需添加它支持Mod运算到Extensions文件扩展名的lib,你可以检索结果如下:

enter image description here

虽然增加了ExtendedOperations.dll,但Mod操作仍可按照以下方式正常工作:

enter image description here

在我的本地方面,我添加了通过硬代码初始化DirectoryCatalog的路径。当部署到蔚蓝的一面,你的预编译功能的lib将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文件夹,然后使用路径Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\<your-function-name>\<your-extensions-folder>")初始化您的DirectoryCatalog

enter image description here

+0

完美......... – Venky