【问题标题】:Microsoft.WindowsAzure.Storage and System.Net.Http conflictMicrosoft.WindowsAzure.Storage 和 System.Net.Http 冲突
【发布时间】:2019-04-24 06:38:30
【问题描述】:

我刚刚更新了我的应用程序(由许多项目组成)中的所有包。其中之一是 System.Net.Http。现在我收到一个错误:

具有标识“Storage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的“Storage”使用“System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”高于标识为“System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用程序集“System.Net.Http”的版本

我希望我可以添加一个重定向,所以在我的 Storage 项目中,我放了这个:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

app.config 中,但我仍然收到错误消息。 我想我的问题是:我可以对引用的库使用绑定重定向还是必须回滚我的 Update-Package 并将版本限制放在 System.Net.Http ??

【问题讨论】:

  • 为什么不重定向到4.2,即&lt;bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /&gt;
  • 我试过了,没用。
  • 您需要参考System.Net.Http的v4.2库,并将newVersion设置为4.2。

标签: c# .net azure-storage


【解决方案1】:

好的,经过几个小时的游戏,在互联网上环顾四周并在此处发布解决方案,我终于让它工作了。 以下是我执行的步骤。

  1. 在此文件夹中将 System.Net.Http.dll 重命名为 System.Net.Http.dl_:C:\Program Files (x86)\Microsoft Visual Studio\ 2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib
  2. 对于每个引用 System.Net.Http 的项目,确保它们使用的是 NuGet 包而不是扩展包中的包
  3. 构建您的项目并查看每个项目的每个 参考,检查 System.Net.Http dll 的版本(右键单击 > 属性)李>
  4. 卸载项目并搜索 System.Net.Http 并确保它们与步骤 3 中的版本相同(您可以尝试将它们全部设置为版本 4.2.0.0,但我遇到了问题用这个)

完成此操作后,尝试重新构建您的项目,它应该会构建并运行。 我希望这对其他人有帮助。

【讨论】:

    【解决方案2】:

    Steps 用于独奏Assembly 使用版本X,其版本高于引用的assemblu 错误:

    打开 packages.config 并删除 System.Net.Http 条目。
    保存并构建,然后从 nuget 读取 assemble。
    构建并运行。

    在 Visual Studio 中编译面向 .NET Framework 4.5.1 及更高版本的应用时,绑定重定向可能会自动添加到应用配置文件中以覆盖程序集统一。

    在 Visual Studio 中,选择 Solution Explorer 中的项目,然后从快捷菜单中选择 Open Folder in File Explorer。在文件资源管理器中,找到项目(.csproj 或 .vbproj)文件并在记事本中打开。

    将以下元素添加到第一个配置属性组(在标记下):

    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    

    更多详情可以参考这个article

    【讨论】:

    • 我是否必须将自动生成标志添加到解决方案中的所有项目?还是只是初创公司?
    • 你可以找出冲突项目并添加它。
    • 我已经尝试了所有这些,但它似乎不起作用。在我的 2 个项目中,编辑 .csproj 文件并将版本设置为 4.2.0.0 会破坏我项目中的代码(声明找不到类型或命名空间名称“Http”
    • 我确实让它编译了,但是当它启动时,我实际上在 API 本身上遇到了一个错误,指出它找不到我没有在任何地方引用的 System.Net.Http 4.0.0.0我在我的任何项目中都找不到它
    • 我做了,在所有需要它的项目中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多