Msbuild - Obtendo o alvo chamado da linha de comando
-
02-07-2019 - |
Pergunta
Alguém sabe como obter o nome do destino (/t) chamado da linha de comando msbuild? Existem alguns tipos de metas que podem ser chamadas e eu quero usar essa propriedade em uma notificação para os usuários.
Exemplo:
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV
Eu quero acesso às palavras -alvo ApplicationDeployment
No meu arquivo .proj.
Existe uma propriedade que eu possa acessar? Alguma pista de como fazer isso?
EDITAR: Eu não quero ter que passar também em uma propriedade para conseguir isso.
ATUALIZAR: Isso é baseado em scripts de implantação usando scripts msbuild. Meu servidor de construção não é usado para implantar código, apenas para construção. O próprio servidor de construção possui notificações de construção que podem ser optadas.
Solução 2
Eu encontrei a resposta!
<Target Name="ApplicationDeployment" >
<CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
<Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
</CreateProperty>
Eu gostaria de dar crédito parcial à apática. Não tenho certeza de como fazer isso.
Outras dicas
Não tenho certeza de como fazer exatamente o que você pergunta, mas você poderia passar essa string usando a opção /p?
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment
A única outra maneira de ver isso é usar uma propriedade condicional em cada destino e, assim, estabelecer o primeiro alvo a ser chamado.
<Target Name="ApplicationDeployment">
<PropertyGroup>
<InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>
...
</Target>
Não há como fazer isso (que eu conheço). O MSBuild não possui uma propriedade para a lista de metas solicitadas para construir.
No entanto, se você encontrar uma maneira, lembre -se de que pode não ser um único alvo, mas uma lista de alvos a serem construídos.
Eu recomendo usar um servidor como o CCNET para lidar com execuções de construção e notificação. Claro, você pode fazer as coisas com o seu script msbuild para enviar notificadoras, mas esse domínio pertence ao servidor de construção.