次の方法で共有


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

該当なし