MSBuild - Richiama la destinazione dalla riga di comando
-
02-07-2019 - |
Domanda
Qualcuno sa come ottenere il nome di TARGET (/ t) chiamato dalla riga di comando di MSBuild? Esistono alcuni tipi di target che possono essere chiamati e desidero utilizzare quella proprietà in una notifica agli utenti.
Esempio:
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV
Voglio accedere alle parole target ApplicationDeployment
nel mio file .Proj.
Esiste una proprietà a cui posso accedere? Qualche idea su come farlo?
MODIFICA: Non voglio passare anche in una proprietà per ottenerlo.
AGGIORNAMENTO: basato su script di distribuzione utilizzando gli script di MSBuild. Il mio server di build non viene utilizzato per la distribuzione di codice, ma solo per la creazione. Il server di compilazione stesso ha notifiche di compilazione che possono essere attivate.
Soluzione 2
Ho trovato la risposta!
<Target Name="ApplicationDeployment" >
<CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
<Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
</CreateProperty>
Vorrei dare un parziale credito all'apatico. Non sono sicuro di come farlo.
Altri suggerimenti
Non sono sicuro di come fare esattamente quello che chiedi, ma potresti passare quella stringa usando l'opzione / p?
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment
L'unico altro modo in cui posso vederlo è utilizzare una proprietà condizionale in ciascun target e quindi stabilire il primo target da invocare.
<Target Name="ApplicationDeployment">
<PropertyGroup>
<InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>
...
</Target>
Non c'è modo di farlo (di cui sono a conoscenza). MSBuild non ha una proprietà per l'elenco di destinazioni richieste da compilare.
Tuttavia, se trovi un modo, tieni presente che potrebbe non essere un singolo obiettivo, ma un elenco di obiettivi da costruire.
Consiglio di utilizzare un server come CCNET per gestire le esecuzioni di build e le notifiche. Certo, puoi fare cose con il tuo script MSBuild per inviare notifiche, ma quel dominio appartiene al server di compilazione.