构建期间mscorlib版本冲突

Int*_*eXX 44 visual-studio-2013

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

发现无法解析的同一依赖程序集的不同版本之间的冲突.当日志详细程度设置为详细时,这些引用冲突将在构建日志中列出.

我将输出日志级别设置为Detailed,我发现了一些这样的条目:

"mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"和"mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes"之间存在冲突.之所以选择"mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"是因为它的版本更高.

麻烦的是,我没有mscorlib在解决方案的任何地方引用旧的或新的.我的机器上有几个需要.NET 3.5的应用程序,但我看不出它是如何相关的.

一个区别是:没有发生此警告的旧Win8.1安装是一台独立的机器; 这次我加入了域名.我不知道这是否有所作为(我看不清楚),但我认为至少应该提一下.

Mem*_*sen 28

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

  1. (在Visual Studio中)右键单击解决方案
  2. 单击Manage Nuget packages for Solution
  3. 单击" 合并"选项卡
  4. 对于"合并"选项卡中的每个包,请将包更新为每个项目的相同版本.

  • @memetolsen:如果在"合并"标签中没有要更新的软件包怎么办?还有其他推荐吗? (13认同)

Int*_*eXX 21

我能够通过update-package -reinstall在Package Manager控制台发出命令来解决这个问题.

但

请注意,更新解决方案中的所有软件包可能会导致其他问题,请确保在出现问题时可以回滚到好的版本!

  • 请注意,更新解决方案中的所有软件包可能会导致其他问题,请确保在出现问题时可以回滚到好的版本! (10认同)
  • @ user1069816:是的,同意了. (2认同)

小智 10

我已经能够通过删除我的解决方案的".suo"文件来解决此问题,然后重新打开解决方案.然后我重建解决方案,问题就消失了.

".suo"文件位于".vs"文件夹中,这是我通常删除的内容.

祝好运!


Ste*_*han 6

我根据此答案将详细程度设置为Diagnostic来解决了这一问题。

完成该操作并重新构建解决方案后,构建日志实际上会列出依赖于两个不同版本的mscorlib的特定程序包。

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


Gar*_*Jax 6

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

由于“无法添加对 'mscorlib' 的引用。此组件已被构建系统自动引用”,因此无法通过 GUI 添加两者之一(mscorlib)。错误。

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

<Reference Include="mscorlib" />
Run Code Online (Sandbox Code Playgroud)

  • 也为我工作! (3认同)