特定のC#ソリューションのすべてのexe/dllプロジェクトからカスタムメタデータを取得するPowershellスクリプトを作成中です。PowershellでMSBuildライブラリを使用してアクティブなソリューションビルド構成をプログラムで決定する方法
Microsoft.MSBuildアセンブリ(構造と評価の名前空間)を使用してソリューションファイルを解析し、メタデータを取得するためにプロジェクトを繰り返し処理しています。これはすべてうまくいく。
次に、Visual Studio構成マネージャで[ビルド]ビットがチェックされているソリューションのアクティブビルド/プラットフォーム構成の一部であるプロジェクトにのみ集中します。
私はプロジェクトビルド構成プロパティのリストを収集することができますが、ソリューションファイルがアクティブソリューションビルドとアクティブプラットフォーム構成の選択値をどのように格納するかを見つけるのには苦労しています。
また、私はMSBuildライブラリのソースコードも見直しました。たとえば、次の文字列を使用してプロジェクトとソリューションの構成を一致させるように見えます:.Debug - ビルド|すべてのCPU.ActiveCfg =デバッグ|任意のCPU。
ソリューションやプロジェクトのアクティブビルド/プラットフォームの設定をどのように決定する必要があるのか、誰にも分かりますか?
このスクリプトは、最終的にビルド検証プロセスの一環として、TFSで実行されますのでご注意ください。また、EnvDTEが別のオプションかもしれないかどうか疑問に思う。 – str8ball
VSのplatform/configのような揮発性の設定は、ソリューションの.suoファイルに保存されていると思います。それらは通常、ソース管理にはありません。ユーザ/マシン固有のものですから、どう対処するのだろうか?とにかく、これらのファイルはバイナリであり、VSによってのみ使用されるため、実際にはmsbuildには関係しません。 EnvDTEはおそらく行く方法です。 – stijn
@stign、あなたは優れた点を作っています。私がやろうとしているのは、TFSポストビルドを介して最終的に実行されるため、ビルドサーバーは構成パラメータを提供します。それは私が密集している!ヘッドチェックありがとう。 – str8ball