我目前正在使用在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());
}
}
}
答案 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'或 其中一个依赖项。系统找不到指定的文件。“
因为根本没有被引用。
这可能不是您的确切问题,但可能会给您一些线索。