Azure功能 - 无法加载文件或程序集''Microsoft.WindowsAzure.Storage'

时间:2017-03-06 05:39:49

标签: azure azure-functions

我有一个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还显示正在恢复此程序集,但仍然不断发出此错误。还有什么可能是错的以及如何调试此问题?

3 个答案:

答案 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将不允许您使用目标程序集。