具有相同标识“ XXX”的装配体已经导入。尝试删除重复的引用之一

时间:2018-11-08 15:48:12

标签: c# asp.net .net asp.net-mvc iis

我有一个MVC Web应用程序,可以使用msbuild命令行发布到我们的UAT服务器。它托管在Windows 2016服务器IIS 10上。

有时候,并非总是,当我尝试启动网站时出现以下错误:

  

“ /”应用程序中的服务器错误。   编译错误   说明:编译服务于此请求所需的资源期间发生错误。请查看以下特定的错误详细信息,并适当地修改您的源代码。

     

编译器错误消息:CS1703:具有相同标识'System.Xml.ReaderWriter,版本= 4.1.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'的程序集已经导入。尝试删除重复的引用之一。

     

源错误:   [没有相关的源代码行]   源文件:行:0   显示详细的编译器输出:   C:\ WINDOWS \ SysWOW64 \ inetsrv>   “ C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ csc.exe” / t:库/ utf8output / R:   “ C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Text.Encoding.Extensions \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Text.Encoding.Extensions.dll” / R:

     

...

     

“ C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 4a1a5bcc \ 84ed54d3 \ assembly \ dl3 \ ab6a43c3 \ 00602620_2137d201 \ System.Xml.ReaderWriter.dll” / R:

     

...

     

“ C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Xml.ReaderWriter \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Xml.ReaderWriter.dll” / R:

     

...

     

“ C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 4a1a5bcc \ 84ed54d3 \ App_Web_home.cshtml.65a2d1ee.ef3qnjdl.1.cs”   Microsoft(R)Visual C#编译器版本4.6.1586.0

     

对于C#5   版权所有(C)Microsoft Corporation。保留所有权利。

     

此编译器作为Microsoft(R).NET Framework的一部分提供,但仅支持C#5以下的语言版本,该语言版本不再是最新版本。对于支持较新版本的C#编程语言的编译器,请参见http://go.microsoft.com/fwlink/?LinkID=533240

     

c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \临时ASP.NET文件\ root \ 4a1a5bcc \ 84ed54d3 \ assembly \ dl3 \ ab6a43c3 \ 00602620_2137d201 \ System.Xml.ReaderWriter.DLL:错误CS1703:An具有相同标识'System.Xml.ReaderWriter,版本= 4.1.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'的程序集已经导入。尝试删除重复的引用之一。   c:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Xml.ReaderWriter \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Xml.ReaderWriter.dll:(与先前错误相关的符号位置)

     

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.7.3163.0

我试图查找参考,但是在web.config中只能看到一次。

此外,运行iisreset或重新启动Web服务器后,错误通常会消失。 我担心如果释放它,实时服务器上也会发生这种情况。

希望能为我指出正确的方向进行修复。

更新:

我已经检查了整个项目中的所有参考。我只能找到。

Web.config:

<compilation defaultLanguage="c#" debug="true" batch="false" targetFramework="4.5" numRecompilesBeforeAppRestart="50">
        <assemblies>
            <remove assembly="System.Xml.ReaderWriter" />
            <add assembly="System.Xml.ReaderWriter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

Packages.config:

<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net461" />

更新2:

我已经按照PéterCsajtai的建议从web.config中删除了“添加程序集”。 从那时起,它运行良好(可能没有在任何地方使用)。

我尝试删除其他程序集,但是使用了这些程序集,因此我需要多个redirects。另一方面,它正在工作,所以我不太愿意“修复它”。我添加了重定向以查看它是否可以正常运行,但是没有错误,很难判断它是否在做正确的事情。

还发现this可能对其他人将来的故障排除很有用。

1 个答案:

答案 0 :(得分:1)

作为输出状态,您的项目从两个不同的地方引用System.Xml.ReaderWriter.dll

  

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \临时ASP.NET文件\ root \ 4a1a5bcc \ 84ed54d3 \ assembly \ dl3 \ ab6a43c3 \ 00602620_2137d201 \

并且来自GAC:

  

C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Xml.ReaderWriter \ v4.0_4.0.0.0__b03f5f7f11d50a3a \

您应该检查所有对该dll的引用,并统一不同的引用路径。