Это должно быть сделано в качестве шага перед сборкой.
В какой-то момент в прошлом я разработал этот командный файл, чтобы выполнить трюк для проекта C ++:
@echo off
SETLOCAL
SET CPP_BUILD_AUTOINC_CONST=
SET CPP_BUILD_AUTOINC_BUILD=
SET CPP_BUILD_AUTOINC_FNAME=
SET CPP_BUILD_AUTOINC_FILE=build_autoinc.conf
IF NOT "%1"=="" SET CPP_BUILD_AUTOINC_FILE=%1
IF NOT EXIST "%CPP_BUILD_AUTOINC_FILE%" GOTO noversionfile
:configfromfile
FOR /F "tokens=1,2 delims== " %%i IN (%CPP_BUILD_AUTOINC_FILE%) DO SET %%i=%%j
if "%CPP_BUILD_AUTOINC_CONST%"=="" goto noconstname
if "%CPP_BUILD_AUTOINC_BUILD%"=="" goto nobuildnum
if "%CPP_BUILD_AUTOINC_FNAME%"=="" goto nofilename
echo Auto-incrementing build number in %CPP_BUILD_AUTOINC_FNAME%...
SET /A CPP_BUILD_AUTOINC_BUILD = %CPP_BUILD_AUTOINC_BUILD% + 1
>%CPP_BUILD_AUTOINC_FILE% echo CPP_BUILD_AUTOINC_CONST=%CPP_BUILD_AUTOINC_CONST%
>>%CPP_BUILD_AUTOINC_FILE% echo CPP_BUILD_AUTOINC_BUILD=%CPP_BUILD_AUTOINC_BUILD%
>>%CPP_BUILD_AUTOINC_FILE% echo CPP_BUILD_AUTOINC_FNAME=%CPP_BUILD_AUTOINC_FNAME%
>%CPP_BUILD_AUTOINC_FNAME% echo #define %CPP_BUILD_AUTOINC_CONST% %CPP_BUILD_AUTOINC_BUILD%
goto end
:noconstname
:nobuildnum
echo CPP_BUILD_AUTOINC : error
exit /b 2
:noversionfile
echo CPP_BUILD_AUTOINC : error: version file %CPP_BUILD_AUTOINC_FILE% does not exist
exit /b 1
:end
exit /b 0
Идея такова:
У вас есть файл (build_autoinc.conf) в ваших источниках.Этот файл содержит конфигурацию для конкретного приложения (чтобы пакетный файл можно было повторно использовать без изменений).
build_autoinc.conf
выглядит следующим образом:
CPP_BUILD_AUTOINC_CONST=VERSION
CPP_BUILD_AUTOINC_BUILD=1
CPP_BUILD_AUTOINC_FNAME=version.cpp
Таким образом, когда запускается пакетный файл, он создает (перезаписывает) файл version.cpp
с содержимым:
#define VERSION 1
, а также увеличивает номер сборки в build_autoinc.conf
.
. Вы можете адаптировать его для работы с C #довольно легко спроектировать и установить шаг предварительной сборки для запуска командного файла.Однако, предупреждающее слово: поскольку version.cpp
(или ваш эквивалент) перезаписывается перед каждой сборкой, система сборки ВСЕГДА будет думать, что, поскольку файлы изменились, необходимо сделать новую сборку.Так что вы не можете, например, нажать «build», чтобы просто проверить, является ли ваш двоичный файл текущим, и пропустить процесс сборки, если он есть.