2

いくつかのプロジェクトで解決策があります。スタートアッププロジェクトには、「プラグイン」プロジェクトやその他の整理タスクのすべてのコピーを実行するビルド後のイベントがあります。ソリューションをVS2005からVS2008にアップグレードした後、スタートアッププロジェクトを変更した場合にのみ、ビルド後のイベントが発生するように見えます。つまり、更新されたプラグインが現在のデバッグセッションにプラグインされません。これは理にかなっていますが、動作の変化のようです。どのプロジェクトが構築されるかに関する振る舞いの変化に気付いている人は他にいますか?

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

4

7 に答える 7

5

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


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

于 2008-08-19T06:15:18.667 に答える
3

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

于 2008-08-19T04:51:16.387 に答える
2

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

何かのようなもの:

devenv project.csproj /clean
于 2008-08-19T04:32:12.243 に答える
2

これは苦痛です。私たちが本当に必要としているのは、Microsoft が Post-Solution Build イベントにフックできるようにすることです。マクロを使ってこれを行うことができますが、それは複雑すぎます。

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

これは私の解決策です。エレガントではありませんが、機能します:

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

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

ジョン。

于 2008-08-19T12:12:43.173 に答える
1

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

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

于 2009-03-06T17:41:35.363 に答える
1

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

ジョン。

于 2008-08-19T12:49:46.250 に答える
0

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

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

これにより、次にデバッグする必要があるときにスタートアップ プロジェクトがビルドされるため、プロジェクトが少なくとも 1 回はビルドされるようにする必要があります。

PS。私は最初に提案されたように事前ビルドを試みましたが、うまくいきませんでした (VS がプロジェクトをビルドする必要がないと判断した場合、そのプロジェクトのイベントは実行されません)。

于 2010-09-28T16:04:27.823 に答える