2017-03-06 69 views
7

我有一個天藍色的函數即使在project.json文件中指定了依賴關係之後仍然會拋出下面的錯誤。Azure函數 - 無法加載文件或程序集''Microsoft.WindowsAzure.Storage'

「無法加載文件或程序集'Microsoft.WindowsAzure.Storage,Version = 8.1.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其某個依賴項,系統找不到指定的文件。

{ 
    "frameworks": { 
    "net46": { 
     "dependencies": { 
     "WindowsAzure.Storage": "8.1.1" 
     } 
    } 
    } 
} 

我試圖重新啓動應用程序服務,創建另一個FunctionApp排除與主機不加載更新組件的任何問題,我仍然無法得到它的工作。

Nuget恢復還顯示此程序集正在恢復,但它仍然不斷給這個錯誤。還有什麼可能是錯誤的,以及如何去調試這個問題?

回答

5

WindowsAzure.Storage由環境自動引用,因此您不應該手動執行此操作。

清潔您的project.json,只是使用從功能的腳本組件:

#r "Microsoft.WindowsAzure.Storage" 

通過明確引用NuGet包,你可能會得到版本衝突。

請參閱「引用外部裝配」部分here

+0

謝謝米哈伊爾。即使在我將其從project.json中刪除後,我仍然收到同樣的錯誤。我現在project.json如下:{ 「框架」:{ 「net46」:{ 「依賴」:{ }} } } –

7

原來是版本不匹配問題。目前,WindowsAzure.Storage包的版本可用於AzureFunctions is 7.2.1。我有一個自定義程序集,它依賴於8.1.1,這就是爲什麼我試圖使用project.json來安裝它。

顯然它不能完成。我切換到7.2.1,然後它工作得很好。如果您正在編寫預編譯函數,則這會始終存在問題,因爲依賴關係應該與Azure函數提供的開箱即用功能匹配。我希望微軟在未來的修訂中改進這種體驗。

1

您可以在Azure的功能使用WindowsAzure.Storage 8.1.1,你需要把它放到bin/目錄Azure的功能的在您的自定義組件所在(共享組件策略)。探查位於bin/中的任何程序集,首先在加載nuget依賴項/程序包之前加載&。

只需使用Azure的功能門戶AppService服務編輯,或FTP移動Microsoft.WindowsAzure.Storage.dll/bin

根據我的經驗,Azure函數運行時依賴關係將比任何project.json目標先例。一旦Azure Function Runtime已將它們加載到AppDomain中,自動nuget restore/data/Functions/packages/nuget將不允許您使用目標程序集。

相關問題