更新我的解决方案引用上一个预发布版本的.NET Framework NuGet包。我有一个建筑错误:
导入了具有等效标识的多个程序集: ' C:\项目\ RP \包\ System.Reflection.4.1.0-β-23516 \ lib中\ net46 \ System.Reflection.dll' 和' C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.6 \外立面\ System.Reflection.dll&#39 ;. 删除其中一个重复的引用。
我无法弄清楚如何解决这个问题。如果我使用NuGet删除System.Reflection它会抛出引用错误异常,它需要System.Reflection v.4.1.0.0。
无法加载文件或程序集' System.Reflection,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项。系统找不到指定的文件。
如何删除副本?
答案 0 :(得分:5)
通过在app.config
中更改此行来解决问题:
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
到
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
在Visual Studio项目中管理.NET Framework包很麻烦。
有关参考的信息存在于.csproj
/ .vbproj
,app.config
,packages.config
。
答案 1 :(得分:2)
您也可以从Nuget获取system.reflection 4.1.0.0,而不是恢复到4.0.0.0。
版本4.1.0.0在它自己的Nuget包中,这就是为什么它会让人感到困惑。
我实际上更喜欢这种方式,因为如果您运行nuget还原,任何依赖于System.Reflection 4.1.0.0的nuget包都将还原您对app.config所做的任何更改。
意思是,如果您将引用更改为4.0.0.0,它将在nuget恢复时恢复为4.1.0.0。