【问题标题】:Azure Functions - Could not load file or assembly ''Microsoft.WindowsAzure.Storage'Azure Functions - 无法加载文件或程序集“Microsoft.WindowsAzure.Storage”
【发布时间】:2017-07-25 21:22:43
【问题描述】:

即使我在 project.json 文件中指定了依赖项,我也有一个 azure 函数引发以下错误。

“无法加载文件或程序集 'Microsoft.WindowsAzure.Storage, Version=8.1.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。系统找不到指定的文件。”

{
  "frameworks": {
    "net46": {
      "dependencies": {
        "WindowsAzure.Storage": "8.1.1"
      }
    }
  }
}

我已尝试重新启动应用服务,创建另一个 FunctionApp 以排除主机未加载更新程序集的任何问题,但我仍然无法使其工作。

Nuget restore 还显示此程序集正在恢复,但仍不断出现此错误。还有什么问题以及如何调试此问题?

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    原来是版本不匹配问题。目前,WindowsAzure.Storage 包的版本与AzureFunctions is 7.2.1 一起可用。我有一个依赖于8.1.1 的自定义程序集,这就是我尝试使用project.json 安装它的原因。

    显然无法做到。我切换到7.2.1,然后它工作得很好。如果您正在编写预编译函数,这总是会出现问题,因为依赖项应该与 Azure Functions 开箱即用的可用内容相匹配。我希望微软在未来的修订版中改进这种体验。

    【讨论】:

      【解决方案2】:

      WindowsAzure.Storage 会被环境自动为您引用,因此您不应手动执行此操作。

      清理您的 project.json 并使用函数脚本中的程序集:

      #r "Microsoft.WindowsAzure.Storage"
      

      通过显式引用 NuGet 包,您可能会遇到版本冲突。

      请参阅“引用外部程序集”部分 here

      【讨论】:

      • 谢谢米哈伊尔。即使我从 project.json 中删除了它,我仍然遇到同样的错误。我的 project.json 现在如下: { "frameworks": { "net46": { "dependencies": { } } } }
      【解决方案3】:

      您可以在 Azure Function 中使用 WindowsAzure.Storage 8.1.1,您需要将其放入自定义程序集所在的 Azure Functionbin/ 目录中(共享组件策略)。在考虑 nuget 依赖项/包之前,首先探测和加载位于 bin/ 中的任何程序集。

      只需使用 Azure Function PortalAppService EditorKuduFTP 移动 Microsoft.WindowsAzure.Storage.dll进入/bin

      根据我的经验,Azure Functions Runtime 依赖项将优先于任何 project.json 目标。一旦 Azure Function Runtime 将目标程序集加载到 AppDomain 中,自动将 nuget restore 转换为 /data/Functions/packages/nuget 将不允许您使用它们。

      【讨论】:

        猜你喜欢
        • 2018-09-10
        • 2014-05-19
        • 2016-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 2021-06-26
        • 2021-02-24
        相关资源
        最近更新 更多