我有一个共享项目,我存储了所有自定义的EditTemplates和DisplayTemplates。这是一个常规的C#类库项目,其视图都标记为嵌入式资源。该项目的目标框架是“.Net Framework 4”。
在/ Views /文件夹中我已经包含了这个web.config文件,因此在使用.aspx和.ascx文件时我得到了MVC 2 intellisense:
<?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-2 C#语言 说明书
表示如下的模板:
<%@ 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#语言规范的一部分”错误以及如何解决这个问题?
答案 0 :(得分:6)
我遇到过这个问题,并且花了很多时间,同时发现其中包含空配置部分的App.Config文件是邪恶的根源。只需删除App.Config ,一切正常。
答案 1 :(得分:4)
不知何故,您的IDE体验导致4.0 C#编译器仅限于2.0版本编译器中允许的功能。这可以使用langversion开关完成。例如
csc / langversion:ISO-2 ......
完整文档:http://msdn.microsoft.com/en-us/library/f4ckecs0.aspx
我不熟悉Asp.Net MVC的编译工作方式,但是在项目系统的某个地方,你要求仅限于2.0框架。我的第一个猜测是查看项目的项目页面,并确保它不是针对2.0。
答案 2 :(得分:2)
我的解决方案是更改项目类型
交换此
的项目GUIDProjectTypeGuids: {E53F8FEA-EAE0-44A6-8774-FFD645390401}; {349c5851-65df-11da-9384-00065b846f21}; {fae04ec0-301f-11d3-bf4b-00c04f79efbc}
(这是一个MVC3项目)
答案 3 :(得分:0)
对我而言,这最终是由于磁盘空间不足造成的,这是一种不寻常和无法解释的随机构建错误的冰雹。