Я также столкнулся с этой проблемой, пытаясь запустить проект 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 .