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


Новые возможности MSBuild 17

В этой статье описываются значительные обновления в MSBuild 17.0. Подробные замечания о выпуске для каждой версии см. в выпусках MSBuild .

MSBuild 17.0 поставляется с Visual Studio 2022 и .NET 6.0.

Изменен путь

MSBuild устанавливается в папку \Current в каждой версии Visual Studio, а исполняемые файлы находятся в подпапке \Bin. Например, путь к MSBuild.exe, установленному вместе с Visual Studio 2022 Community, — это C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe. Можно также использовать следующий модуль PowerShell для поиска MSBuild: vssetup.powershell.

Измененные свойства

Следующие свойства MSBuild были обновлены из-за нового номера версии.

  • MSBuildToolsVersion для этой версии инструментов остается "Current". Версия сборки аналогична версии Visual Studio 2017 и Visual Studio 2019, которая составляет 15.1.0.0.

  • VisualStudioVersion для этой версии инструментов — 17.0.

64-разрядная версия

MSBuild.exe ранее имели 32-разрядные и 64-разрядные версии, но теперь 64-разрядная версия — это по умолчанию. Visual Studio 2022 использует 64-разрядную версию MSBuild для всех сборок. 32-разрядная версия по-прежнему доступна, но мы рекомендуем переключить все сборки на 64-разрядную версию.

Для владельцев задач это означает, что при загрузке задачи MSBuild она попытается загрузить ее в 64-разрядном процессе. Рекомендуется обновить задачи для выполнения в 64-разрядном процессе, но для совместимости можно сообщить MSBuild, что задача выполняется только как 32-разрядная в UsingTask.

Улучшения производительности

MSBuild быстрее! Основное внимание в этом выпуске уделяется повышению производительности для многих распространенных сценариев. MSBuild 17.0 может создавать большие проекты быстрее.

Версии .NET

MSBuild (и Visual Studio) теперь предназначен для .NET Framework 4.7.2 и .NET 6.0. Если вы хотите использовать новые функции API MSBuild, сборка также должна обновиться, но существующий код продолжит работать.

Логи

Двоичные журналы меньше и содержат больше информации.

В MSBuild 17.8 и более поздних версиях попробуйте использовать новый средство ведения журнала терминала (-terminalLogger или -tl в командной строке) для улучшения выходных данных консоли.

Критические изменения

  • Метод GetType() больше не может вызываться в функциях свойств.
  • MSBuild для .NET предназначен для .NET 6.

Другие изменения поведения

  • MSBuildCopyContentTransitively теперь включен по умолчанию, обеспечивая согласованность в выходных папках при добавочных сборках.

Подробные сведения о дополнительных изменениях в этой версии можно найти в заметках о выпуске. О изменениях в версиях MSBuild, от которых можно отказаться, см. в этапах изменений.