今週の初めに、ソリューション内の複数のWebアプリケーション間でファイルを効果的に共有する方法についての質問を投稿しました。NuGetはソリューションとして提供され、しばらくしてソリューションを実装できましたが、現在、解決を妨げている問題が1つあります。
この時点で、2つのWebアプリケーションプロジェクトがあります。
Project.Common.Presentations
Project.Website.Presentations
プロジェクトがビルドされるたびProject.Common.Presentations
に、より高いバージョンの新しいNuGetパッケージが作成されます。このパッケージは私のメインのWebプロジェクトで使用されていますProject.Website.Presentations
。最初に、GUIを介してproject.common.presentationsNuGetパッケージをこのプロジェクトに追加します。その直後に、ビルド前のイベントをセットアップし、コマンドラインからNuGetの更新を実行して、Project.Common.Presentations
パッケージの最新バージョンをプルします。
しかし、どういうわけか、コマンドラインでNuGetの更新を使用すると、実際にはディスク上にない場所を使用してプロジェクトへの参照が追加され、次の問題が発生します。
この参照を解決できませんでした。アセンブリ「Project.Common.Presentations」が見つかりませんでした。アセンブリがディスク上に存在することを確認してください。この参照がコードで必要な場合、コンパイルエラーが発生する可能性があります。
これが私が構造を設定する方法です:
Project.Common.Presentations
このファイルを使用して、プロジェクトのNuSpecファイルを生成しました.csproj
。- 私のビルド後のイベントとして、私
Project.Common.Presentations
は以下を使用します$(ProjectDir)nuget.exe pack -sym $(ProjectPath)
。これにより、プロジェクトがビルドされるたびに新しいNuGetパッケージがビルドされます。このビルドイベントを実行する前に、スクリプトを使用して古いNuGetパッケージを削除します。 - 私のビルド前のイベントとして、私
Project.Website.Presentations
は以下を使用します:$(ProjectDir)NuGet.exe update $(ProjectDir)packages.config
最初の再構築がすべて実行され、.csproj
ファイルがパッケージへのdll参照で更新され、すべて正常に機能します。2回目にrebuildallを実行すると、.csproj
ファイルは再度更新されますが、新しいバージョンのパッケージで別のフォルダーを参照していますが、フォルダーがドライブ上にありません。GUIの「NuGetパッケージの管理」を使用してNuGetパッケージを更新すると、この問題は発生せず、すべてが正常に機能します。
ビルド前のイベントを削除し、パッケージを手動で更新すると正常に機能します。しかし、ビルドするたびに手動で何かをしなければならないことは、私が楽しんでいることではありません。パッケージマネージャーコンソールを使用してパッケージをアンインストールおよびインストールすることもできます。パッケージマネージャーコンソールのアクションをビルド前のイベントに組み込む方法はありますか?情報を事前に感謝します。