複数のVisual Studioバージョンにわたるプロジェクトの依存関係
-
03-07-2019 - |
質問
3つの.netプロジェクトがあります。
Project1.dllは、VS2008プロジェクトによって生成されます。
Project2.dllは、Project1.dllを参照するVS2005プロジェクトによって生成されます。
Project3.dllは、Project1.dllとProject2.dllの両方を参照するVS2008プロジェクトによって生成されます。
今、Project1.dllをビルドし、Project 2が取得できる場所に手動でコピーします。
次に、Project2.dllをビルドし、それをProject3が取得できる場所にProject1.dllと手動でコピーします。
明らかに、私は何か間違ったことをしています(手動)。プロジェクトの参照を最新の状態に保つ正しい方法は何ですか?
Project2をVS2008に更新し、3つのプロジェクトすべてを含む1つのソリューションを作成することは、現時点ではオプションではありません。 VS2008ではまだ動作しないサードパーティのvisualstudioプラグインがあります。 Project2はVS2005にとどまる必要があります
Project1およびProject3をVS2005に更新してから、1つのソリューションを作成することもオプションではありません。これらのプロジェクトでは、C#3.0および.net 3.5の機能に依存しています。
解決
デイヴィッド、 おそらく、3つのプロジェクトすべてに共通のビルドフォルダーを用意するのが最善の選択肢です。これはプロジェクトのプロパティで行うことができます->ビルド->出力パス。次に、出力フォルダーへの参照をポイントします。これにより、下位のプロジェクトをビルドするたびに、上位のプロジェクトに最新バージョンが含まれます。構成(デバッグ、リリース)ごとにパスを設定することもできるため、ビルドの種類ごとにパスを変更する必要はありません。
他のヒント
Project3のビルド前イベントはどうですか?バッチファイルを使用してProject1をビルドし、Project2フォルダーにコピーしてから、project2をビルドしてproject3フォルダーにコピーします。
csproj / vbprojファイルをソリューション間で共有することをお勧めします。プロジェクトファイルの形式は、スタジオの2つのバージョン間で互換性がありますが(ソリューションファイルは互換性がありません)、VS2008プロジェクトが2.0ランタイムをターゲットにしている限り、問題なくコンパイルできます。これにより、プロジェクトを参照でき、依存関係が処理されます。
これが難しいのは、2つのバージョンのスタジオ間で作業する必要があるWebプロジェクトがある場合だけです。その場合、正しいMSBuildターゲットファイルを指すプロジェクトファイルにいくつかの変更があります。
依存関係を処理し、DLLをビルドし、手動で行っていることを実行するビルドスクリプトを使用します。
過去に使用したトリックは、すべてを2008に移行することです。その後、2005年にプロジェクト2の特別なソリューションをセットアップし、それを使用してアドインを操作します。これが機能するかどうかは、2008年のプロジェクト2の動作がどれだけ悪いかにかかっています。