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 для отправки уведомлений, но этот домен принадлежит серверу сборки.