types“Expression <>”是在未引用的程序集中定义的

在ASP.NET MVC 4.5.2框架。

打字后

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

在视图中

我得到错误: types'Expression <>'是在未引用的程序集中定义的。您必须添加对程序集“System.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的引用。

我已经添加了程序集引用System.Core.dll,版本4.0.0.0,运行时版本v4.0.30319。 也是我在web.config

尽pipe很久以后,我仍然遇到同样的问题。 问题是我无法访问剃刀视图(.cshtml),因为我得到一个错误,指出我有一个缺less的程序集引用,即System.Web.Mvc ,即使它在项目引用。 经过调查,我发现安装的NuGet版本是5.2.3,而项目需要5.2.0。 解决scheme是降级MVC版本。

  1. 转到项目 – > NuGet包pipe理器。
  2. searchMVC; 这将是第一个结果。
  3. 接下来是从NuGet包的细节下拉列表中select降级并提交。

确认所有的对话框,你准备好了。

我不知道你是否还有这个问题,但我也有同样的问题。

我能在这里find解决scheme

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无法findSystem.Web.Mvc程序集来为其剃刀视图的智能感知提供支持。 一个或两个以下可能需要修复它。

  1. 确保主web.config(网站根目录)中的编译属性的.NET框架版本与项目属性中指定的版本相同。

[根] /Web.config:

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

项目属性:

项目属性

  1. 确保视图web.config中指定的MVC程序集版本(视图文件夹中的版本)与您在项目中使用的MVC程序集相同。

[views文件夹] /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版本

  • closurescshtml文件
  • 重build解决scheme
  • 打开cshtml文件
  • 仍然错误? 重新启动Visual Studio
  • 仍然错误? 使用ctm1988的答案

我已经尝试了大部分这些,最终为我工作的是卸载项目,编辑csproj文件,并添加以下内容:

 <Reference Include="System.Core" /> 

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

在我的情况下,只有当Resharper打开时才显示此消息。 我已清除Resharpercaching,重新启动VS,closuresResharper并再次打开它。 消息已经消失。

检查cshtml文件构build操作是否设置为“内容”。

我使用ReSharper,并注意到由于某种原因,生成的文件在调用模板时默认为“无”。

我刚刚有同样的问题,没有解决scheme解决问题。 我不得不在System.Web添加到我的web.config

 compilation debug="true" targetFramework="4.5" httpRuntime targetFramework="4.5" 

我在更改一些config时删除了它。

对我来说,在项目菜单下有一个选项“启用C#6.0 / VB 14”。 select这个选项的窍门。 以前我尝试修改web.config,重新启动Visual Studio等,如在这篇文章中build议的。

这发生在我的一个观点上,其他人都很好。 我做了以下几点:

  • 创build一个新的视图
  • 将旧视图中的内容复制并粘贴到新视图中
  • 删除旧的
  • 将新的更名为旧的

重新启动Visual Studio为我工作。

在我的情况下,解决scheme是移动Web.Config内的ConnectionString。 这个声明应该在AppSettings部分之后。

  • closures文件
  • 清理解决scheme
  • build立解决scheme
  • 重新打开文件

尝试添加

using system.Linq.Expressions;

我也有这个问题。 在web.config文件中将targetFramework="4.5.2"更改为targetFramwork="4.5"解决了这个问题。

如果你只有一个或两个CSHTML文件…这是一个损坏的文件。

我遇到了一个有一些隐藏的unicode字符的损坏文件。 尝试将文档的所有文本复制到一个新的记事本实例。 清除原始文件的内容并保存…如果文件长度大于0,则出现错误。

删除文件,并保存您的记事本实例在旧版本。 所有的错误都为我消失了。

在我的解决scheme中,我已经发生过几次了。 不知道是什么原因造成的,但是我怀疑Resharper开始吞噬巨大的记忆深渊的时候, 它正在崩溃

我是唯一一个和Resharper有爱/恨关系的人吗?

如果您的解决scheme中有多个项目都不是针对相同版本的.NET Framework,则可能会导致这种情况。 例如,如果您的Web应用程序项目以.NET 4.5为目标,并且您在目标.NET 4.5.2的解决scheme中有另一个项目的程序集引用。 要解决这个问题,你需要改变你的项目到所有目标相同版本的.NET Framework。

如果没有答案工作使用这一个。 我面临同样的问题! 其实migrations文件夹中的configuration.cs文件丢失/删除。 我没有删除迁移文件夹,也没有从数据库中删除迁移表。 接下来在软件包pipe理器控制台(PM)中使用以下命令:

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

这个过程重新创build了configuration.cs文件,一切都很完美!

检查您的项目属性以获取目标框架。 我在我的项目中解决了这个问题,通过匹配我的目标框架.NET框架4.6.1 MVC 5.2.3是适当的解决scheme。 我从NuGet获得了MVC版本。