我有一个azure函数,即使我在project.json文件中指定了依赖项,也会抛出以下错误。
“无法加载文件或程序集'Microsoft.WindowsAzure.Storage,Version = 8.1.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项。系统找不到指定的文件。”
{
"frameworks": {
"net46": {
"dependencies": {
"WindowsAzure.Storage": "8.1.1"
}
}
}
}
我尝试重新启动应用服务,创建另一个FunctionApp以排除主机未加载更新的程序集的任何问题,但仍然无法让它工作。
Nuget restore还显示正在恢复此程序集,但仍然不断发出此错误。还有什么可能是错的以及如何调试此问题?
答案 0 :(得分:13)
原来是版本不匹配问题。目前,WindowsAzure.Storage
包的版本可用AzureFunctions is 7.2.1
。我有一个依赖于8.1.1
的自定义程序集,这就是我尝试使用project.json
安装它的原因。
显然无法完成。我切换到7.2.1
然后它工作得很好。如果您正在编写预编译函数,那么这将始终存在问题,因为依赖项应该与Azure Functions的可用开箱即可。我希望微软在未来的版本中改进这种体验。
答案 1 :(得分:8)
WindowsAzure.Storage
由环境自动为您引用,因此您不应手动执行此操作。
清理你的project.json
,然后只使用函数脚本中的程序集:
#r "Microsoft.WindowsAzure.Storage"
通过明确引用NuGet包,您可能会遇到版本冲突。
请参阅“引用外部程序集”部分method。
答案 2 :(得分:3)
您可以在 Azure功能中使用WindowsAzure.Storage 8.1.1
,您需要将其放入自定义 Azure功能的bin/
目录中程序集驻留(共享程序集策略)。位于bin/
的任何装配都会被探测到。在占用nuget依赖项/包之前首先加载。
只需使用 Azure功能门户, AppService编辑器, Kudu 或 FTP 即可移动{{1进入Microsoft.WindowsAzure.Storage.dll
。
根据我的经验, Azure Functions Runtime 依赖项将优先于任何/bin
目标。一旦 Azure功能运行时将其加载到project.json
中,自动nuget restore
到/data/Functions/packages/nuget
将不允许您使用目标程序集。