2017-06-20 17 views
2

我正在嘗試將F#和Paket與Azure函數結合使用。我正在運行Azure Functions Core Tools,因此我可以在將它們部署到Azure之前在本地運行我的功能。Azure函數主機不會解決依賴關係

問題是,當我運行函數,編譯失敗:

warning FS211: The search directory 'C:\Users\MY_USER\AppData\Local\Temp\51f4f9fa-dc47-48b7-a2fa-432b52cf02a9\../packages' could not be found 

相關的代碼如下所示:

#I "../packages" 

#r "FSharp.Data/lib/net40/Fsharp.Data.dll" 
#r "WindowsAzure.Storage/lib/net45/Microsoft.WindowsAzure.Storage.dll" 
#r "System.Net.Http/lib/net46/System.Net.Http.dll" 

現在,../packages是一攬子貸款的依賴正確的路徑,相對於.fsx文件。當我在VS Code中交互式地運行代碼時,這很好,但Azure主機似乎在使用一個奇怪的搜索目錄(不存在,BTW)而不是使用代碼目錄。

我試過指定喜歡的絕對路徑:

#r "C:/MY_PATH/packages/FSharp.Data/lib/net40/Fsharp.Data.dll" 
#r "C:/MY_PATH/packages/WindowsAzure.Storage/lib/net45/Microsoft.WindowsAzure.Storage.dll" 
#r "C:/MY_PATH/packages/System.Net.Http/lib/net46/System.Net.Http.dll" 

這樣做可以讓代碼編譯,但後來我得到了運行時,它這個錯誤:

Unable to find assembly 'FSharp.Data, Version=2.3.3.0, Culture=neutral, PublicKeyToken=null'. Are you missing a private assembly file? 

我查了一下FSharp.Data組裝確實是在版本2.3.3.0

我如何能得到Azure的功能主機查找和使用我的依賴任何想法?

+2

看來函數團隊現在傾向於F#和C#的預編譯函數而不是腳本。這種方法讓我們更加高興。它應該簡化你的工具包依賴關係的故事,因爲你只是提供DLL。通過調用函數工具啓動項目,這也使得在VS中進行調試非常容易。另一個好處是你的功能啓動時間更快。 – TheQuickBrownFox

+1

剋日什托夫·Cieslak具有使用PAKET依賴管理Azure的函數的例子 - 我試圖近日做到這一點,這幫助了很多:https://github.com/Krzysztof-Cieslak/AzureFunctionsSamples –

+0

@TomasPetricek我讀的博客文章他的,但它並沒有包含本地開發 – Cocowalla

回答

1

這似乎是現在的工作,只要我不#I指定搜索路徑,包括引用完整的相對路徑。

我真的不知道爲什麼這種情況下,雖然。