Событие предварительной сборки Delphi не выполняется ДО компиляции

Я занят автоматизацией наших сборок, чтобы включить номер ревизии SVN. Мы'Я использую Delphi 2010. Я добавил событие перед сборкой, вызывающее пакетный файл, который вводит номер редакции svn (считанный из файла записей в каталоге .svn) и указанный номер версии в aVersionInfo.rc, который скомпилирован с моим проектом. , Событие перед сборкой выглядит так:

call SetVersionInfo.bat 6 5 4

... и командный файл (надеюсь, кто-то найдет это полезным) ...

@ECHO OFF
SETLOCAL
setLocal EnableDelayedExpansion

SET _myVar=0
FOR /F %%G in (.svn\entries.) DO (
IF !_myVar! LSS 3 SET /A _myVar+=1 & SET _svn_dir_rev=%%G
)

ECHO 1 VERSIONINFO > aVersionInfo.rc
ECHO. FILEVERSION %1,%2,%3,%_svn_dir_rev%   >> aVersionInfo.rc
ECHO. PRODUCTVERSION 1   >> aVersionInfo.rc
ECHO. FILEOS VOS__WINDOWS32   >> aVersionInfo.rc
ECHO. FILETYPE VFT_APP   >> aVersionInfo.rc
ECHO. BEGIN   >> aVersionInfo.rc
ECHO.   BLOCK "StringFileInfo"   >> aVersionInfo.rc
ECHO.   BEGIN   >> aVersionInfo.rc
ECHO.     BLOCK "080904b0"   >> aVersionInfo.rc
ECHO.     BEGIN   >> aVersionInfo.rc
ECHO.       VALUE "CompanyName","COMPANY\000"   >> aVersionInfo.rc
ECHO.       VALUE "FileDescription","APP\000"   >> aVersionInfo.rc
ECHO.       VALUE "FileVersion","%1.%2.%3.%_svn_dir_rev%\000"   >> aVersionInfo.rc
ECHO.       VALUE "InternalName","APP\000"   >> aVersionInfo.rc
ECHO.       VALUE "LegalCopyright","Copyright APP\000"   >> aVersionInfo.rc
ECHO.       VALUE "LegalTrademarks","APP\000"   >> aVersionInfo.rc
ECHO.       VALUE "OriginalFilename","APP.exe\000"   >> aVersionInfo.rc
ECHO.       VALUE "ProductName","APP\000"   >> aVersionInfo.rc
ECHO.       VALUE "ProductVersion,"1\000"   >> aVersionInfo.rc
ECHO.       VALUE "Comments","Compiled on %date% by %username%\000"   >> aVersionInfo.rc
ECHO.     END   >> aVersionInfo.rc
ECHO.   END   >> aVersionInfo.rc
ECHO.   BLOCK "VarFileInfo"   >> aVersionInfo.rc
ECHO.   BEGIN   >> aVersionInfo.rc
ECHO.     VALUE "Translation", 0x0809 1200   >> aVersionInfo.rc
ECHO.   END   >> aVersionInfo.rc
ECHO. END   >> aVersionInfo.rc
ENDLOCAL

Пакетный файл выполняется как часть компиляции, aVersionInfo.rc обновляется, aVersionInfo.res перекомпилируется, но по какой-то причине новый файл res не используется для компиляции исполняемого файла. Однако он обновляется во время чистой сборки или если я компилирую второй раз. Кажется, проверка на наличие изменений в файлах rc происходит до "до»-строить события называются. Что на самом деле делает его событием среднего уровня. Или я что-то упустил?

Я попытался удалить файл aVersionInfo.res как еще одно событие перед сборкой, но потом компилятор жалуется, что этот файл отсутствует. Может ли быть так, что

{$R 'aVersionInfo.res' 'aVersionInfo.rc'}

линия находится не в том месте?

Ответы на вопрос(5)

Ваш ответ на вопрос