В настоящее время мы переходим от Delphi XE к Delphi XE3, и у нас возникают серьезные проблемы с нашими событиями предварительной сборки.
Наши события предварительной сборки выглядят следующим образом:
SubWCRev "<SVN-Path>" "<InputFile>" VersionInfo.rc
brcc32 -foProject.res VersionInfo.rc
(обратите внимание, что эти две команды появляются на отдельных строках и содержат абсолютные пути в наших "реальных" командах) то есть мы сначала извлекаем текущую версию SVN из рабочей копии, записываем эту информацию в VersionInfo.rc, а затем используем компилятор ресурсов Borland для создания файла ресурсов.
Это отлично работало в предыдущих версиях Delphi, но всякий раз, когда мы открываем параметры проекта в XE3, XE3 преобразует его в:
SubWCRev "<SVN-Path>" "<InputFile>" VersionInfo.rc &brcc32 -foProject.res VersionInfo.rc
(обратите внимание, что это одна строка, обе команды разделены одним амперсандом). что приводит к сбою сборки.
Наше текущее решение состоит в том, чтобы вручную изменить это на
SubWCRev "<SVN-Path>" "<InputFile>" VersionInfo.rc && brcc32 -foProject.res VersionInfo.rc
то есть. мы используем два амперсанда для выполнения второй команды, если первая успешно выполнена.
Это работает, но только до тех пор, пока мы снова не изменим параметры проекта. Delphi XE3 всегда испортил событие предварительной сборки: - (
Кто-нибудь знает решение/обходное решение для этого? Я думаю, мы могли бы написать простой инструмент командной строки, который вызывает SubWCRev и brcc32, но я бы предпочел более простое решение.
ОБНОВЛЕНИЕ. Шаги по легкому воспроизведению этой ошибки
IDE
- Файл → Создать → Приложение форм VCL (Delphi)
- Build Project1
- Файл → Сохранить все, сохранить предлагаемые имена Unit1.pas/Project1.dpr
- Проект → Параметры
- выберите цель "Все конфигурации - все платформы"
-
События сборки → события предварительной сборки, введите это (две строки, извините за форматирование):
echo one > out.txt
echo two → out.txt
-
Создайте проект из среды IDE
- Сохранить и закрыть проект
Командная строка RAD Studio
- Перейдите в каталог проекта
- msbuild Project1.dproj = > OK
IDE
- Проект → Параметры
- нажмите "Путь поиска"
- Введите "a"
- удалить "a"
- нажмите ok
- нажмите "Путь поиска"
- Проект → Проект сборки
- Сохранить и закрыть проект
Командная строка RAD Studio
- msbuild Project1.dproj = > ОШИБКА