2017-10-17 109 views
2

我想在我的函數應用程序中使用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

回答

4

根據你的場景,我通過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