csprojファイル内で使用されるMSBuildプロパティのデフォルト値を調べる

前置き
.NET Coreと同じくらいの時期に登場したSDKスタイルと呼ばれるcsproj形式では、明示的に記述しなくても多くのMSBuildプロパティに初期値が設定されるようになっています。
ここでRelease ビルドの設定を少し変更した Release_Sandbox のようなビルド構成を作る場合を考えます。
Configurationプロパティ(ビルド構成)がDebugかReleaseかによって設定される初期値が変わってきますが、独自のビルド構成ではこの条件に引っかかりません。
そのためRelease構成のバリエーションを作るためにはReleaseの場合に設定される初期値を調べて再現する必要が出てきます。
方法
MSBuildコマンドの-pp(-preprocess)を使って、ビルド時にcsprojにインポートされる全てのファイルが展開された結果を出力します。
次のようなコマンドを実行します。(MSBuildの部分はdotnet buildでもOK)
MSBuild NetAndroidApp.csproj -pp:_NetAndroidApp.csproj.xml
実行すると画像左のcsprojから右のファイルが出力されます。

ここから '$(Configuration)' == 'Release' の条件が含まれる部分を調べていけば良さそうです。
最適化や......

Assemblyのトリミング設定に影響している事が分かりますね。

おわり
という訳でXamarin.Androidプロジェクトを.NET 6+に移行する際に調べたメモでした。 Visual Studioで 「Release or Debug」 + 「MSBuildプロパティのセット」 の組み合わせをビルド構成のように扱えると便利になりそうですね。
フォローしませんか?
お気軽にご依頼・ご相談ください


