Используя константы компилятора в событиях сборки

Там должен так или иначе использовать константы компилятора в Событиях Сборки в Visual Studio - VB.NET? (особенно в событиях Post-Build)

Сценарий

Если TEST_EDITION=TRUE определяется я хочу выполнить исполняемый файл во время события Post-Build поэтому, если это FALSE затем я выполню что-то еще.

Это может использоваться для создания различных установщиков для различных выпусков.

P.S. Прежде чем кто-то предложит: Нет я не хочу использовать nant, msbuild или что-то как этот

5
задан dr. evil 27 February 2010 в 13:22
поделиться

3 ответа

Да, макрос $ (DefineConstants) доступен и может быть протестирован в событии сборки. Например, Project + Compile, Advanced Compile Options, Custom constants = Test можно протестировать следующим образом:

if /i "$(DefineConstants)" NEQ "TEST" goto skiptest
echo Setting up for test environment
:skiptest

Более сложные пользовательские константы, такие как Test = TRUE или составные константы, необходимо анализировать по-другому. По общему признанию, я быстро отказался от попыток понять, как использовать ужасную команду FOR.

11
ответ дан 13 December 2019 в 19:25
поделиться

Вы пробовали MsBuild PostEvents? это отрывок из .csproj ... но то же самое относится к файлам vbproj

  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)$(AssemblyName).dll" DestinationFolder="$(BinariesFolder)" ContinueOnError="true" />
  </Target>

Вы можете использовать его с TaskExec Target, который позволяет вам запускать командный файл или исполняемый файл.

<Target Name="DoSomething">
    <Exec Command="D:\DoSomething.exe"/>
</Target>
0
ответ дан 13 December 2019 в 19:25
поделиться

Не уверен в синтаксисе Visual Basic, но следующий трюк может быть использован C++: файл global_inc.bat читается так:

SET PARAMETER=TRUE

Это может быть введено пакетным скриптом, который вызывается в событии post-build. Код на C++ использовал этот файл следующим образом:

#define PARAMETER const int parameter
#define SET /**/
#include "global_inc.bat"
;
#undef PARAMETER

Шаг постбилда выглядел так:

call global_inc.bat
if "%PARAMETER%" == "TRUE" echo True

Другая возможность заключается в том, чтобы на шаге пребилда генерировался файл .vb, а также файл конфигурации, используемый на шаге постбилда.

0
ответ дан 13 December 2019 в 19:25
поделиться