类型 '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版本。
- 转到项目-> NuGet 包管理器。
- 搜索 MVC;这将是第一个结果。
- 接下来是从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 视图的智能感知提供支持。可能需要以下一项或两项来修复它。
- 确保编译的.NET框架版本
属性 在 main web.config (网站根目录中的那个)是
与项目属性中指定的相同。
[root]/Web.config:
<system.web>
<compilation targetFramework="4.6" />
项目属性:
- 确保视图中指定的 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>
在 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版本。
- 转到项目-> NuGet 包管理器。
- 搜索 MVC;这将是第一个结果。
- 接下来是从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 视图的智能感知提供支持。可能需要以下一项或两项来修复它。
- 确保编译的.NET框架版本 属性 在 main web.config (网站根目录中的那个)是 与项目属性中指定的相同。
[root]/Web.config:
<system.web>
<compilation targetFramework="4.6" />
项目属性:
- 确保视图中指定的 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>