Тип 'Вираз <>' визначений у збірці, на яку немає посилань


84

В ASP.NET MVC 4.5.2 Framework.

після набору тексту

@Html.LabelFor()
or 
@Html.EditorFor()

з огляду

Я отримую помилку: Тип 'Вираз <>' визначений у збірці, яка не є посиланням. Ви повинні додати посилання на збірку 'System.Core, Версія = 4.0.0.0, Культура = нейтральна, PublicKeyToken = b77a5c561934e089'.

Я додав посилання на збірку System.Core.dll, версія 4.0.0.0, версія середовища виконання v4.0.30319. а також я робив у web.config


Відповіді:


41

Я бачив те саме питання, що і ви, хоча і набагато пізніше. Проблема полягала в тому, що я не міг отримати доступ до подань Razor (.cshtml), оскільки я отримував повідомлення про помилку з повідомленням про відсутність посилань на збірку, а саме System.Web.Mvc, хоча це було в посиланнях на проект. Після розслідування я помітив, що встановлена ​​версія NuGet була 5.2.3, тоді як проект вимагав 5.2.0. Рішенням є зниження версії MVC.

  1. Перейдіть до Project-> NuGet Package Manager.
  2. Пошук MVC; це буде перший результат.
  3. Далі слід вибрати спадне меню зі спадного меню в деталях пакета NuGet і надіслати.

Підтвердьте всі діалогові вікна, і ви готові до роботи.


14
Як ви помітили, що ваш проект вимагає 5.2.0?
Ваніс

3
@Vanice Я думаю, це залежить від версії .NET Framework: .NET 4.5.2 -> MVC 4.0.0; .NET 4.6.0 -> MVC 5.2.0; .NET 4.6.1 -> MVC 5.2.3. (Не підтверджено)
JoaoRibeiro

9
Я використовую .net 4.7 і все ще маю цю прикру помилку
Свен

1
У мене була та сама проблема, виявляється, це було моє значення налагодження в web.config було встановлено як false. Встановіть значення "True" <compilation debug = "true" targetFramework = "4.5" /> <httpRuntime targetFramework = "4.5" />
mlaribi

Я спробував вищезазначене рішення добре працювати. Моя версія VS Solution була 4.6.2, і я знизив MVC до 5.2.3 з 5.2.4. Отже, я дізнався, що MVC 5.2.3 сумісний з .Net 4.6.2
Ібрагім Інам

58

Я не впевнений, чи все ще виникає у вас ця проблема чи ні, але у мене теж була така сама проблема.

Тут мені вдалося знайти рішення

/programming/6496223/compilation-error-in-net-4-0-web-config-linq-not-found

<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Я сподіваюся, це допоможе ..


я вже сказав, що .. я спробував це, перш ніж розміщувати це питання. будь-яким чином дякую обом
mansoor

1
чудово! Це працює. Зверніть увагу, що вам слід закрити та знову відкрити файл cshtml, щоб набути чинності.
Махді

Це спрацювало для мене, як тільки я пройшов усі web.configs і переконався, що версії збігаються, як у stackoverflow.com/a/37381294/8684119
AMG

Це працює, але я знайшов це рішення трохи брудним. У будь-якому випадку, у моєму випадку я додаю лише посилання на System.Core
T-moty

45

Ця помилка означає, що Visual Studio не може знайти збірку System.Web.Mvc для забезпечення її інтелісенсу для подань Razor. Для її виправлення може знадобитися одне або обидва з наведених нижче запитів.

  1. Переконайтесь, що версія середовища .NET для властивості компіляції в основному web.config (та, що знаходиться в корені веб-сайту) така ж, як і вказана у властивостях проекту.

[корінь] /Web.config:

<system.web>
    <compilation targetFramework="4.6" />

Властивості проекту:

Властивості проекту

  1. Переконайтеся, що версія збірки MVC, зазначена у поданнях web.config (та в папці виглядів), така ж, як і збірка MVC, яку ви використовуєте у своєму проекті.

[папка переглядів] /web.config:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Довідкові властивості збірки MVC:

Версія MVC


3
Це спрацювало для мене. Дуже дякую.
vibs2006,

1
Це вирішило це і для мене, але не безпосередньо. Мені довелося видалити файл з неправильною версією з моєї папки bin, оновити mvc через nuget, а потім він помістив правильну версію в мою папку bin, і це спрацювало. якщо ви все ще отримуєте неправильну версію в папці bin після оновлення через nuget, видаліть існуючу в папці bin
Joshua K

Дякую. Я оновив Microsoft.AspNet.Mvc через NuGet до v5.2.7 і почав бачити цю помилку у файлі .schtml, поки програма все ще працювала. Виявилося, що web.config у папці Views під <system.web.webPages.razor> все ще був v5.2.3. Допомогло змінити його до v5.2.7.
vkelman

Це спрацювало - дякую! Для мене ключовим було пам’ятання перевірити [Views] /web.config. Версія відповідає скрізь, крім інших!
Джей Докінз,

