CDN、LESS、SASS、NuGet などを使用せずにプロジェクト間で Web リソースを共有するための「非常にシンプルな」ソリューションを次に示します。
- 共有するリソースを含む共通のソリューション フォルダーを作成するか、単にプロジェクトの 1 つをマスターに指定します。
- 「リンクとして追加」を使用して、必要に応じて共有リソース ファイルを各プロジェクトに追加します。
- リンクされたファイルをプロジェクト フォルダーにコピーするAfterBuildタスクを各プロジェクト ファイルに追加します。これは、Visual Studio のテスト/デバッグ (F5) がローカルで機能するためにのみ必要です。
これを行う方法の詳細が必要な場合は、読み続けてください。
共有リソースのソリューション フォルダーの構成
** 1 つのプロジェクトから 1 つまたは複数の追加プロジェクトにファイルを直接共有するだけの場合は、この手順を省略できます。
Visual Studio ソリューション フォルダーは、物理ファイル システム フォルダーを反映する必要はありませんが、そうすることで正気を保つことができます。そのため、最初にローカル ファイル システムにフォルダを作成し、リソース ファイルをそこにコピーします。新しいフォルダーは、ソリューション フォルダーの下に配置する必要があります。例えば:
\MySolution
\Common
\Images
\Scripts
\Styles
Visual Studio に戻り、[ソリューション アイテム] フォルダーを右クリックし、[ソリューション フォルダーの追加] を使用して新しいファイル システム フォルダーをレプリケートします。
次に、各フォルダーを右クリックし、[既存の項目の追加] を使用してフォルダーの内容を追加することにより、新しいソリューション フォルダーにファイルを追加します。
共有リソースをリンクとして追加
共有リソースを使用するプロジェクトごとに、プロジェクト フォルダーを右クリックし、 [既存の項目を追加] を選択します。共通フォルダーを参照し、目的のファイルを選択し、[追加] ボタンの横にあるドロップダウン矢印をクリックして、[リンクとして追加] を選択します。
プロジェクト ディレクトリ構造の外にあるファイルを追加することに関するソース管理の警告が表示される場合がありますが、リンクされたファイルはそのソースでソース管理下にあるため、これは無視できます。
ファイルをコピーするためのAfterBuildタスクの追加
アプリケーションをサーバーに発行すると、リンクされたファイルがリンク先のプロジェクト フォルダーにコピーされ、すべてが期待どおりに機能します。ただし、開発環境では、リンクされたファイルはプロジェクト フォルダーに物理的に存在しません。したがって、VS でアプリケーションをテストするために F5 キーを押すと、共有リソースが失われます。
簡単な解決策は、MSBuild タスクを追加して、各ビルドの後にリンクされたファイルをソースからコピーすることです。これは、共有リソース リンクを含むプロジェクトごとに行う必要があります。
プロジェクトを右クリックし、 [プロジェクトのアンロード] を選択します。プロジェクトをもう一度右クリックし、[ <ProjectFileName> の編集] を選択します。一番下までスクロールして、次を追加します ("</Project>" のすぐ上)。
<Target Name="AfterBuild">
<!-- Copy linked content files to local folders so that they are available in the debugger.
This is only an issue when running the application locally. The linked files should
be automatically published to the correct folder when publishing to a web server. -->
<Copy SourceFiles="%(Content.Identity)"
DestinationFiles="%(Content.Link)"
SkipUnchangedFiles='true'
OverwriteReadOnlyFiles='true'
Condition="'%(Content.Link)' != ''" />
</Target>
** TheCodeDestroyer の回答のこのリンクから適用されたタスクをコピーします。
プロジェクト ファイルを保存し、右クリックして [プロジェクトの再読み込み] を選択します。