2008-08-19 6 views
2

私はいくつかのプロジェクトでソリューションを持っています。スタートアッププロジェクトには、 "プラグイン"プロジェクトや他の整理タスクのコピーをすべて行うポストビルドイベントがあります。ソリューションをVS 2005からVS 2008にアップグレードした後は、起動プロジェクトを変更するとポストビルドイベントのみが発生するように見えます。これは、更新されたプラグインが現在のデバッグセッションにプラグインされないことを意味します。これは理にかなっていますが、行動の変化のようです。どのプロジェクトが構築されるのかについて行動の変化に気づいた人は誰ですか?スタートアッププロジェクトを常にビルドするようにVisualStudio 2008を設定できますか?

F5キーを押すたびにスタートアッププロジェクトを強制的に再構築するための回避策を知っている人はいますか?おそらく私はVS 2005をこのようにしてずっと前から動作させるように設定していましたが、それについてすべてを忘れてしまいました...

答えて

3

理由だけではなく、プラグインごとに、「スタートアップ」プロジェクトへの依存関係を追加しない:のような

何か?これにより、他のプロジェクトが変更された場合にプロジェクトが強制的に再構築され、他の事前/事後ビルドイベントを混乱させる必要はありません。

2

私はこれが正しい方法かどうかわかりませんが、あなたにプレビルドイベントを追加できます再起動を強制するプロジェクトをクリーンアップするためのstartup projcet(静的な場合)。

devenv project.csproj /clean 
5

あなたは責任を再編する必要があると思います。各コンポーネントはそれ自身の責任を負うべきであり、したがって、必要なところで生成された良さをコピーする必要があります。そうすれば、/ who/what/when/whereが構築されているかどうかは関係ありません。更新されたものはすべて、適切な場所に置かれます。彼らは再構築が主なプロジェクトのために必要がある場合に知ってコンパイラの知性を回避ますので、


はIMO他の提案には-NOSません。コンパイル時間を節約できます。あなたの "プラグイン"プロジェクトがアセンブリである場合(メインプロジェクトのプロジェクト参照だけでなく)、プラグインが再構築されるたびにメインプロジェクトを再構築する必要はありません。新しいアセンブリは、再構築を必要としないメインプロジェクトなしでプロセス/デバッガに選択されます。

2

これは痛みです。私たちが本当に必要とするのは、マイクロソフトがPost-Solution Buildイベントに参加できるようにすることです。マクロでこれを行うことはできますが、それは複雑すぎます。

私はC#でこの問題がないので、これはC++プロジェクトと仮定しています。

これが私の解決策である、それはエレガントではないのですが、それは動作します:

  • は、その唯一の目的ビルド後のスクリプトを実行するために、新しいプロジェクトを作成します。ソリューションの他のすべてのプロジェクトに依存するものとしてマークします。
  • ダミーファイルをdummy.hなどのプロジェクトに追加します。
  • ソリューションエクスプローラでdummy.hを右クリックし、[プロパティ]を選択します。
  • 「カスタムビルドステップ」を選択します。
  • コマンドラインで 'echo'とOutputsを入力すると 'dummy'と入力してください。

このプロジェクト、つまりポストビルドスクリプトは、すべてのビルドで実行されるようになりました。

ジョン。

1

flipdoubt:2008年に最初に作成されたプロジェクトです。動作しない場合の私の提案C#では、[Build Events]タブを見て、[Build post eventを実行する]ドロップダウンをチェックします。 'ビルド時にプロジェクトの出力が更新されたとき'に設定されている場合は、これが問題の可能性があります。「成功したビルド」に設定してみてください。

ジョン。

1

私はここで同じ問題を抱えており、非常に迷惑です。 John Richardsonは、ソリューション内のすべてのプロジェクトが構築されているときにいつでも適用可能なPost-Solution Buildイベント(およびPre-Solution Buildイベント)が必要であるという点では正解です。

現在のVS 2008 IDEでこの結果を得るための良い回避策はありません。 @lomaxxの提案から始まっ

0

は、私が最後に次の行を追加して、作業に非常に似たセットアップを得たのビルド後スタートアッププロジェクトのイベント:

"$(DevEnvDir)devenv.exe" "$(ProjectPath)" /clean 

(注)このことをスタートアッププロジェクトはの次に時間をビルドするので、プロジェクトが少なくとも1回はビルドされていることを確認する必要があります。

PS。私は最初に提案されたようにプリビルドを試みましたが、それはうまくいかなかった(VSがプロジェクトをビルドする必要がないと思ったら、そのプロジェクトのイベントは実行しません)。

関連する問題