Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Современные решения для сборки проектов в Delphi 11.1: автоматическое определение версии toolsversion

Delphi , Интернет и Сети , Браузер

Переход на новую версию Delphi, в частности с 10.4 на 11.1, может привести к необходимости адаптации существующих скриптов сборки под новые требования. Одной из таких проблем является необходимость корректного указания версии .NET Framework при использовании инструмента msbuild.

Проблема и её описание

При работе с проектами под Android в Delphi 11.1 возникла ошибка при сборке, связанная с не найденным задачей XmlPeek. Это произошло из-за изменения версий инструментов, используемых в процессе сборки. В частности, скрипты сборки, которые ранее работали без проблем, теперь выдавали ошибку, указывающую на отсутствие задачи XmlPeek. Это было связано с тем, что в команде msbuild не была указана версия инструментов.

Предложенное решение

После исследования было найдено решение, заключающееся в добавлении параметра toolsversion в команду msbuild. Это позволило указать версию .NET Framework, которая должна использоваться при сборке проекта. Пример команды:

msbuild someproject.dproj /v:q /p:Platform=Android /t:Build;Deploy /p:Config=Release /p:BT_BuildType=AppStore /toolsversion:4.0

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

Автоматическое определение версии toolsversion

Для автоматического определения версии toolsversion, которая используется в Delphi, можно использовать следующий подход:

  1. Запустить rsvars.bat, который устанавливает переменные среды для Delphi.
  2. Программно извлечь версию .NET Framework из установленной директории, используемой rsvars.bat. Например, с помощью следующего кода на Object Pascal:
var
  FrameworkDir: string;
  ToolsVersion: string;
begin
  FrameworkDir := GetEnv('FrameworkDir'); // Получаем директорию .NET Framework
  // Извлекаем версию из названия директории
  ToolsVersion := Copy(ExtractFileDir(FrameworkDir), 4, 3); // Получаем 'v4.0'
  // Дополнительные действия с ToolsVersion...
end;
  1. Использовать полученную версию toolsversion в команде msbuild.

Альтернативное решение

Также было отмечено, что проблема может быть связана с багом в Delphi 11.1, о чём свидетельствуют несколько отчётов в системе контроля качества (RSP-37855, RSP-38466, RSP-38467). В качестве альтернативного решения предлагается добавить параметр /tv:4.0 в команду msbuild или изменить атрибут ToolsVersion в файле проекта .dproj.

Заключение

Автоматическое определение версии toolsversion позволяет обеспечить гибкость и удобство в процессе сборки проектов в Delphi 11.1. Использование программного кода на Object Pascal для извлечения необходимой информации из окружения системы - эффективный способ достижения этой цели.

Создано по материалам из источника по ссылке.

В контексте обсуждается проблема автоматической настройки версии .NET Framework (toolsversion) для сборки проектов в среде Delphi 11.1, чтобы обеспечить корректную работу скриптов сборки после обновления версии Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:56:53/0.0037109851837158/0