在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,运行时版本v4.0.30319。我也在web.config中做过
我和你一样遇到了同样的问题,尽管很晚。问题是我无法访问Razor视图(.cshtml),因为我收到一条错误,指出我有一个缺少的程序集引用,即System.Web.Mvc
,即使它在项目引用中。经过调查,我注意到安装的NuGet版本是5.2.3,而项目需要5.2.0。解决方案是降级MVC版本。
确认所有对话框,您就可以开始了。
我遇到了丢失程序集的同样问题,而且VS2017版本没有将其正确复制到Bin文件夹中。这些步骤帮助我:
- 导航到Web项目的References节点
- 找到对System.Core的引用
- 打开VS属性窗口
- 在属性窗口中,将Copy Local:False更改为True
来自此评论:CS0012: The type '#####Any type#####' is defined in an assembly that is not referenced
在Web.config中,我需要更改:
<system.web>
<compilation debug="true" targetFramework="4.7">
至
<system.web>
<httpRuntime targetFramework="4.7" />
<compilation debug="true" targetFramework="4.7">
对我来说,项目菜单下有一个选项“Enable C#6.0 / VB 14”。选择此选项就可以了。以前我尝试修改web.config,重启Visual Studio等,如本文所述。
我遇到了同样的问题。基本上问题是使用不同版本的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
。祝好运!
将以下内容添加到Web.config(在root中)。我完全尝试了早期建议的所有内容,直到找到下面的内容才算无效。希望它能为别人节省时间。
我使用targetFramework =“4.6.1”,但如果不同,请将其更改为您使用的版本。
<system.web>
<compilation debug="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1" />
</system.web>
注意:在web.config中添加System.Core程序集对我没有任何作用,也没有降级MVC版本。尝试通过右键单击引用手动添加System.Core给出了异常:
无法添加对“System.Core”的引用。构建系统已自动引用此组件。
确保检查项目属性中的TargetFramework是否与项目web.config中的TargetFramework相匹配。
几乎所有针对大型企业项目的.cshtml文件都在@Html帮助程序和我的Kendo网格上抛出错误。我彻底检查了代码,没有错误。这是最终为我解决的问题:
清理sln,删除bin,obj,重建,重启VS等等之后,我拉起了系统目录文件夹中的bin文件夹。我手动将System.Core.dll文件添加到bin。重新启动并构建项目,它工作正常。
这发生在我的一个观点 - 所有其他人都很好。我做了以下事情:
重启Visual Studio为我工作。
尝试添加
using system.Linq.Expressions;
我不确定你是否还有这个问题,但我也有同样的问题。
我能在这里找到解决方案
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"/>
我希望这有帮助..
我也有这个问题。在web.config文件中将targetFramework="4.5.2"
更改为targetFramwork="4.5"
解决了这个问题。
如果只在一个或两个CSHTML文件中得到它...它是一个损坏的文件。
我发生过一个带有一些隐藏的unicode字符的损坏文件。尝试将文档的所有文本复制到新的记事本实例。清除原始文件的内容并保存...如果文件长度> 0,则表示出现问题。
删除文件并将记事本实例保存在旧版本上。所有的错误都消失了。
在我的解决方案中,我已经发生过几次这种情况。不确定是什么导致了它,但我怀疑当它开始吞噬巨大的记忆深入到深渊时它是Resharper搞砸了。
我是唯一与Resharper有爱/恨关系的人吗?
如果解决方案中有多个项目并非都针对相同版本的.NET Framework,则可能会导致这种情况。例如,如果您的Web应用程序项目以.NET 4.5为目标,并且您具有针对.NET 4.5.2的解决方案中另一个项目的程序集引用。要解决此问题,您需要将项目更改为所有目标相同版本的.NET Framework。
如果没有任何答案可以使用这个。我遇到了同样的问题!实际上,迁移文件夹中的configuration.cs文件已丢失/删除。我确实删除了迁移文件夹,并且还从数据库中删除了迁移表。接下来在Package Manager Console(PM)中使用以下命令:
Enable-Migrations -Force
Add-Migration Initial
update-database
这个过程重新创建了configuration.cs文件,一切都很完美!
检查项目属性以获取Target框架。我在我的项目中通过匹配我的目标框架.NET框架4.6.1解决了这个问题.MVC 5.2.3是最合适的解决方案。我从NuGet获得了MVC版本。
在我的例子中,解决方案是将ConnectionString移动到Web.Config中。此声明应在AppSettings部分之后。
此错误意味着Visual Studio无法找到System.Web.Mvc程序集以为其Razor视图的intellisense提供支持。可能需要以下一个或两个来修复它。
[根] /Web.config:
<system.web>
<compilation targetFramework="4.6" />
项目属性:
[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" />
MVC程序集参考属性:
我已经尝试过大部分这些,最终对我有用的是卸载项目,编辑csproj文件,并添加以下内容:
<Reference Include="System.Core" />
我只是有同样的问题,没有一个解决方案解决了这个问题。我不得不在web.config
中加入我的System.Web
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
当我改变一些config
时,我已经删除了它。
在我的情况下,只有在Resharper打开时才会显示此消息。我已经清除了Resharper缓存,重新启动了VS,关闭了Resharper并再次打开它。消息已经消失了。
从项目目录中删除[projectName] .csproj.user文件对我有帮助。
检查cshtml文件Build Action是否设置为'Content'。
我使用ReSharper并注意到由于某种原因,在调用模板时生成的文件默认为“None”。