在新的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安装是一台独立的机器;这次我加入了域名。我不知道这是否有所作为(我无法看到),但我认为至少应该提到它。
答案 0 :(得分:27)
在不同项目上使用不同版本的Nuget包也可能导致此问题。确保所有包都具有相同的版本:
答案 1 :(得分:21)
我能够通过在软件包管理器控制台发出update-package -reinstall
命令来解决这个问题。
但是
请注意,更新解决方案中的所有软件包可能会导致其他问题,请确保在出现问题时可以回滚到好的版本!
答案 2 :(得分:10)
我已经能够通过删除我的解决方案的“.suo”文件来解决此问题,然后重新打开解决方案。然后我重建了解决方案,问题就消失了。
“.suo”文件位于“.vs”文件夹中,这是我通常删除的内容。
祝你好运!答案 3 :(得分:4)
我的解决方案比上述所有方法都简单一些。我只是添加了对引发此错误的两个程序集的引用(System.Runtime.Serialization和mscorlib),并重建了项目。通过这样做,我指定了4.0.0.0版本并消除了歧义。
由于“无法添加对'mscorlib'的引用。此组件已由构建系统自动引用”,因此无法通过GUI添加两个(mscorlib)中的一个。错误。
我需要打开.vbproj(.csproj)文件,并通过以下方式手动添加引用:
<Reference Include="mscorlib" />
答案 4 :(得分:3)
我通过按照this answer将详细程度设置为诊断来解决了这个问题。
一旦这样做并重建了解决方案,构建日志实际上就会列出依赖于两个不同版本的mscorlib的特定软件包。
在我的特定情况下,我的项目引用了System.Net.Http版本2.0.20126.16343。我打开了NuGet软件包管理器,并将此软件包更新为最新版本(当时为4.3.4)。下次构建解决方案时,警告消失了。
答案 5 :(得分:2)
我已经尝试了以下所有方法,但没有人解决了这个问题。
但是,我的问题是另一种情况,我猜新版本的Xamarin.Forms包使用了不同版本的mscorlib。所以我已经降级了它并且工作正常。
我建议您尝试以上所有解决方案,并尝试查找哪个包存在冲突。
答案 6 :(得分:1)
按照Memet Olsen的建议使用VS2017社区......几乎相同:
答案 7 :(得分:0)
我也尝试了所有建议的解决方案,但无济于事。
在我的项目中,此警告消息是由dll引用引起的,该dll引用与我的项目所针对的.net框架有所不同。
为了找出引起该警告的dll引用,我只是使用.net反射器来探索每个dll引用,以找出哪个引用了不同的.net框架(mscorlib)。
为了解决此问题,必须将参考dll更新为与使用该项目的项目使用相同.net框架的版本。
希望这会有所帮助。