Microsoft.WindowsAzure.Storage (WindowsAzure.Storage) 9.1.1 在其依赖之外调用 Newtonsoft 失败

Posted

技术标签:

【中文标题】Microsoft.WindowsAzure.Storage (WindowsAzure.Storage) 9.1.1 在其依赖之外调用 Newtonsoft 失败【英文标题】:Microsoft.WindowsAzure.Storage (WindowsAzure.Storage) 9.1.1 failing on call to Newtonsoft outside of its dependency 【发布时间】:2018-09-23 12:34:32 【问题描述】: 我使用的是 WindowsAzure.Storage 9.1.1。 它声明它依赖于 Newtonsoft >= 10.0.2 我使用的是 .NET Framework 4.5 我安装了 Newtonsoft 11.0.2 当我执行以下代码时,table.ExecuteBatch 出现异常

InnerException "无法加载文件或程序集 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。系统无法找到指定的文件。":"Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" System.Exception System.IO.FileNotFoundException

    public void TableStorageDemo()
    
        storageAccount = CloudStorageAccount.Parse("connection");

        tableClient = storageAccount.CreateCloudTableClient();

        table = tableClient.GetTableReference("TABLE_NAME");

        TableBatchOperation batchOperation = new TableBatchOperation();

        var entity = new Entity();
        entity.Test = "Hello World";

        batchOperation.InsertOrReplace(entity);

        if (batchOperation.Count() > 0) table.ExecuteBatch(batchOperation);
    

当它依赖于 Newtonsoft >= 10.0.2 时,它为什么要寻找 10.0.0.0

我尝试过使用各种版本的 WindowsAzure.Storage,它仅在使用依赖于 Newtonsoft >= 6.0.8 的版本 8.7.0 时才有效

我从 Azure 函数运行它。 (我已按照https://github.com/Azure/azure-functions-vs-build-sdk 的建议允许 Azure Functions 与 Newtonsoft > 9.0.1 版本一起运行)请注意,抱怨 Newtonsoft 依赖关系的不是函数 - 它是 WindowsAzure.Storage。该函数在 Newtonsoft 11.0.2 和 WindowsAzure.Storage 8.7.0 上正常运行

【问题讨论】:

【参考方案1】:

我也可以在我身边复制它。如果我在Azure function App 中使用 WindowsAzure.Storage 9.1.1、Newtonsoft 11.0.2 和 Microsoft.NET.Sdk.Functions 1.0.13。

似乎是 Function App SDK 依赖相关问题。如果 WindowsAzure.Storage 8.7.0 或 7.2.1 可行,您可以使用它作为解决方法。

似乎与 WindowsAzure.Storage 9.1.1 本身无关的问题。 由于 WindowsAzure.Storage 9.1.1 和 Newtonsoft 11.0.2 在 console application 中正常工作。

您可以在 github 中提出an issue。

【讨论】:

感谢您的诊断。在 Github 中提出的问题。 github.com/Azure/azure-functions-vs-build-sdk/issues/194 通过上面的 github 问题链接,似乎问题降级 WindowsAzure.Storage 是唯一的选择。让我知道您是否尝试了除降级之外的其他任何方法。 @fanetic

以上是关于Microsoft.WindowsAzure.Storage (WindowsAzure.Storage) 9.1.1 在其依赖之外调用 Newtonsoft 失败的主要内容,如果未能解决你的问题,请参考以下文章