C# MVC 2与VS 2010视图构建错误:功能';匿名类型';无法使用,因为它不是ISO-2 C语言规范的一部分
我有一个共享项目,其中存储了所有自定义EditTemplates和DisplayTemplates。这是一个常规的C#类库项目,所有视图都标记为嵌入式资源。本项目的目标框架是“.Net framework 4” 在/Views/文件夹中,我包含了这个web.config文件,因此在处理.aspx和.ascx文件时,我可以获得MVC 2 intellisense:C# MVC 2与VS 2010视图构建错误:功能';匿名类型';无法使用,因为它不是ISO-2 C语言规范的一部分,c#,visual-studio,visual-studio-2010,asp.net-mvc-2,C#,Visual Studio,Visual Studio 2010,Asp.net Mvc 2,我有一个共享项目,其中存储了所有自定义EditTemplates和DisplayTemplates。这是一个常规的C#类库项目,所有视图都标记为嵌入式资源。本项目的目标框架是“.Net framework 4” 在/Views/文件夹中,我包含了这个web.config文件,因此在处理.aspx和.ascx文件时,我可以获得MVC 2 intellisense: <?xml version="1.0"?> <configuration> <system.web&
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
通常情况下,我的设置没有问题,但编译视图时偶尔会出现错误:
错误3功能“匿名类型”
无法使用,因为它不是零件
ISO-2c语言的应用
规格
对于如下所示的模板:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%@ Import Namespace="System.Web.Mvc.Html" %>
<%
string displayText = string.Empty;
if (Model != null)
{
if (DateTime.Parse(Model.ToString()) != DateTime.MinValue)
displayText = DateTime.Parse(Model.ToString()).ToShortDateString();
}
%>
<%= Html.TextBox("", displayText, new { @class = "date-box" })%>
大多数时候,这个错误就消失了。我已经学会了处理它,但现在它引起了一些问题。任何关于“错误3功能‘匿名类型’的原因的想法都不能使用,因为它不是ISO-2 C语言规范”错误的一部分,我如何解决这个问题?不知何故,您的IDE经验导致4.0 C编译器仅限于2.0版编译器中允许的功能。这可以使用langversion开关来完成。比如说 csc/langversion:ISO-2 完整文档:
我不熟悉Asp.NETMVC的编译工作原理,但在您的项目系统中,您要求仅限于2.0框架。我的第一个猜测是查看项目的项目页面,确保它不是针对2.0的 我曾经遇到过这个问题,并且花了很多时间,但我发现其中包含空配置部分的App.Config文件是邪恶的根源。只要删除App.Config,一切都会正常工作。我的解决方案是更改项目类型
(这是一个MVC3项目)对我来说,这最终是由磁盘空间不足造成的,表现为异常和无法解释的随机构建错误的风暴。对此有任何解释或猜测吗?谢谢分享。你说得对,在删除app.config之后,它对我起了作用。但是,我也发现,如果我将
system.web
配置块从web.config复制到app.config,错误也会消失。因此,如果需要app.config,请尝试将配置从web.config复制到app.config,并保留web.config。在我的示例中,我打开了web.config,并从较旧版本的解决方案中查看。我将所有文件复制到另一个文件夹中,并在转换/重构/更新过程中将其用作参考。奇怪的是,仅仅打开这个文件就导致了一个问题。谢谢,也为我修复了它。我的是一个类库项目(VS2012,.NETFramework 4.5),在我为NopCommerce编写的插件中,使用了razor视图。