无法加载文件或程序集“Microsoft.WindowsAzure.Storage”Azure 函数
Posted
技术标签:
【中文标题】无法加载文件或程序集“Microsoft.WindowsAzure.Storage”Azure 函数【英文标题】:Could not load file or assembly 'Microsoft.WindowsAzure.Storage' Azure Functions 【发布时间】:2018-09-10 12:15:11 【问题描述】:我目前正在使用在 Visual Studio 中创建的 Azure 函数。它是一个定时器函数,它调用一些通用代码来写入队列。
在本地运行代码不会导致任何问题。运行良好,但发布时出现以下错误:
无法加载文件或程序集“Microsoft.WindowsAzure.Storage, 版本=9.1.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或 它的依赖项之一。系统找不到文件 指定。||System.IO.FileNotFoundException: 无法加载文件或 程序集'Microsoft.WindowsAzure.Storage,版本=9.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其之一 依赖关系。该系统找不到指定的文件。文件名: 'Microsoft.WindowsAzure.Storage,版本=9.1.0.0,文化=中性, PublicKeyToken=31bf3856ad364e35' 在 世界语.Core.Function.JobGetterLogic.SendJobsToQue() 在 JobGetter.TimedJob.Run(TimerInfo myTimer, TraceWriter 日志)
这是我的网络作业代码:
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());
【问题讨论】:
The system cannot find the file specified
,检查 dll 并查看它是否存在于正确/所需的目录中
@zackraiyan 我试图将 Azure 存储的 nuget 包添加到函数中,但它不会添加它。我还读到 azure 存储只是 azure 功能系统的一部分。
【参考方案1】:
假设您使用的是 Azure Functions 运行时 v1(当前生产版本),它使用版本 7.2.1
的 WindowsAzure.Storage
程序集。由于是运行时控制加载哪些版本,因此您的实现必须遵守并使用相同的版本。
要解决此问题,请将所有对 WindowsAzure.Storage
的引用(包括传递的)更改为 7.2.1
。
目前 Azure Functions 不支持绑定重定向。
【讨论】:
如何确定我正在使用的 Azure Functions 版本。传送门中是否有我可以看到的地方? @Dan 是的,选择您的应用,点击Function app settings
并检查Runtime version
【参考方案2】:
我的是因为 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' 或 它的依赖项之一。系统找不到指定的文件。”
因为根本没有被引用。
这可能不是你的确切问题,但它可能会给你一个线索。
【讨论】:
@Mikkail 是根本答案。在 AzureStorage 开始工作并且无法映射类之后,您关于 JSON 内容的部分有助于解决下一个问题。 @Dan 太好了,我们的回答很有帮助。 这很有帮助。我对 Azure.Cosmos 包有同样的问题。更新了 Json 包,问题消失了。有时必须检查 Nuget.org 上的包依赖关系以上是关于无法加载文件或程序集“Microsoft.WindowsAzure.Storage”Azure 函数的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配
无法加载文件或程序集'netstandard,版本 = 2.0.0.0