私の前の質問の論理的なフォローアップ: 「ソリューション内のすべてのプロジェクトをいくつかの基準でチェックする方法は?」
CustomAfterMicrosoftCommonTargets、CustomBeforeMicrosoftCommonTargets を使用するという非常に良い答えが得られました。それらは機能するので、途中でやめないことにしました。
問題は、マシン全体のタスクが必要ないことです。私にとっても(他のビルドに影響します。確かに、これは処理できますが、それでも)、チームメイトにとっても(システムフォルダーに何かを入れさせたくありません...)、どちらにとっても良い考えではありません。ビルドサーバー用。必要なもの: Visual Studio または MSBuild のいずれかを使用して、クリーン マシン上でソース管理からゼロから構築するソリューション。
Custom*MicrosoftCommonTargets は通常のプロパティのようです。
では、このプロパティを指定するにはどうすればよいでしょうか。コマンドラインから設定すると、かなりうまく機能します。これは奇妙ですが、ここにちょっとした魔法が存在するようです:コマンド ライン パラメーターとして 1 つのビルドに渡されたプロパティは、ネストされたすべてのビルドに推移的に渡されます!
ビルドサーバーには問題ありません。ただし、これは Visual Studio ビルドでは機能しません。また、ソリューション レベルのプロパティを宣言しても役に立ちません。静的プロパティも動的プロパティもネストされたビルドに転送されません。
...ソリューションのビルド前に環境変数を設定し、後で消去するというハックなアイデアがあります。しかし、私はそれが好きではありません。より良いアイデアはありますか?