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

In ASP.NET MVC 4.5.2 Framework.

после ввода

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

in view

Я получаю ошибку: тип "Expression" определяется в сборке, на которую нет ссылки.Необходимо добавить ссылку на систему assembly.Ядро, версия=4.0.0.0, культура=нейтральная, PublicKeyToken=b77a5c561934e089'.

Я добавил справочную систему сборки.Ядро.dll, версия 4.0.0.0, версия выполнения v4.0.30319. а также я в сеть.config

17 ответов


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

  1. перейти к проекту - > пакет NuGet Менеджер.
  2. Поиск MVC; это будет первый результат.
  3. далее, чтобы выбрать понижение из раскрывающегося списка в деталях NuGet-пакет и отправить.

подтвердите все диалоги и вы готовы пойти.


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

я смог найти решения здесь

https://stackoverflow.com/questions/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"/>

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


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

  1. убедитесь, что версия .NET framework для компиляции свойство в основной сети.config (один в корне веб-сайта) является то же, что указано в проекте свойства.

[root] / Web.config:

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

Свойства Проекта:

Project Properties

  1. обеспечить версию сборки MVC, указанную в представлениях сеть.config (тот, который находится в папке views) совпадает с 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 version


  • закройте файл cshtml
  • перестроить решение
  • открыть файл cshtml
  • еще ошибки? Перезапустите Visual studio
  • еще ошибки? Используйте ответ ctm1988

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

<Reference Include="System.Core" />

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


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


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

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

Я удалил его при изменении некоторых config вокруг.


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

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


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

  • перейдите к узлу ссылок веб-проекта
  • найти ссылку на System.Ядро
  • откройте окно VS Properties
  • в окне Свойства измените Copy Local: False на True

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


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


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

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

to

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

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

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

перезапуск Visual studio работал для меня.


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


  • закрыть файл
  • очистить решение
  • построить решение
  • открыть файл

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

using system.Linq.Expressions;


у меня тоже эта проблема. Меняется targetFramework="4.5.2" до targetFramwork="4.5" в web.конфигурационный файл решил это.