MSBuild で GetType() の呼び出しがサポートされなくなった
MSBuild 17 で、プロパティ関数内での GetType()
インスタンス メソッドの呼び出しがサポートされなくなりました。 このメソッドにより、評価中に予期しないコードの実行が許可され、Visual Studio のハングを引き起こすおそれがありました。
導入されたバージョン
.NET SDK 6.0.100-rc1
以前の動作
MSBuild プロパティ関数内で GetType()
の呼び出しが実行されたことが原因で、Visual Studio で予期しない動作を引き起こすことがありました。
新しい動作
.NET 6 SDK 以降、MSBuild プロパティ関数内で GetType()
を呼び出すと、プロジェクトの評価中に、次のコンパイル時のエラーが表示されます。
The function "GetType" on type "System.String" is not available for execution as an MSBuild property function. (型 "System.String" の関数 "GetType" を MSBuild プロパティ関数として実行することはできません。)
カテゴリの変更
この変更は、"ソースの互換性" に影響します。
変更理由
この機能は実証されておらず、一般的に使用されていませんでした。 プロジェクトの読み込み、特に Visual Studio で、パフォーマンスと信頼性の問題を引き起こしていました。
このパターンが唯一一般的に使用されている場面として知られているのは CBT システム内でしたが、こちらは非推奨となっています。
推奨される操作
GetType()
に対するすべての呼び出しを、代替の MSBuild ロジックに置き換えてください。
影響を受ける API
該当なし
.NET