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
不适用