簡単な答え: デバッグ モードではいいえ、リリース モードでははい。
ファイルのリンクは、別の場所に保存されているファイルをコードとリソースのコンパイルに含めるために使用される Visual Studio の概念です。明らかに、ファイルをコンパイルする必要がある場合 (ソース ファイル)、リソースとして埋め込む必要がある場合、またはターゲット ディレクトリにコピーする必要がある場合 ([出力ディレクトリにコピー] が [コピー] に設定されている場合) は、ファイルのリンクが機能します。
デバッグモードで動作しない理由
デバッグ モードでは、バンドルは無効になり、スクリプトは個別にリンクされます。ファイルは Web アプリケーションのルートにコピーされないため、IIS を介してユーザーがアクセスすることはできません。アプリケーションをビルドするたびにスクリプト ファイルのコピーを有効にしようとすると、ファイルがbin
Web アプリケーションのディレクトリにコピーされます。このディレクトリは IIS 経由ではアクセスできず、これも機能しません。
リリースモードで動作する理由
リリースモードでは、スクリプトのバンドルが実行されます。スクリプト ファイルは Web ページから個別にリンクされていないため、ユーザーが直接アクセスする必要はありません。バンドル コードのみがアクセスできる必要があります。ただし、これを構成することについては、こっそりと行う必要があります。必要がある:
Copy to Output Directory
にリンクされたスクリプトのセットCopy always
。リンクされたスクリプトを ~/Scripts に保存すると、アプリケーションをコンパイルすると ~/bin/Scripts フォルダーにコピーされます。
- ディレクトリを含めるようにバンドル パスを構成します
bin
。
~/bin/Scripts/
次の行に注意してください。
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery.unobtrusive*","~/Scripts/jquery.validate*","~/bin/Scripts/FolderA/*.js"));
デバッグモードの無効化
ここで言及されているデバッグ モードは、Visual Studio のコンパイラ設定ではありません。これはweb.config
ファイル内の要素です。
<system.web>
<compilation debug="false" targetFramework="4.5" />