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+に移行する際に調べたメモでした。
CIやコマンドラインビルドの場合はRelease構成指定にプロパティを上書きで問題ありませんが、 VSのGUI上ではビルド構成を追加しないと使い分けにくいんですよね。
どこかに「Release構成のプロパティを全て継承する」みたいな指定方法ありませんかね?