在 Azure 函数应用程序中使用 MEF

Using MEF in an Azure function App

我正在尝试在我的函数应用程序中使用 MEF。我的要求是访问 5-10 个外部 API,通过 HTTP 触发函数获取、聚合和 return 数据。我需要根据一些逻辑动态地解决外部依赖关系。这些外部组件已经构建并导出。我需要将它们与元数据一起导入。

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

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

不在Extensions文件夹中添加支持Mod操作的扩展库,可以得到如下结果:

虽然添加了 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 文件夹,然后使用路径 [=19] 初始化您的 DirectoryCatalog =].