これは私を困惑させ、VisualStudio2010にビューコードのSystem.Linq拡張メソッドを認識させることができないようです。Intellisenseは機能せず、VisualStudioの赤は認識されない拡張メソッドに下線を引きます。
これらはweb.configの最も関連性の高い部分であり、System.Linq拡張メソッドを認識するためのVisualStudioに関連していると思います。コメントアウトされた行はコメントされていない可能性がありますが、違いはありません。
<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">
<namespaces>
<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>
このような部分的なビュー定義があります。2行のコメントアウトについても同じです。コメントなしは違いはありません:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<ToolbarItem>>" %>
<%--
<%@ Assembly Name="System.Core" %>
<%@ Import Namespace="System.Linq" %>
--%>
<%
if (!this.Model.Any(ti => ti is ToolbarText && (ti as ToolbarText).MaximizeWidth))
{
this.Model.Add(new ToolbarText { MaximizeWidth = true });
}
%>
この特定の部分ビュー拡張メソッドは、名前空間の下のアセンブリでAny()
定義されていても認識されません。System.Core
System.Linq
どの構成設定が欠落していますか?Visual Studioは、名前空間System.Core
内の拡張メソッドを列挙するためのアセンブリを認識できないようです。System.Linq