Question

Quelqu'un sait-il comment obtenir le nom de la cible TARGET (/ t) appelée à partir de la ligne de commande MSBuild? Il existe quelques types de cibles pouvant être appelées et je souhaite utiliser cette propriété dans une notification aux utilisateurs.

Exemple:

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

Je souhaite accéder aux mots cibles ApplicationDeployment dans mon fichier .Proj.

Y a-t-il une propriété à laquelle je peux accéder? Avez-vous une idée de comment faire cela?

MODIFIER: je ne veux pas être obligé de transmettre également une propriété pour l'obtenir.

UPDATE: Ceci est basé sur des scripts de déploiement utilisant des scripts MSBuild. Mon serveur de construction n'est pas utilisé pour déployer du code, mais uniquement pour la construction. Le serveur de construction lui-même a des notifications de construction dans lesquelles il est possible d’activer.

Était-ce utile?

La solution 2

J'ai trouvé la réponse!

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

Je voudrais donner un crédit partiel à Apathetic. Vous ne savez pas comment faire cela.

Autres conseils

Je ne sais pas comment faire exactement ce que vous demandez, mais pouvez-vous passer cette chaîne à l'aide de l'option / p?

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

La seule autre façon de le faire consiste à utiliser une propriété conditionnelle dans chaque cible et à établir ainsi la première cible à appeler.

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

...
</Target>

Il n'y a aucun moyen de faire cela (à ma connaissance). MSBuild ne possède pas de propriété pour la liste des cibles à construire.

Cependant, si vous trouvez un moyen, gardez à l'esprit qu'il ne s'agit peut-être pas d'une cible unique, mais d'une liste de cibles à construire.

Je vous recommande d'utiliser un serveur tel que CCNET pour gérer les exécutions de versions et les notifications. Bien sûr, vous pouvez utiliser votre script MSBuild pour envoyer des notifications, mais ce domaine appartient au serveur de génération.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top