C# 无法加载文件或程序集';Microsoft.WindowsAzure.Storage';Azure函数

C# 无法加载文件或程序集';Microsoft.WindowsAzure.Storage';Azure函数,c#,azure,azure-functions,C#,Azure,Azure Functions,我目前正在使用VisualStudio中创建的Azure函数。它是一个计时器函数,调用一些公共代码来写入队列 在本地运行代码不会导致任何问题。运行正常,但发布时出现以下错误: 无法加载文件或程序集“Microsoft.WindowsAzure.Storage”, 版本=9.1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项。系统找不到该文件 指定。| | System.IO.FileNotFoundException:无法加载文件或 程序

我目前正在使用VisualStudio中创建的Azure函数。它是一个计时器函数,调用一些公共代码来写入队列

在本地运行代码不会导致任何问题。运行正常,但发布时出现以下错误:

无法加载文件或程序集“Microsoft.WindowsAzure.Storage”, 版本=9.1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项。系统找不到该文件 指定。| | System.IO.FileNotFoundException:无法加载文件或 程序集“Microsoft.WindowsAzure.Storage,版本=9.1.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'或其 依赖关系。系统找不到指定的文件。文件名: 'Microsoft.WindowsAzure.Storage,版本=9.1.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35'在 Esperanto.Core.Function.JobGetterLogic.SendJobsToQue()位于 JobGetter.TimedJob.Run(TimerInfo myTimer、TraceWriter日志)

以下是我的webjob代码:

public static class TimedJob
{
    [FunctionName("TimedJob")]
    public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, TraceWriter log)
    {
        log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
        try
        {
            var brain = new CoreLogic.Function.JobGetterLogic();
            var result = brain.SendJobsToQue();
        }
        catch (Exception e)
        {
            log.Info(e.Message + "||" + e.ToString());
        }

    }
}

我是因为Newtonsoft.Json版本,但我在安装WindowsAzure.Storage包发布之前就得到了这个版本

它在输出中给了我以下信息:

NU1107:检测到Newtonsoft.Json的版本冲突。参考 直接从项目中打包以解决此问题。
PMTool.AzureFunctions->WindowsAzure.Storage 9.1.0->Newtonsoft.Json (>=10.0.2)PMTool.AzureFunctions->Microsoft.NET.Sdk.Functions 1.0.6->Newtonsoft.Json(=9.0.1)

然后又滚回去

因此,Functions SDK中的Newtonsoft.Json是9.0.1版,但在azure存储中是10.0.2版

如果像这样发布,肯定会出现以下错误:

无法加载文件或程序集“Microsoft.WindowsAzure.Storage”, 版本=9.1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项。系统找不到指定的文件。“

因为它根本没有被引用


这可能不是你的问题,但可能会给你一个线索。

我的问题是因为Newtonsoft.Json版本,但我在安装WindowsAzure.Storage软件包时发布之前就知道了

它在输出中给了我以下信息:

NU1107:检测到Newtonsoft.Json的版本冲突。参考 直接从项目中打包以解决此问题。
PMTool.AzureFunctions->WindowsAzure.Storage 9.1.0->Newtonsoft.Json (>=10.0.2)PMTool.AzureFunctions->Microsoft.NET.Sdk.Functions 1.0.6->Newtonsoft.Json(=9.0.1)

然后又滚回去

因此,Functions SDK中的Newtonsoft.Json是9.0.1版,但在azure存储中是10.0.2版

如果像这样发布,肯定会出现以下错误:

无法加载文件或程序集“Microsoft.WindowsAzure.Storage”, 版本=9.1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项。系统找不到指定的文件。“

因为它根本没有被引用


这可能不是您的确切问题,但它可能会给您一个线索。

假设您在Azure Functions runtime(当前生产版本)的v1上,它使用的是
WindowsAzure.Storage
版本
7.2.1
的汇编。因为是运行时控制加载的版本,所以您的实现必须遵守并使用相同的版本

若要解决此问题,请将对
WindowsAzure.Storage
(包括可传递的)的所有引用更改为
7.2.1


Azure函数目前不支持绑定重定向。

假设您在Azure函数运行时(当前生产版本)的v1上,它使用
WindowsAzure。存储
版本的汇编
7.2.1
。因为是运行时控制加载的版本,所以您的实现必须遵守并使用相同的版本

若要解决此问题,请将对
WindowsAzure.Storage
(包括可传递的)的所有引用更改为
7.2.1


Azure函数目前不支持绑定重定向。

系统找不到指定的文件
,请检查dll并查看它是否存在于正确/所需的目录中directory@zackraiyan我尝试将Azure存储的nuget软件包添加到函数中,但它不会添加它。我还了解到azure存储只是azure功能系统的一部分。
系统找不到指定的文件
,请检查dll并查看它是否存在于正确/所需的位置directory@zackraiyan我尝试将Azure存储的nuget软件包添加到函数中,但它不会添加它。我还了解到azure存储只是azure功能系统的一部分。如何确定我正在使用的azure功能的版本。门户中有我可以看到的地方吗?@Dan Yes,选择你的应用程序,单击
功能应用程序设置
并选中
运行时版本
如何确定我正在使用的Azure功能的版本。门户中有我可以看到的地方吗?@Dan Yes,选择你的应用程序,单击
功能应用程序设置
,然后选中
运行时版本
。Mikkail是根本答案。在AzureStorage开始工作并且未能映射类之后,您关于JSON内容的部分在下一个问题上有所帮助。@Dan我们的答案很有帮助。这很有帮助。我对Azure.Cosmos软件包也有同样的问题。更新了Json包,问题消失了。有时必须检查Nuget上的包依赖关系。org@Mikkail这是根本的答案。在AzureStorage开始工作并且未能映射类之后,您关于JSON内容的部分在下一个问题上有所帮助。@Dan我们的答案很有帮助。这很有帮助。我对Azure.Cosmos软件包也有同样的问题。更新了Json包,问题消失了。有时必须在Nuget.org上检查包依赖关系