常にスタートアップ プロジェクトをビルドするように VisualStudio 2008 を構成できますか?

StackOverflow https://stackoverflow.com/questions/15678

  •  08-06-2019
  •  | 
  •  

質問

いくつかのプロジェクトを含むソリューションがあります。スタートアッププロジェクトには、「プラグイン」プロジェクトのすべてのコピーとその他の整理タスクを実行するビルド後のイベントがあります。ソリューションを VS 2005 から VS 2008 にアップグレードした後、スタートアップ プロジェクトを変更した場合にのみビルド後のイベントが発生するように見えます。これは、更新されたプラグインが現在のデバッグ セッションにプラグインされていないことを意味します。これは当然のことですが、行動が変化しているように思えます。どのプロジェクトがビルドされるかに関する動作の変化に気づいた人はいますか?

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

役に立ちましたか?

解決

各プラグインの「スタートアップ」プロジェクトに依存関係を追加するだけではどうでしょうか?これにより、他のプロジェクトのいずれかが変更された場合にプロジェクトが強制的に再ビルドされ、他のビルド前/ビルド後のイベントをいじる必要がなくなります。

他のヒント

責任を再整理する必要があると思います。各コンポーネントはそれ自体に責任を持ち、生成された優れた機能を必要な場所にコピーする必要があります。そうすれば、いつ、どこで、誰が、何を構築したかは関係ありません。更新されたものはすべて、適切な場所に配置されます。


私の意見では、他の提案は、メインプロジェクトにいつリビルドが必要かを知るコンパイラの機能を回避することになるため、ノーノーです。したがって、コンパイル時間の節約が無駄になります。「プラグイン」プロジェクトがアセンブリである場合 (メイン プロジェクトからの単なるプロジェクト参照ではなく)、プラグインを再構築するたびにメイン プロジェクトを再構築する必要はありません。新しいアセンブリは、メイン プロジェクトの再構築を必要とせずに、プロセス/デバッガーに選択されます。

これが正しい方法かどうかはわかりませんが、スタートアップ プロジェクト (静的プロジェクトの場合) に prebuild イベントを追加して、強制的にリビルドするプロジェクトをクリーンアップすることができます。

何かのようなもの:

devenv project.csproj /clean

これは苦痛です。私たちが本当に必要としているのは、Microsoft がソリューション構築後のイベントに参加できるようにしてくれることです。マクロを使用してこれを行うこともできますが、それは複雑すぎます。

C# ではこの問題が発生しないため、これは C++ プロジェクトであると想定しています。

これは私の解決策です。エレガントではありませんが、うまくいきます。

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

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

ジョン。

フリップダウト:これらはもともと 2008 年に作成されたプロジェクトです。C# が機能しない場合の私の提案は、[ビルド イベント] タブを見て、[ビルド後のイベントを実行する:] ドロップダウンの設定を確認することです。「ビルドがプロジェクト出力を更新するとき」に設定されている場合、これが問題である可能性があります。「ビルド成功時」に設定してみてください。

ジョン。

ここでも同じ問題が発生しており、非常に迷惑です。John Richardson は、ソリューション内の任意のプロジェクトがビルドされるたびに適用される、ソリューション ビルド後のイベント (およびソリューション ビルド前のイベント) が存在する必要があるという点で正しいです。

現在の VS 2008 IDE でこの結果を得る良い回避策はないと思います。

@lomaxx の提案から始めて、次の行を追加することで、非常によく似たセットアップが機能するようになりました。 終わりビルド後の スタートアッププロジェクトのイベント:

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

これにより、スタートアップ プロジェクトがビルドされることに注意してください。 デバッグに時間がかかるため、プロジェクトが少なくとも 1 回はビルドされていることを確認する必要があります。

PS.最初は提案どおりにプリビルドを試しましたが、うまくいきませんでした(これは当然だと思います。VS がプロジェクトをビルドする必要がないと判断した場合、そのプロジェクトのイベントは実行されません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top