7

各モジュール (= 領域) がクラス ライブラリであるモジュラー MVC4 アプリを構築しています。モデルとコントローラーは .dll にコンパイルされ、ビューは適切なフォルダーにコピーされます。実行時には、すべて正常に動作します。設計時には厄介な問題が 1 つ残っています。それは、クラス ライブラリ内で Razor ビューを編集するときに、Visual Studio が System.Web.Optimization 名前空間を認識しないことです。

The name "Styles" does not exist in the current context.
The name "Scripts" does not exist in the current context.

ルートと内部 web.config の system.web/compilation セクションにアセンブリを追加しようとしました。

<add assembly="System.Web.Optimization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

特定のバージョンなしでも試してみました。どちらの方法でも問題は解決しませんでしたが、asp.net ランタイム エラーが発生しました (カミソリ ビューの最初の行に表示されます)。

Could not load file or assembly 'System.Web.Optimization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

アセンブリがプロジェクトで参照され、「ローカルにコピー」が「True」に設定されています。また、かみそり構成セクションに名前空間として追加されます。

将来、他のアセンブリで遭遇する一般的な問題だと思います。

編集:クラス ライブラリ内のカミソリ ビューで Intellisense を使用するための一般的なセットアップを行いました。VS2010 が最適化名前空間を認識しないことを除いて、これまでのところすべてが機能しています。

4

5 に答える 5

7

nugetを使用してMicrosoft.Web.Optimizationをインストールしたことを解決するために、aspmvcプロジェクトのビルド済みビューでこのエラーが発生しました。

[ツール]メニューから[ライブラリパッケージマネージャー]を選択し、[パッケージマネージャーコンソール]をクリックします。次のコマンドを入力して、バンドルとミニファイを更新します。

Install-Package Microsoft.Web.Optimization -Pre

ここにいくつかの追加情報http://forums.asp.net/t/1812274.aspx/1

于 2012-10-14T19:20:28.810 に答える
7

web.configクラス ライブラリ プロジェクト (Razor ビューを含むプロジェクト) のルートに、次の内容のファイルを追加します (このブログ投稿から取得)。

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <system.web>
    <compilation targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </assemblies>
    </compilation>
  </system.web>
</configuration>

これにより、Visual Studio が Web プロジェクトであると認識し、Intellisense が有効になります。

于 2012-07-21T09:10:37.033 に答える
1

@Vladimir 、私は Visual Studio 2013 を使用しており、行を次のように少し変更する必要がありました。

インストール パッケージ Microsoft.AspNet.Web.Optimization

これで修正されました。

于 2014-02-25T04:38:07.870 に答える