Pregunta

¿Alguien sabe cómo obtener el nombre de TARGET (/ t) llamado desde la línea de comando de MSBuild? Hay algunos tipos de objetivos a los que se puede llamar y quiero usar esa propiedad en una notificación a los usuarios.

Ejemplo:

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV

Deseo acceder a las palabras de destino ApplicationDeployment en mi archivo .Proj.

¿Hay alguna propiedad a la que pueda acceder? ¿Alguna idea de cómo hacer esto?

EDITAR: no quiero tener que pasar también una propiedad para obtener esto.

ACTUALIZACIÓN: Esto se basa en scripts de implementación que usan scripts de MSBuild. Mi servidor de compilación no se usa para implementar código, solo para compilar. El servidor de compilación en sí tiene notificaciones de compilación en las que se puede optar.

¿Fue útil?

Solución 2

¡Encontré la respuesta!

<Target Name="ApplicationDeployment" >
    <CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
      <Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
    </CreateProperty>

Me gustaría dar crédito parcial a la apática. No estoy seguro de cómo hacerlo.

Otros consejos

No estoy seguro de cómo hacer exactamente lo que pides, pero ¿podrías pasar esa cadena usando la opción / p?

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment

La única otra forma que puedo ver para hacerlo es usar una propiedad condicional en cada objetivo, y así establecer el primer objetivo a invocar.

<Target Name="ApplicationDeployment">
<PropertyGroup>
  <InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>

...
</Target>

No hay forma de hacer esto (que yo sepa). MSBuild no tiene una propiedad para la lista de objetivos solicitados para compilar.

Sin embargo, si encuentra una manera, tenga en cuenta que podría no ser un solo objetivo, sino una lista de objetivos para construir.

Recomiendo usar un servidor como CCNET para manejar ejecuciones de compilación y notificaciones. Claro, puede hacer cosas a su script MSBuild para enviar notificaciones, pero ese dominio pertenece al servidor de compilación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top