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

时间:2018-03-31 19:33:38

标签: c# azure azure-functions

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

在本地运行代码不会导致任何问题。运行得很好,但在发布时我收到以下错误:

  

无法加载文件或程序集'Microsoft.WindowsAzure.Storage,   Version = 9.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或   其中一个依赖项。系统找不到该文件   指定。|| System.IO.FileNotFoundException:无法加载文件或   程序集'Microsoft.WindowsAzure.Storage,Version = 9.1.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。该系统找不到指定的文件。文件名:   'Microsoft.WindowsAzure.Storage,Version = 9.1.0.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35'at   Esperanto.Core.Function.JobGetterLogic.SendJobsToQue()at   JobGetter.TimedJob.Run(TimerInfo myTimer,TraceWriter log)

这是我的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());
        }

    }
}

2 个答案:

答案 0 :(得分:2)

假设您使用的是Azure Functions运行时(当前生产版本)的v1,它使用版本WindowsAzure.Storage的{​​{1}}程序集。由于它是控制加载哪个版本的运行时,因此您的实现必须遵守并使用相同的版本。

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

目前没有像Azure Functions支持的绑定重定向。

答案 1 :(得分:1)

Mine是因为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)。

然后回滚。

因此,函数SDK中的Newtonsoft.Json是版本9.0.1,但在天蓝色存储上它是10.0.2。

如果这样发布,肯定会出现这个错误:

  

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

因为根本没有被引用。

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