Visual studio 2013 生成期间mscorlib版本冲突

Visual studio 2013 生成期间mscorlib版本冲突,visual-studio-2013,Visual Studio 2013,在新的Win8.1重新安装中,当我从备份中恢复所有代码时,我在构建解决方案的主项目时突然收到Visual Studio警告: 发现同一从属程序集的不同版本之间存在无法解决的冲突。当“日志详细性”设置为“详细”时,这些引用冲突将列在生成日志中 我将输出日志级别设置为Detailed,并发现了如下几个条目: “mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”与“mscorlib,版本=2.0.5.0,区域性=中性,PublicKe

在新的Win8.1重新安装中,当我从备份中恢复所有代码时,我在构建解决方案的主项目时突然收到Visual Studio警告:

发现同一从属程序集的不同版本之间存在无法解决的冲突。当“日志详细性”设置为“详细”时,这些引用冲突将列在生成日志中

我将输出日志级别设置为Detailed,并发现了如下几个条目:

“mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”与“mscorlib,版本=2.0.5.0,区域性=中性,PublicKeyToken=7cec85d7bea7798e,可重定目标=是”之间存在冲突。之所以选择“mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”,是因为它的版本更高

问题是,我没有在解决方案的任何地方引用
mscorlib
。我的机器上有几个需要.NET3.5的应用程序,但我看不出它们之间有什么关系


一个区别是:没有出现此警告的旧Win8.1安装是一台独立计算机;这次我加入了域名。我不知道这是否会产生影响(我不知道如何),但我想我至少应该提到这一点。

我可以通过在package Manager控制台发出一个
更新包-重新安装
命令来解决这个问题

但是


请小心,更新解决方案中的所有软件包可能会导致其他问题,如果出现问题,请确保可以回滚到良好的版本

我可以通过删除我的解决方案的“.suo”文件,然后重新打开解决方案来解决此问题。然后我重新构建解决方案,问题就消失了

“.suo”文件位于“.vs”文件夹中,我通常会删除该文件夹


祝你好运

在不同的项目上使用不同版本的Nuget包也可能导致此问题。确保所有软件包的版本相同:

  • (在Visual Studio中)右键单击解决方案
  • 单击管理解决方案的Nuget软件包
  • 单击合并选项卡
  • 对于“合并”选项卡中的每个包,将每个项目的包更新为相同版本

  • 按照Memet Olsen的建议使用VS2017社区…几乎完全相同:

    • 在解决方案资源管理器中右键单击解决方案
    • 选择“管理解决方案的Nuget包”
    • 检查包裹。如果其中任何一个具有蓝色向上箭头而不是绿色勾号,请使用“更新”按钮

    我尝试了以下所有方法,但都没有解决问题

  • 命令“更新软件包-重新安装”
  • 通过“合并”选项卡进行更新和打包
  • 正在删除“.suo”文件
  • 然而,我的问题是另一种情况,我想新版本的Xamarin.Forms包使用了不同版本的mscorlib。所以我把它降级了,它运行得很好


    我建议您尝试上述所有解决方案,并尝试找出哪个包存在冲突。

    我也尝试了所有建议的解决方案,但均无效

    在我的项目中,此警告消息是由dll引用依赖于与我的项目目标不同的.net framework引起的

    为了找出哪个dll引用导致了警告,我只是使用.net reflector来研究每个dll引用,以找出哪个引用了不同的.net framework(mscorlib)

    为了解决此问题,必须将引用dll更新为一个版本,该版本的目标与使用它的项目的.net framework相同(如果存在这样的版本)


    希望这能有所帮助。

    我根据将详细信息设置为诊断解决了这个问题

    一旦我这样做并重建了我的解决方案,构建日志实际上列出了依赖于两个不同版本的mscorlib的特定包


    在我的特定案例中,我的项目引用了System.Net.Http的2.0.20126.16343版本。我打开了NuGet软件包管理器,并将该软件包更新为最新版本(当时为4.3.4)。下次我构建解决方案时,警告就消失了。

    我的解决方案比上面所有的都简单一点。我只是添加了一个对引发此错误的两个程序集(System.Runtime.Serialization和mscorlib)的引用,并重建了项目。通过这样做,我指定了4.0.0.0版本并消除了歧义

    无法通过GUI添加其中一个(mscorlib),因为“无法添加对“mscorlib”的引用。生成系统已自动引用此组件。”错误

    我需要打开.vbproj(.csproj)文件并通过以下方式手动添加引用:

    <Reference Include="mscorlib" />
    
    
    
    老兄,这一直困扰着我。谢谢你的提示!请小心,更新解决方案中的所有软件包可能会导致其他问题,如果出现问题,请确保可以回滚到良好的版本@user1069816:是的,同意。希望这行得通,我在阅读所有评论之前就这么做了lol@Worthy7:我不知道我是否明白你的意思。“…如何修复”-你是说运行命令会破坏某些东西,还是说命令没有改变任何东西,而你仍然会收到警告?这听起来像是一个很好的技巧,当然比完整的软件包重新安装成本更低,风险更低。我会在下次弹出的时候尝试(这肯定迟早会发生)。这是唯一对我有效的方法,当我更新我遇到问题的一个特定包(System.Net.Http)时,mscorlib、System.Core和System仍然在详细的输出模式中显示冲突。当我删除了.suo并再次打开时,消息就消失了。这是正确的方法。对我们来说效果很好-清楚地显示了哪些软件包有多个版本,并提供了解决特定问题的单击方法-比完全重新安装更明智。@memetolsen: