MSBuild - получение целевого вызова из командной строки
Кто-нибудь знает, как получить имя TARGET (/t), вызванное из командной строки MSBuild? Существует несколько типов целевых объектов, которые можно вызвать, и я хочу использовать это свойство в уведомлении пользователей.
Пример:
msbuild Project.proj /t: ApplicationDeployment/p: Environment = DEV
Я хочу получить доступ к целевым словам ApplicationDeployment в моем файле .Proj.
Есть ли свойство, к которому я могу получить доступ? Любой ключ, как это сделать?
EDIT: Я не хочу также передавать свойство, чтобы получить это.
ОБНОВЛЕНИЕ:. Это основано на сценариях развертывания с использованием сценариев MSBuild. Мой сервер сборки не используется для развертывания кода, только для построения. Сам сервер сборки имеет встроенные уведомления, которые могут быть выбраны.
Ответы
Ответ 1
Я нашел ответ!
<Target Name="ApplicationDeployment" >
<CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
<Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
</CreateProperty>
Я хотел бы отдать должное апатичному. Не знаете, как это сделать.
Ответ 2
Я не уверен, как делать то, что вы просите, но можете ли вы передать эту строку с помощью параметра /p?
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment
Единственный способ, которым я могу это сделать, - использовать условное свойство в каждой цели и тем самым установить первую цель, которую нужно вызвать.
<Target Name="ApplicationDeployment">
<PropertyGroup>
<InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>
...
</Target>
Ответ 3
Нет никакого способа сделать это (что я знаю). MSBuild не имеет свойства для списка целей, запрошенных для сборки.
Однако, если вы найдете способ, имейте в виду, что это может быть не одна цель, а вместо этого список целей для сборки.
Ответ 4
Я бы рекомендовал использовать такой сервер, как CCNET, для обработки исполнения и уведомления. Конечно, вы можете сделать что-то в своем MSBuild script для отправки уведомлений, но этот домен принадлежит серверу сборки.