MSBuild ya no admite la llamada a GetType()

MSBuild 17 ya no admite la llamada al método de instancia GetType() dentro de las funciones de propiedad. Este método permitía la ejecución imprevisible de código durante la evaluación y podría provocar bloqueos de Visual Studio.

Versión introducida

SDK de .NET 6.0.100-rc1

Comportamiento anterior

Las llamadas a GetType() en las funciones de propiedad de MSBuild se ejecutaban y, en ocasiones, provocaban un comportamiento imprevisible en Visual Studio.

Comportamiento nuevo

A partir del SDK de .NET 6, si llama a GetType() en una función de propiedad de MSBuild, verá el siguiente error en tiempo de compilación durante la evaluación del proyecto:

La función "GetType" del tipo "System.String" no está disponible para ejecutarla como una función de propiedad de MSBuild.

Cambio de categoría

Este cambio afecta a la compatibilidad de origen.

Motivo del cambio

Esta funcionalidad no estaba documentada ni se usaba con frecuencia. Provocaba problemas de rendimiento y confiabilidad con la carga de proyectos, especialmente en Visual Studio.

El único uso común conocido de este patrón era en el sistema CBT, que ha quedado en desuso.

Reemplace las llamadas a GetType() por una lógica de MSBuild alternativa.

API afectadas

N/D