更新

时间:2015-11-24 14:10:21

标签: c# .net reflection reference nuget

更新我的解决方案引用上一个预发布版本的.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'或其中一个依赖项。系统找不到指定的文件。

如何删除副本?

2 个答案:

答案 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 / .vbprojapp.configpackages.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。