Я також зіткнувся з цією проблемою, намагаючись запустити проект 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: \ Користувачі \ Адміністратор \ Розробка програмного забезпечення \ Контроль джерел \ Бінарні файли \ Публікація \ WebApp \ Перегляди \ Рахунок \ Рахунок \ 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), і проблема перестала виникати. Однак якщо пакет не вдасться вилучити у вашому проекті, вам доведеться спробувати відповідь Баахубалі .