Поделиться через


MSBuild больше не поддерживает вызов GetType()

MSBuild 17 больше не поддерживает вызов метода экземпляра GetType() в функциях свойств. Этот метод допускал непредсказуемое выполнение кода во время вычислений и мог приводить к зависанию Visual Studio.

Представленные версии

.NET SDK 6.0.100-rc1

Прежнее поведение

Вызовы GetType() в функциях свойств MSBuild выполнялись и иногда вызывали непредсказуемое поведение в Visual Studio.

Новое поведение

Начиная с пакета SDK для .NET 6 при вызове GetType() в функции свойства MSBuild во время оценки проекта возникнет следующая ошибка времени компиляции:

Функция "GetType" в типе "System.String" недоступна для выполнения в качестве функции свойства MSBuild.

Категория изменения

Это изменение влияет на совместимость исходного кода.

Причина изменения

Эта функция не задокументирована или нечасто используется. Она приводила к проблемам с производительностью и надежностью при загрузке проекта, особенно в Visual Studio.

Этот шаблон использовался только в системе CBT, которая является нерекомендуемой.

Замените все вызовы GetType() на альтернативную логику MSBuild.

Затронутые API

Н/Д