21
  • Закрийте файл cshtml
  • Відновити рішення
  • Відкрийте файл cshtml
  • Все-таки помилки? Перезапустіть Visual studio
  • Все-таки помилки? Використовуйте відповідь ctm1988

Я спробував все, про що тут було згадано ... але все одно це не працює .. при перевстановленні Visual Studio це працює ідеально .. я думав, що причиною є відсутність залежностей ..
mansoor

якщо у вас був проект, який працював і працював нормально, і раптом у вас з’явилася ця проблема, то це, мабуть, виправлення!
Simon_Weaver

Не можу повірити, як часто це працює
nmit026,

16

Я спробував більшість із них, що врешті-решт у мене спрацювало, це розвантаження проекту, редагування файлу csproj та додавання наступного:

<Reference Include="System.Core" />

https://stackoverflow.com/a/38371981/2335660


2
це працює! схоже, що візуальне вивчення вважає, що System.Core вже додано, але насправді немає. Тож вам потрібно зробити це вручну
isxaker


7

У мене просто була така сама точна проблема, і жодне з рішень не вирішило проблему. Я повинен був додати це в моєму web.configвSystem.Web

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

Я видалив його, коли міняв дещо configнавколо.


будь-ласка, додайте тег з будь-якою технологією або більше. Тегів не знайдено
Vikrant Kashyap

Додавання атрибута compilation / targetFramework мені спрацювало.
Том Бауерс

Я випадково додав два різні значення для цільової структури, це вирішило мою проблему.
Geethanga 02

Це вирішило проблему для мене, гібридного додатка asp.net/webforms: я оновив цільову структуру моєї програми до 4.7, не помітив цих двох параметрів web.config, які все ще вказують на 4.5.
Tom Regan

те саме питання вирішено цією відповіддю 4.8
Мамду

4

У моєму випадку це повідомлення відображалося лише тоді, коли було ввімкнено Resharper. Я очистив кеш Resharper, перезапустив VS, вимкнув Resharper і ввімкнув його знову. Повідомлення зникло.


1
У моєму випадку просто закрийте та перезапустіть VS. У мене є resharper, але мені нічого з цим робити не потрібно.
JayJay

3

У мене була та ж проблема з відсутнім складанням, і трапилось, що збірка VS2017 не скопіювала її належним чином у папку Bin. Ці кроки мені допомогли:

  • Перейдіть до вузла посилань веб-проекту
  • Знайдіть посилання на System.Core
  • Відкрийте вікно властивостей VS
  • У вікні властивостей змініть Копіювати локально: Помилковий на Істинний

з цього коментаря: CS0012: Тип '##### Будь-який тип #####' визначений у збірці, на яку немає посилань


Хоча це посилання може відповісти на питання, краще включити сюди основні частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
Стів Гомес,

1
@SteveG. Дякую, Стіве! Я його відредагував. Раніше багато не коментував і не маю такого етикету ... :-)
Angel_D

1
Це вирішило мою проблему, я повинен зазначити, що також потрібно було перезапустити Visual Studio, дякую.
Саїд Мусаві,

3

У Web.config мені потрібно було змінити:

  <system.web>
    <compilation debug="true" targetFramework="4.7">

до

  <system.web>
    <httpRuntime targetFramework="4.7" />
    <compilation debug="true" targetFramework="4.7">

1
Дякую, @juFo! Це виправлено для мене у Visual Studio 2019 з MVC 5. Цільова структура мого проекту MVC становила 4.7.2, тоді як web.config все ще мав 4.7.1 для тегів targetFrameworkin <httpRuntime>і <compilation>. Просто оновлення атрибута для коректного відображення версії .NET Framework проекту виправило це для мене.
iCode

2

Переконайтесь, що для файлу cshtml Action Build встановлено значення "Вміст".

Я використовую ReSharper і помітив, що з якихось причин файл, який генерується, за замовчуванням має значення "None" при виклику шаблону.


2

Додайте наступне до Web.config (у кореневій формі). Я спробував абсолютно все попередні пропозиції, і нічого не працювало, поки не знайшов нижче. Сподіваюся, це заощадить час для когось іншого.

Я використовую targetFramework = "4.6.1", але змінюю його на версію, яку ви використовуєте, якщо інша.

<system.web>
   <compilation debug="true" targetFramework="4.6.1" />
   <httpRuntime targetFramework="4.6.1" />
</system.web>

2

Додайте файл System.Core.dll до папки bin вручну. Перезапустіть VS і побудуйте проект . Вирішено для мене

Були помилки в дизайні у всіх переглядах помічників @Html та моїх сіток Kendo.

Додавання збірки System.Core у Web.config нічого не зробило, а також не знизило версію MVC. І помилка при спробі додати посилання на System.Core вручну:

Не вдалося додати посилання на "System.Core". Система компонування вже посилається на цей компонент автоматично.

Переконайтесь, що TargetFramework у властивостях проекту відповідає тому, що в проекті web.config.

