更新后出现System.Reflection多个程序集错误
本文关键字:程序集 错误 Reflection System 更新 | 更新日期: 2023-09-27 18:24:11
在更新了我的解决方案引用到上一个预发布版本的.NET Framework NuGet包之后。我有一个构建错误:
已导入多个具有等效标识的程序集:"C:''Projects''RP''packages''System.Reflection.4.1.0-beta-23516''lib''net46''System.Reflection.dll"和'C:''Program Files(x86)''Reference程序集''Microsoft''Framework.NETFramework''v4.6''Facades''System.Reflection.dll'。删除其中一个重复引用。
我不知道如何解决这个问题。如果我使用NuGet删除System.Reflection,它会引发引用错误异常,它需要System.Reflections v.4.1.0.0。
未能加载文件或程序集"System.Reflection,Version=4.1.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"或其依赖项之一。系统找不到指定的文件。
如何删除重复项?
通过更改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
中。
您也可以从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。