Pergunta

Existe alguma maneira de usar constantes do compilador em Build Events no Visual Studio - VB.NET?(especialmente em eventos pós-construção)

Cenário

Se TEST_EDITION=TRUE está definido, quero executar um executável durante o evento Pós-Build, então se estiver FALSE então vou executar outra coisa.

Isto pode ser usado para criar diferentes instaladores para diferentes edições.

P.S.Antes que alguém sugira:Não, eu não quero usar nant, msbuild ou algo parecido

Foi útil?

Solução

Sim, a macro $ (DefinEcoNStants) está disponível e pode ser testada em um evento de construção. Por exemplo, Project + Compile, opções avançadas de compilação, constantes personalizadas = teste pode ser testado assim:

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

Constantes personalizadas mais complicadas como teste = constantes verdadeiras ou compostas precisam ser analisadas de maneira diferente. É certo que eu rapidamente desisti de tentar descobrir como usar o horrível Para comando.

Outras dicas

Você já experimentou o MsBuild PostEvents?este é um extrato de um .csproj ...mas o mesmo se aplica aos arquivos 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>

Você pode usá-lo com o TaskExec Target, que permite executar um arquivo em lote ou um executável.

<Target Name="DoSomething">
    <Exec Command="D:\DoSomething.exe"/>
</Target>

Não tenho certeza sobre a sintaxe do Visual Basic, mas o seguinte truque pode ser usado por C ++: o arquivo global_inc.bat lê como:

SET PARAMETER=TRUE

Isso pode ser inserido por um script em lote que foi chamado no evento pós-construção. O código C ++ usou o arquivo da seguinte forma:

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

A etapa pós -construção parecia assim:

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

Outra possibilidade seria o passo pré -construído para gerar uma .vb Arquivo, bem como um arquivo de configuração usado na etapa Postbuild.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top