Знімок екрана папки bin


1

Для мене в меню проекту була опція "Увімкнути C # 6.0 / VB 14". Вибір цього варіанту зробив трюк. Раніше я намагався змінити web.config, перезапустити Visual Studio тощо, як було запропоновано в цій публікації.


1

Я зіткнувся з тією ж проблемою. В основному проблема полягає у використанні іншої версії System.Web.Mvc. Тож найкраще, що вам слід відкрити Tools > Nuget Package Manager > Manage Nuget Packages for Solution. Ви, мабуть, можете побачити System.Web.Mvcна Cosolidateвкладці. Найкращим варіантом буде оновлення або пониження. Якщо ви використовуєте останню платформу .Net, яка зараз є .Net 4.6.1, вам слід оновити всі System.Web.Mvcверсії до 5.2.4.0. Удачі!


У мене було 12 пакетів, які потрібно було оновити, і sln запустився без проблем, як тільки я все оновив. Дякую.
Джеймі

1

Ну, я це виправив, виправивши посилання на збірку в /Views/web.config , див. Зображення:

введіть тут опис зображення


1

видалити каталог bin, .vs та obj. після побудови проекту на візуальній студії.


Я багато переключаюся між версіями мого проекту, деякі з яких націлені на різні рамки. Це подбало про мою посилання на помилку "System.Core". Дякуємо за просте нагадування про те, що іноді потрібно очистити середовище VS між касами.
Suncat2000

0

Це сталося з одним із моїх поглядів - з усіма іншими було добре. Я зробив наступне:

  • Створіть новий вигляд
  • Скопіюйте та вставте вміст зі старого подання в нове
  • Видалив стару
  • Перейменовано нову на стару

0

Перезапуск Visual studio працював у мене.


Це сталося зі мною після деяких, здавалося б, невинних оновлень NuGet. Це були просто такі бібліотеки, як jQuery та bootstrap. Після оновлень я отримав це повідомлення про помилку і перезапуск Visual Studio виправив його.
Стів Хайнер,

0
  • Закрийте файл
  • Очистіть розчин
  • Побудуйте рішення
  • Відкрийте файл знову

0

Спробуйте додати

using system.Linq.Expressions;


4
Незважаючи на те, що цей фрагмент коду може вирішити питання, включення пояснення дійсно допомагає поліпшити якість вашої публікації. Пам’ятайте, що ви будете відповідати на запитання для читачів у майбутньому, і ці люди можуть не знати причин вашої пропозиції коду.
Farkie

0

У мене теж була ця проблема. Перехід targetFramework="4.5.2"до targetFramwork="4.5" файлу web.config вирішив.


0

Якщо ви отримуєте це лише в одному або двох файлах CSHTML ... це пошкоджений файл.

У мене це траплялося з пошкодженим файлом, який має деякі приховані символи Unicode. Спробуйте скопіювати весь текст документа у свіжий екземпляр блокнота. Очистіть вміст оригінального файлу та збережіть ... якщо довжина файлу> 0, щось не вдається.

Видаліть файл і збережіть примірник блокнота у старій версії. Для мене всі помилки зникли.

У мене таке траплялося кілька разів у моєму рішенні. Не впевнений, що це спричиняє, але я підозрюю, що це Resharper псується, коли він починає ковтати величезні шматки пам'яті у прірву.

Я єдиний, хто має стосунки любові / ненависті з Решарпером?


0

Це може бути спричинено, якщо у вашому рішенні є кілька проектів, які не всі націлені на одну версію .NET Framework. Наприклад, якщо проект веб-програми націлений на .NET 4.5, а у вас є посилання на збірку до іншого проекту в рішенні, націленому на .NET 4.5.2. Щоб виправити це, потрібно змінити свої проекти на всі, націлені на одну і ту ж версію .NET Framework.


0

Якщо жодна з відповідей не працює, використовуйте цю. Я зіткнувся з тим же питанням! Фактично файл configuration.cs у папці міграцій відсутній / видалений. Я видалив папку міграцій, а також видалив таблицю міграцій з бази даних. Далі в Package Manager Console (PM) використовуються такі команди:

Enable-Migrations -Force
Add-Migration Initial
update-database

Цей процес відтворив файл configuration.cs, і все працювало чудово!


0

Перевірте властивості проекту, щоб отримати структуру Target. Я вирішив цю проблему у своєму проекті, встановивши відповідність для моєї цільової платформи .NET framework 4.6.1 MVC 5.2.3 був влучним рішенням. Я отримав цю версію MVC від NuGet.


0

У моєму випадку рішенням було переміщення ConnectionString всередину Web.Config. Це твердження має бути після розділу AppSettings.


0

Я зробив ВСЕ вищезазначене і врешті-решт виявив, що те, що вирішує це для мене (на сайті .net framework 4.7.1 з MVC 5.2.4), додає це до кореневого web.config в межах <compilation>-

<assemblies>
  <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.