更新后出现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"或其依赖项之一。系统找不到指定的文件。

如何删除重复项?

更新后出现System.Reflection多个程序集错误

通过更改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/.vbprojapp.configpackages.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。