<compilation targetFramework="4.0">
在web.config中,Visual Studio 2010显示ASPX文件中的所有Linq扩展方法(而不是codebehinds)。但是当我将项目更改为目标3.5(它支持Linq扩展方法)时,Visual Studio会删除web.config中前面提到的属性,但是APSX文件中的Linq intellisense也会随之删除。
在编辑ASPX文件时,是否可以说服Visual Studio 2010不要假设并返回到2.0,这样Linq扩展方法仍然会列在intellisense下拉列表中?
编辑
one of my previous questions
,当时我不知道发生了什么。
问题再现
-
在Visual Studio 2010中打开Asp.net MVC项目属性和NetFx 3.5目标
-
正常开放
web.config
并移除
targetFramework
-
在视图本身(ASPX)中编写一些使用Linq扩展方法(即。
(new List<string>()).Any(s => string.IsNullOrEmpty())
). 你应该看看
Any
-
开始在中逐个添加一个配置设置
web.config配置
任何
方法。
-
添加
<% @ Imports ... %>
任何
方法也一样。
运行应用程序不是问题。它运行并执行
任何
我的
web.config配置
这是我的web.config文件的完整内容,不符合预期(我也可以包括注释掉的部分,但这没有任何区别-原始的Asp.net MVC 2项目模板也不包括这些内容):
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<compilation debug="true" batch="true">
<assemblies>
<!--
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
-->
<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<pages enableViewState="false">
<controls>
<add tagPrefix="SharePoint" assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.WebControls" />
</controls>
<namespaces>
<add namespace="Microsoft.SharePoint"/>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Linq"/>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="MyApp.Objects"/>
<add namespace="MyApp.Web.General"/>
<add namespace="MyApp.Web.Helpers"/>
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockDirectAccessHandler"/>
<add name="BlockDirectAccessHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
这就是它在Visual Studio 2010中的样子。在图像中你看不到多余的一行
<%@ Import Namespace="System.Linq" %>
应该就在那之后
<%@ Control ... %>
,但我试过有没有。
system.web/pages/namespaces
是全局设置。