2011-07-28 21 views
2

ソリューションの現在のスタートアッププロジェクトのbinフォルダにプロジェクトの出力をコピーする必要はありますか? MSBuildスクリプト内のどのプロジェクトがスタートアッププロジェクトであるかを知ることは可能ですか?私が話しているプロジェクトはPRISMモジュールであり、そのモジュール性のため、シェルプロジェクトでは参照されません。しかし、私たちはまだそれらを私たちのソリューションに加えています。参照されていないプロジェクトをソリューションからソリューションのスタートアッププロジェクトにコピー

これまで、私たちはアプリケーションをデバッグするためのきれいなソリューションを持っていました。私たちのInfrastructureプロジェクト(ビルドプロセスの最下位レベル)は、Shell \ bin \ Debug \ Modulesフォルダを削除します。このアプリケーションのブートストラップは、モジュールを "Modules"ディレクトリから直接ロードするように設定されています。すべてのモジュールプロジェクトは、このフォルダに対してOutputPathが設定されています。

このビルドプロセスは、プロジェクトのロード/アンロードだけでデバッグするモジュールを選択できるという利点があります。モジュールフォルダは、最初は常に空になり、ロードされたプロジェクトだけがビルドされます。これは、さまざまなモジュールの組み合わせをデバッグするためのコンフィギュレーションフリーの方法です。

どのようにして、私たちはすでに他のシェル用に作成したモジュールを使用する新しいPRISMプロジェクトを開始しました。今私はこの快適なセットアップがもう働けないという問題に直面しています。 1つのモジュールプロジェクトにはOutputPathが固定されており、開発者は問題のないさまざまなソリューションでプロジェクトを再利用することができません。

Btwでは、MSBuildスクリプトではありませんが、自動化する必要があります。

編集:共通のモジュールを使用して同じアイデアが複数のプリズムシェルで機能し、同時に複数のPRISM製品で作業できるという点を強調していません。そのため、すべてのフォルダに共有出力パスを使用することができません。

答えて

2

あなたはこのように他のプロジェクトの出力をコピーするMSBuildのでAfterBuildターゲットを指定することができます。その情報を.suoファイルに格納されているよう

<Target Name="AfterBuild"> 
    <Copy SourceFiles="$(SolutionDir)MyProject1\bin\$(Configuration)\*.dll" DestinationFolder="$(TargetDir)"/> 
    <!-- repeat for other projects --> 
</Target> 

私の知る限りを、スタートアッププロジェクトを見つけるには、簡単ではありません。あなた自身のMSBuildタスクの作成や拡張を試すことができますMSBuild Community task: GetSolutionProjects

1

"新しい"プロジェクトのOutputPathを "Shell"アプリケーションと同じ... Shell \ bin \ Debugフォルダを指すように設定できます。こうすることで、新しいアプリケーションは同じモジュールのフォルダからモジュールを再度読み込むことができます。システムの他の部分への変更は必要ありません。

+0

私は同じアイデアが共通のモジュールを使用する複数のプリズムシェルで動作し、同時に複数のPRISM製品で作業できるということを強調していません。そのため、すべてのフォルダに共有出力パスを使用することができません。 –

+0

これは、製品ごとに異なる「アクティブな」モジュールを持たせたいということですか? (そして、私は明らかに、なぜ共有された出力パスが動作しないのかを見るためにPrismを読む必要があります。) –

+0

@Gerstendörfer:はい。簡単に言えば、プロジェクトを参照しても参照することなく、同じ開発経験を得ることができます。 –

関連する問題