Подтвердить что ты не робот

Тип "Выражение <>" определяется в сборке, на которую не ссылаются

В ASP.NET MVC 4.5.2 Framework.

после ввода

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

в поле зрения

Я получаю сообщение об ошибке: Тип 'Expression < > ' определен в сборке, на которую не ссылаются. Вы должны добавить ссылку на сборку 'System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 '.

Я добавил ссылку на сборку System.Core.dll, версия 4.0.0.0, версия Runtime версии 4.0.30319. а также я сделал в web.config

4b9b3361

Ответ 1

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

  • Перейдите в Project- > NuGet Package Manager.
  • Поиск MVC; это будет первый результат.
  • Далее следует выбрать понижение уровня раскрывающегося списка в деталях Пакет NuGet и отправьте.

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

Ответ 2

Я не уверен, что у вас все еще есть эта проблема или нет, но у меня была такая же проблема.

Мне удалось найти решения здесь

fooobar.com/questions/125227/...

<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"/>

Я надеюсь, что это поможет.

Ответ 3

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

  • Убедитесь, что версия .NET Framework для компиляции свойство в главном 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

Ответ 4

  • Закройте файл cshtml
  • Реконструкция
  • Открыть файл cshtml
  • Еще ошибки? Перезапустить Visual Studio
  • Еще ошибки? Используйте ответ ctm1988

Ответ 5

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

<Reference Include="System.Core" />

fooobar.com/questions/125229/...

Ответ 6

У меня просто была та же самая проблема, и ни одно из решений не решило проблему. Я должен был добавить это в свой web.config в System.Web

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

Я убрал его, когда менял часть config.

Ответ 7

В моем случае это сообщение было показано только при включении Resharper. Я очистил кэш Resharper, перезапустил VS, выключил Resharper и включил его снова. Сообщение исчезло.

Ответ 8

Мне помогло удаление файла [projectName].csproj.user из каталога проекта.

Ответ 9

Убедитесь, что для файла сборки сборки cshtml установлено значение "Содержимое".

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

Ответ 10

У меня была та же проблема с отсутствующей сборкой, и оказалось, что сборка VS2017 не скопировала ее правильно в папку Bin. Эти шаги помогли мне:

  • Перейдите к веб-проекту. Ссылки node
  • Найдите ссылку на System.Core
  • Откройте окно свойств VS.
  • В окне свойств измените Копировать локальное: False на True

из этого комментария: CS0012: Тип ##### Любой тип ##### 'определен в сборке, на которую не ссылаются

Ответ 11

В Web.config мне нужно было изменить:

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

до

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

Ответ 12

Добавьте файл System.Core.dll в папку bin вручную. Перезапустите VS и соберите проект

Добавление сборки System.Core в Web.config ничего не сделало для меня и не понизило версию MVC. И получил эту ошибку при попытке добавить ссылку на System.Core вручную:

Ссылка на System.Core не может быть добавлена. Этот компонент на него уже автоматически ссылается система сборки.

Убедитесь, что TargetFramework в свойствах проекта совпадает с таковым в проекте web.config.

Почти все мои файлы .cshtml для крупного корпоративного проекта приводили к ошибке в помощниках @Html и в моих сетках Kendo.

Скриншот папки bin

Ответ 13

Для меня в меню проекта была опция "Включить С# 6.0/VB 14". Выбор этой опции сделал трюк. Раньше я пытался модифицировать web.config, перезагружать Visual Studio и т.д., Как было предложено в этом сообщении.

Ответ 14

Я столкнулся с той же проблемой. В основном проблема заключается в использовании другой версии 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. Удачи!

Ответ 15

Добавьте следующее в Web.config (в корне). Я попробовал абсолютно все из предыдущих предложений, и ничего не получалось, пока я не нашел ниже. Надеюсь, это сэкономит время для кого-то еще.

Я использую targetFramework = "4.6.1", но измените его на версию, которую вы используете, если отличается.

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

Ответ 16

Это случилось с одним из моих взглядов - все остальные были в порядке. Я сделал следующее:

  • Создать новый вид
  • Скопируйте и вставьте содержимое из старого представления в новое.
  • Удален старый
  • Переименован новый в старый

Ответ 17

Перезагрузка Visual Studio работала для меня.

Ответ 18

В моем случае решением было переместить ConnectionString внутри Web.Config. Это утверждение должно быть после раздела AppSettings.

Ответ 19

У меня тоже была эта проблема. Изменение targetFramework="4.5.2" на targetFramwork="4.5" в файле web.config это разрешено.

Ответ 20

  • Закройте файл
  • Очистите решение
  • Создайте решение
  • Повторно открыть файл

Ответ 21

Попробуйте добавить

using system.Linq.Expressions;

Ответ 22

Если вы получаете это только в одном или двух файлах CSHTML... это поврежденный файл.

У меня это произошло с поврежденным файлом, в котором есть скрытые символы юникода. Попробуйте скопировать весь текст документа на свежий экземпляр блокнота. Очистите содержимое исходного файла и сохраните... если длина файлa > 0, там что-то не так.

Удалите файл и сохраните экземпляр вашего блокнота поверх старой версии. Все ошибки ушли за меня.

У меня это случалось пару раз в моем решении. Не уверен, что это вызывает, но я подозреваю, что Resharper прикручивается, когда он начинает проглатывать огромные куски памяти в пропасть.

Я единственный, у кого отношения любви/ненависти с Resharper?

Ответ 23

Это может быть вызвано, если в вашем решении есть несколько проектов, которые не все нацелены на одну и ту же версию .NET Framework. Например, если ваш проект веб-приложения нацелен на .NET 4.5, и у вас есть ссылка на сборку для другого проекта в решении, предназначенном для .NET 4.5.2. Чтобы исправить это, вам нужно изменить свои проекты на все целевые версии той же версии .NET Framework.

Ответ 24

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

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

Этот процесс воссоздал файл configuration.cs, и все было отлично!

Ответ 25

Проверьте свойства проекта, чтобы получить целевую структуру. Я решил эту проблему в своем проекте, сопоставив для своей целевой среды .NET framework 4.6.1 MVC 5.2.3 было подходящим решением. Я получил версию MVC от NuGet.