2017-06-07 42 views
1

如果在函數的project.json文件中列出,則Azure函數中的.csx文件可以使用nuget包。例如:Azure函數:共享的.csx可以使用nuget包嗎?

{ 
    "frameworks": { 
    "net46":{ 
     "dependencies": { 
     "Microsoft.ProjectOxford.Face": "1.1.0" 
     } 
    } 
    } 
} 

但與放置在功能應用下的根共享.csx文件所發生的(即不是在一個特定的功能)?有沒有辦法在應用程序功能(root)級別引入nuget包?

我發現一種解決方法在上載所述NuGet包的DLL到共享bin文件夾作爲Azure Functions C# developer reference解釋:

共用組件的功能的應用程序內的所有功能共享。要引用自定義程序集,請將程序集上傳到函數應用程序,例如函數應用程序根目錄中的bin文件夾。

有沒有辦法做得更好,所以我的代碼依賴於nuget包而不是在dll上?

+1

你對這些共享的'.csx'文件做了什麼?函數體中的'#load'如果是這樣,你仍然可以從函數中引用NuGet,對吧? – Mikhail

+0

是的,我從一個函數加載共享的.csx,函數的project.json指定了nuget的依賴關係,但仍然出現編譯錯誤。 – urig

+1

你收到了什麼編譯錯誤?你的共享csx中有沒有正確的使用語句? – ahmelsayed

回答

1

實際的軟件包引用是在每個函數中管理的(即沒有函數應用程序級別的軟件包引用集合),但是當通過使用#load指令進入函數時,共享CSX文件成爲同一編譯單元的一部分,能夠使用函數中定義的程序集/程序包引用。但是你仍然需要在功能級別管理這些。

您可以將#load行爲視爲常規C#項目中的鏈接文件,該項目將引入該文件,但會在項目的上下文中進行編譯。這適用於這裏的功能。

+0

謝謝。我發現,正如你所描述的,如果我在函數級別正確指定nuget依賴項,那麼即使共享的.csx使用依賴關係,該函數也會很好地編譯。 – urig

相關問題