3

これは私を困惑させ、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.CoreSystem.Linq

どの構成設定が欠落していますか?Visual Studioは、名前空間System.Core内の拡張メソッドを列挙するためのアセンブリを認識できないようです。System.Linq

4

3 に答える 3

5

targetFrameworkの属性をweb.configのコンパイル要素に追加する必要があります。

<system.web>
    <compilation debug="true" targetFramework="4.0">

これをweb.configに追加すると、ビューで再びインテリセンスを取り戻す必要があります。

于 2010-11-11T16:31:56.567 に答える
1

もちろんSystem.Core、アセンブリは構成のコンパイルに含まれている必要があります。

しかし、web.configファイルをクリーンアップしているときに、この部分を削除しました。これは、期待どおりに機能させるためにVisual Studio 2010に(明らかに)不可欠です。

<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
            <providerOption name="CompilerVersion" value="v3.5"/>
            <providerOption name="WarnAsError" value="false"/>
        </compiler>
    </compilers>
</system.codedom>
于 2010-11-14T14:35:25.190 に答える
1

試すことができます

<%@ Import Namespace="*" %>

ここで、*は使用する名前空間です(例:System.Linq)。

おそらく最善の方法ではありませんが、機能する可能性があります(vs so cantテストを備えたコンピューターでは機能しません)

于 2010-11-11T11:03:06.343 に答える