Usando constantes do compilador em eventos de compilação
-
23-09-2019 - |
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
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.