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

man*_*oor 78 asp.net-mvc asp.net-mvc-5.1

在ASP.NET MVC 4.5.2 Framework中.

打字后

@Html.LabelFor()
or 
@Html.EditorFor()
Run Code Online (Sandbox Code Playgroud)

在视野中

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

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

小智 46

我不确定你是否还有这个问题,但我也有同样的问题.

我能在这里找到解决方案

/sf/ask/454735641/

<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"/>
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助..

  • 美好的!有用。请注意,您应该关闭并重新打开 cshtml 文件才能生效。 (2认同)

小智 38

我和你一样遇到了同样的问题,尽管很晚.问题是我无法访问Razor视图(.cshtml),因为我收到一条错误,指出我有一个缺少的程序集引用,即System.Web.Mvc即使它在项目引用中.经过调查,我注意到安装的NuGet版本是5.2.3,而项目需要5.2.0.解决方案是降级MVC版本.

  1. 转到Project-> NuGet包管理器.
  2. 搜索MVC; 这将是第一个结果.
  3. 接下来是从NuGet包的详细信息中选择降级并提交.

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

  • 您是如何注意到您的项目需要5.2.0的? (13认同)
  • 我正在使用.net 4.7,但仍然有这个恼人的错误 (6认同)
  • 我试过每个版本都没有修复它.net 4.6.2 (4认同)
  • @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.(还没有确定) (2认同)
  • 我遇到了同样的问题,原来是我在 web.config 中的调试值设置为 false。将其设置为“True” &lt;compilation debug="true" targetFramework="4.5" /&gt; &lt;httpRuntime targetFramework="4.5" /&gt; (2认同)

Tom*_*ers 38

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

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

[根] /Web.config:

<system.web>
    <compilation targetFramework="4.6" />
Run Code Online (Sandbox Code Playgroud)

项目属性:

项目属性

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

[views folder] /web.config:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

MVC程序集参考属性:

MVC版本

  • 这对我有用.非常感谢. (2认同)

Cul*_*tes 19

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


ley*_*ari 15

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

<Reference Include="System.Core" />
Run Code Online (Sandbox Code Playgroud)

/sf/answers/2686038701/

  • 有用!好像视觉工作室认为System.Core已经添加,但实际上没有添加。所以你需要手动做 (2认同)

小智 6

我只是遇到了同样的问题,没有解决方案可以解决该问题。我必须将其添加到我的web.config内部System.Web

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
Run Code Online (Sandbox Code Playgroud)

更改某些config周围区域时,我已将其删除。


Ang*_*nev 6

我也遇到了同样的问题,缺少程序集,而且 VS2017 版本没有将其正确复制到 Bin 文件夹中。这些步骤对我有帮助:

  • 导航到 Web 项目的引用节点
  • 查找对 System.Core 的引用
  • 打开 VS 属性窗口
  • 在属性窗口中,将 Copy Local: False 更改为 True

来自此评论: CS0012:类型“#####Any type#####”是在未引用的程序集中定义的


Rob*_*ned 5

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

  • 这个有效,VS 2019 &amp; MVC5。我也清理了 bin/obj 和 .vs 文件夹。 (2认同)