我不确定发生了什么,但我的本地主机上的网站(IIS,Visual Studio 2017 v 15.2 rel 26430.16,Framework 4.7.02046)在启动任何网页时都开始抛出此编译错误:
错误CS1703:具有等效标识的多个程序集 导入:... System.Runtime.dll
callstack开始:
System.Web.HttpParseException(0x80004005):( 0):错误CS1703: 已导入具有等效标识的多个程序集: 'C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Runtime \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Runtime.dll' 和'C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET 文件\根\ 8eef972c \ 49b00562 \组件\ DL3 \ 4fee60ec \ 2db40549_62dbd001 \ System.Runtime.dll”。 删除其中一个重复的引用。 ---> System.Web.HttpCompileException(0x80004005):( 0):错误CS1703: 已导入具有等效标识的多个程序集: 'C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Runtime \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Runtime.dll' 和'C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET 文件\根\ 8eef972c \ 49b00562 \组件\ DL3 \ 4fee60ec \ 2db40549_62dbd001 \ System.Runtime.dll”。 删除其中一个重复的引用。在 System.Web.Compilation.AssemblyBuilder.Compile()
查看两个位置的System.Runtime.dll文件显示
Web.config有这个绑定重定向:
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
</dependentAssembly>
评论该部分解决了这个问题。
这一定是我的开发环境的特别之处。其他开发人员没有问题(也没有构建服务器或生产)。
可以解释发生了什么吗?是否有不同的推荐解决方案?
我认为我确实启用了一些Framework 4.7选项,但我不确定。这不是AspNet Core - 它是针对Framework 4.6.1的MVC5,使用NuGet Microsoft Compiler软件包来支持C#7。