2017-06-20 44 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指定搜索路径,包括引用完整的相对路径。

我真的不知道为什么这种情况下,虽然。