类型 'Expression<>' 在未引用的程序集中定义

The type 'Expression<>' is defined in an assembly that is not referenced

在 ASP.NET MVC 4.5.2 Framework 中,在视图中键入 @Html.LabelFor()@Html.EditorFor() 后,出现此错误:

The type 'Expression<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

我添加了程序集参考 System.Core.dll,版本 4.0.0.0,运行时版本 v4.0.30319,我也在 web.config.

中添加了

我不确定您是否仍然遇到这个问题,但我也遇到了同样的问题。

我能够在这里找到解决方案

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

希望对您有所帮助..

检查 cshtml 文件构建操作是否设置为 'Content'。

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

  • 关闭 cshtml 文件
  • 重建解决方案
  • 打开 cshtml 文件
  • 还有错误?重启Visual studio
  • 还有错误?使用ctm1988的回答

这发生在我的一个观点上——其他观点都很好。我做了以下事情:

  • 创建新视图
  • 将旧视图中的内容复制并粘贴到新视图
  • 删除旧的
  • 已将新的重命名为旧的

我 运行 遇到了与您相同的问题,尽管时间要晚得多。问题是我无法访问 Razor 视图 (.cshtml),因为我收到一条错误消息,指出我缺少程序集引用,即 System.Web.Mvc,即使它在项目引用中也是如此。经过调查,我注意到安装的NuGet版本是5.2.3,而项目需要5.2.0。解决方法是降级MVC版本。

  1. 转到项目-> NuGet 包管理器。
  2. 搜索 MVC;这将是第一个结果。
  3. 接下来是从drop-down降级到select的详情 NuGet 打包并提交。

确认所有对话框,您就可以开始了。

重新启动 Visual studio 对我有用。

我刚遇到完全相同的问题,none 的解决方案解决了问题。我必须在 System.Web

中将其添加到我的 web.config
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

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

在我的例子中,解决方案是将 ConnectionString 移动到 Web.Config 中。此语句应在 AppSettings 部分之后。

此错误意味着 Visual Studio 无法找到 System.Web.Mvc 程序集来为其 Razor 视图的智能感知提供支持。可能需要以下一项或两项来修复它。

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

[root]/Web.config:

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

项目属性:

  1. 确保视图中指定的 MVC 程序集的版本 web.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 程序集引用属性:

对我来说,项目菜单下有一个选项 "Enable C# 6.0/VB 14"。选择这个选项就成功了。以前我尝试修改 web.config、重新启动 Visual Studio 等,如 post.

中所建议的

就我而言,此消息仅在 Resharper 开启时显示。我已经清除了 Resharper 缓存,重新启动 VS,关闭 Resharper 并再次打开它。消息已消失。

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

我已经尝试了其中的大部分,最终对我有用的是卸载项目,编辑 csproj 文件,并添加以下内容:

<Reference Include="System.Core" />

  • 关闭文件
  • 清洁解决方案
  • 构建解决方案
  • 重新打开文件

尝试添加

using system.Linq.Expressions;

如果你只在一个或两个 CSHTML 文件中得到这个...它是一个损坏的文件。

我曾经遇到过这样的情况,一个损坏的文件包含一些隐藏的 unicode 字符。 尝试将文档的所有文本复制到新的记事本实例。 清除原始文件的内容并保存...如果文件长度 > 0,则有问题。

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

我的解决方案中发生过几次这种情况。不确定是什么原因造成的,但我怀疑是 Resharper 在开始将大量内存吞入深渊时搞砸了。

我是唯一一个对 Resharper 又爱又恨的人吗?

如果您的解决方案中有多个项目并非都以相同版本的 .NET Framework 为目标,则可能会导致这种情况。例如,如果您的 Web 应用程序项目以 .NET 4.5 为目标,并且您有一个程序集引用到解决方案中另一个以 .NET 4.5.2 为目标的项目。要解决此问题,您需要将您的项目更改为全部以相同版本的 .NET Framework 为目标。

如果 none 个答案有效,请使用这个。我遇到了同样的问题!实际上,迁移文件夹中的 configuration.cs 个文件是 missing/deleted。我确实删除了迁移文件夹,也确实从数据库中删除了迁移 table。接下来在程序包管理器控制台 (PM) 中使用以下命令:

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

此过程重新创建了 configuration.cs 文件并且一切正常!

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

我遇到了同样的问题,缺少程序集,碰巧 VS2017 构建没有将它正确复制到 Bin 文件夹中。这些步骤帮助了我:

  • Navigate to the web project's References node
  • Find the reference to System.Core
  • Open the VS Properties Window
  • In the properties window, change Copy Local: False to True

来自这条评论: CS0012: The type '#####Any type#####' is defined in an assembly that is not referenced

我遇到了同样的问题。基本上问题是使用不同版本的 System.Web.Mvc。所以最好打开 Tools > Nuget Package Manager > Manage Nuget Packages for Solution。您可能会在 Cosolidate 选项卡上看到 System.Web.Mvc。升级或降级将是最好的选择。如果您使用最新的 .Net 框架,目前是 .Net 4.6.1,您应该将所有 System.Web.Mvc 版本升级到 5.2.4.0。祝你好运!

在 Web.config 我需要更改:

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

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

将以下内容添加到 Web.config(在根目录中)。我绝对尝试了所有早期建议,但在找到以下内容之前没有任何效果。希望它能为其他人节省时间。

我用的是targetFramework="4.6.1",如果不同就改成你用的版本

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

从项目目录中删除 [projectName].csproj.user 文件对我很有帮助。

手动添加System.Core.dll文件到bin文件夹。重新启动 VS 并构建项目。 帮我解决了

@Html 助手和我的 Kendo 网格上的所有视图都存在设计错误。

在 Web.config 中添加 System.Core 程序集没有任何作用,也没有降级 MVC 版本。尝试手动添加对 System.Core 的引用时出错:

A reference to 'System.Core' could not be added. This component is already automatically referenced by the build system.

确保检查项目属性中的 TargetFramework 是否与项目 web.config 中的相匹配。

Screenshot of bin folder

好吧,我通过更正 /Views/web.config 中的程序集引用来修复它,见图:

删除 bin、.vs 和 obj 目录。在 visual studio.

上构建项目后

我做了以上所有事情,最后发现为我解决了问题(在带有 MVC 5.2.4 的 .net framework 4.7.1 站点上)是将其添加到根 web.config 中<compilation> -

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