【问题标题】:Build conflicts in ASP.Net with Visual Studio 2017使用 Visual Studio 2017 在 ASP.Net 中构建冲突
【发布时间】:2018-07-09 23:45:08
【问题描述】:

现在完成的每个Visual Studio 2017 Version 15.4.1 构建中都会出现一条新消息。

warning MSB3277: Found conflicts between different versions of the same 
  dependent assembly that could not be resolved.  These reference conflicts are 
  listed in the build log when log verbosity is set to detailed.
  ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Stack Overflow 告诉我如何获取下面列出的更详细的日志消息。我发现了三个我不知道如何解决的冲突。所有构建对象都是自动添加的,这使得这些对程序员来说相当神秘的问题。

JSON 冲突

There was a conflict between "Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, 

PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=10.0.0.0, 
  Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".
  "Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, 
  PublicKeyToken=30ad4fe6b2a6aeed" was chosen because it was primary and 
  "Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, 
  PublicKeyToken=30ad4fe6b2a6aeed" was not.
References which depend on "Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, 
  PublicKeyToken=30ad4fe6b2a6aeed" 
  [C:\Users\George\OneDrive\SignupList\SignupList\bin\Newtonsoft.Json.dll].

NuGet 包管理器说我只有 Newtonsoft.JSON 10.0.3。如何摆脱版本 8? bin 中只有一个 Newtonsoft.Json.dll。我最近升级到 JSON 10,我很惊讶 Visual Studio 没有照顾它被称为升级。

mscorlib 冲突

“mscorlib, Version=4.0.0.0, Culture=neutral,

   PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, 
   Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes".
   "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    was chosen because it was primary and "mscorlib, Version=2.0.5.0, 
    Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes" was not.
References which depend on "mscorlib, Version=4.0.0.0, Culture=neutral, 
    PublicKeyToken=b77a5c561934e089" [C:\Program Files (x86)\Reference 
    Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll].
C:\Program Files (x86)\Reference 
    Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll

不知道 mscorlib.dll 是什么。我有 v3.5、v4.0、v4.5、v4.5.1、v4.5.2、v4.6、v4.6.1 和 v4.X 的 NETFramework 文件夹。我在哪里可以控制哪个用于 mscorlib.dll,我将如何选择?多年来,mscorlib.dll 一直是该项目中反复出现的问题。

System.dll 似乎类似于 mscorlib.dll 冲突问题。

There was a conflict between "System, Version=4.0.0.0, Culture=neutral, 

   PublicKeyToken=b77a5c561934e089" and "System, Version=2.0.5.0, 
   Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes".
  "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was `enter code here`
    chosen because it was primary and "System, Version=2.0.5.0, Culture=neutral, 
    PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes" was not.
References which depend on "System, Version=4.0.0.0, Culture=neutral, 
    PublicKeyToken=b77a5c561934e089" [C:\Program Files (x86)\Reference 
    Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll].

感谢您的帮助。

【问题讨论】:

    标签: asp.net .net dll build


    【解决方案1】:

    尝试重新安装您的 nuget 包。 我们曾经在使用 TFS 时遇到过这样的场景,并且 noobs 一直在检查 packages 文件夹。

    在 nuget 包管理器控制台中执行以下命令:

    update-package -reinstall
    

    另一个可能发生此类错误的常见时间是您更改项目的目标平台时。


    如果重新安装不起作用,则会针对 Newtonsoft.Json v8 编译您的其他(非 NuGet 或不正确的 NuGet)引用之一

    NuGet 包作者应该声明所有依赖项,包括对 Newtonsoft.Json 的引用...当他们这样做时,NuGet 将不允许您安装更高版本的包,除非它与所有现有的软件包。重新安装通常有效,它会强制根据当前框架重新评估依赖项。不幸的是,很容易在 NuGet 清单中弄错依赖定义,或者完全忽略它们。

    尝试在 web.config 中使用程序集绑定映射:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
            <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    【讨论】:

    • 试过了,但没有帮助。我原以为它会解决 JSON 版本问题。
    • 这次为您提供了一个新的解决方案 :) 让我们一次只关注一个参考,很可能是所有这些参考的相同解决方案。是否有任何参考是您自己的外部项目?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多