【问题标题】:System.Reflection multiple assemblies error after update更新后 System.Reflection 多个程序集错误
【发布时间】:2015-11-24 14:10:20
【问题描述】:

在将我的解决方案引用到上一个预发布版本的 .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.Reflection v.4.1.0.0。

无法加载文件或程序集“System.Reflection,Version=4.1.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。

如何删除重复项?

【问题讨论】:

  • 如果 4.1.0 仍在使用,您是否检查过您的 .csproj 文件?您可以使用记事本或记事本++打开.csproj文件,然后查看旧版本是否仍在那里命名。
  • 是的,我也卸载了尝试卸载所有 .NET Framework 包,没有任何帮助。

标签: c# .net reflection reference nuget


【解决方案1】:

通过在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 中存在有关引用的信息。

【讨论】:

    【解决方案2】:

    您也可以从 Nuget 获取 system.reflection 4.1.0.0,而不是恢复到 4.0.0.0。

    4.1.0.0 版本在它自己的 Nuget 包中,这就是它容易混淆的原因。

    我实际上更喜欢这种方式,因为如果您运行 nuget restore,任何依赖 System.Reflection 4.1.0.0 的 nuget 包都会恢复您对 app.config 所做的任何更改。

    意思是,如果您更改对 4.0.0.0 的引用,它将在 nuget 还原时恢复为 4.1.0.0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      相关资源
      最近更新 更多