MSBuild 不再支持调用 GetType()

MSBuild 17 不再支持在属性函数中调用 GetType() 实例方法。 此方法允许在评估期间执行不可预知的代码,并可导致 Visual Studio 挂起。

引入的版本

.NET SDK 6.0.100-rc1

旧行为

GetType() MSBuild 属性函数中的调用会在 Visual Studio 中执行,有时会导致不可预测的行为。

新行为

从 .NET 6 SDK 开始,如果通过 MSBuild 属性函数调用 GetType(),则在项目评估过程中,你将看到以下编译时错误:

类型“System.String”上的函数“GetType”无法作为 MSBuild 属性函数执行。

更改类别

此更改会影响源兼容性

更改原因

此功能未记录或不常用。 该功能会导致项目加载的性能和可靠性问题,尤其是在 Visual Studio 中。

此模式已知的唯一常见用途是在 CBT 系统中,现已弃用。

使用替代 MSBuild 逻辑替换对 GetType() 的任何调用。

受影响的 API

不适用