我对代码库进行了次要更新后,尝试运行ASP .NET MVC项目时也遇到了这个问题,即使它编译时没有错误:
编译器错误消息: CS0012:类型'System.Object'是在未引用的程序集中定义的。您必须添加对程序集“ System.Runtime,版本= 4.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”的引用。
我们的项目从未遇到过此问题,因此我对更改配置文件表示怀疑,然后才找出根本原因。从错误日志中,我能够找到详细的编译器输出,指出了实际发生的情况:
警告CS1685:在全局别名中的多个程序集中定义了预定义类型'System.Runtime.CompilerServices.ExtensionAttribute';使用'c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ mscorlib.dll中的定义
c:\ Users \ Admin \ Software Development \ source-control \ Binaries \ Publish \ WebApp \ Views \ Account \ Index.cshtml(35,20):错误CS0012:类型'System.Object'在程序集中定义未引用。您必须添加对程序集“ System.Runtime,版本= 4.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”的引用。
c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \临时ASP.NET文件\ meseems.webapp \ 68e2ea0f \ 8c5ee951 \ assembly \ dl3 \ 52ad4dac \ 84698469_3bb3d401 \ System.Collections.Immutable.DLL:(与符号相关的位置到先前的错误)
显然,添加到我们项目中的新程序包引用了旧版本的.NET Framework,从而导致“多个程序集中的定义”问题(CS1685),从而导致运行时剃刀视图编译器错误。
我删除了不兼容的程序包(System.Collections.Immutable.dll),并停止发生此问题。但是,如果无法在您的项目中删除该软件包,则需要尝试Baahubali的答案。