【问题标题】:Multiple assemblies with equivalent identity. .NETFramework Facades具有相同标识的多个程序集。 .NETFramework 外观
【发布时间】:2016-11-24 14:36:53
【问题描述】:

在同一代码分支上,我们在一台机器上成功构建,但在另一台机器上却得到了:

错误 已导入具有相同标识的多个程序集:'...\src\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll' 和 'C:\Program文件 (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\Facades\System.Xml.ReaderWriter.dll'。删除重复引用之一。

我们该如何解决?

【问题讨论】:

  • 所有 nuget 包?不,我没有。我希望有一个更快的解决方案。我有几个项目都有这个问题。
  • 我可以通过删除对上述包的引用以及产生相同错误的 System.Runtime 和 System.Runtime.InteropServices 来构建解决方案。
  • 我可以通过从配置文件中删除依赖程序集来运行它。

标签: c# .net


【解决方案1】:

我最终通过将 Visual Studio 更新到最新解决了这个问题

【讨论】:

    【解决方案2】:

    使用 MSBuild 15 解决了这个问题。 MSBuild 15 是.NET Core SDK 的一部分,或者可以使用Build Tools for Visual Studio 2017 下载。

    【讨论】:

      【解决方案3】:

      我怀疑您的项目中有一个直接引用(通过 GAC 或文件系统通过浏览...)的 dll 和一个 Nuget 包。

      最好尝试卸载 Nuget 包,然后检查您的引用并取消选中对 System.Xml.ReaderWriter.dll 的任何剩余引用,然后再次安装您的 Nuget 引用。

      更新

      供参考,a similar error was encountered with System.Threading when an EntityFramework package was renamed。也许您的某个包有更新的版本或重命名的命名空间?或者您的 .NET Standard 版本不兼容?

      【讨论】:

      • 卸载时出现此错误无法卸载“System.Xml.ReaderWriter.4.3.0”,因为“NETStandard.Library.1.6.1”依赖于它。
      【解决方案4】:

      通过从计算机和 Visual Studio 15 卸载 Xamarin 解决了“错误多个程序集”问题。

      遵循以下说明: https://developer.xamarin.com/guides/cross-platform/getting_started/visual_studio_with_xamarin/troubleshooting/uninstall-xamarinvs/

      我的问题是在将 asp.net nuget 包从 1.0.0 版本更新到 1.1.0 时出现的。

      【讨论】:

      • 谢谢,但我没有安装任何 Xamarin。
      【解决方案5】:

      https://github.com/dotnet/corefx/issues/14050

      这说明在 nuget 包的 v4.3.0 中,它需要使用 VS 2015 构建工具 Update 3 或更高版本。

      如果无法升级,请将包降级到 v4.0.11。

      【讨论】:

      • Teamcity 在 1 个版本中中断。就是这样。
      【解决方案6】:

      对 .csproj 进行了以下更改,这成功了:

      <PackageReference Include="System.Reflection.Emit">
         <Version>4.3.0</Version>
         <ExcludeAssets>All</ExcludeAssets>
         <IncludeAssets>none</IncludeAssets>
      </PackageReference>
      

      【讨论】:

        【解决方案7】:

        如果有人来寻找另一个答案。由于 NetStandard 和 .NET Framework 的匹配命名空间之间的包重新安装不明确,可能会发生(2018 年 6 月 6 日)。

        问题根植于更新 NetStandard 3rd 方包,它需要/安装了 System.Net.NetworkInformation 的依赖项(我相信是 v4.3.0。)老实说,在该包之前工作得很好,所以我手动从 CSPROJ 和 package.config 中删除了依赖项添加了主要解决方案。

        它不干净,但显示了 NuGet 或 MSBuild 问题,无法识别它们实际上是不同的程序集,因此算作重复引用。

        【讨论】:

          【解决方案8】:

          删除“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\Facades\System.Xml.ReaderWriter.dll”中的 dll。 并构建您的代码。

          构建成功后添加回来。

          【讨论】:

            【解决方案9】:

            我能够通过将 NuGet 包 Microsoft.Net.Compilers 更新到较新版本来解决此问题。它是 1.0.0,我认为它没有使用较新版本的 MSBuild(正如其他一些答案中所指出的那样)。

            【讨论】:

              猜你喜欢
              • 2011-09-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多