MSBuild - получение цели из командной строки - PullRequest
14 голосов
/ 29 сентября 2008

Кто-нибудь знает, как получить имя TARGET (/ t), вызываемого из командной строки MSBuild? Существует несколько типов целей, которые можно вызывать, и я хочу использовать это свойство в уведомлении для пользователей.

Пример:

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

Я хочу получить доступ к целевым словам ApplicationDeployment в моем файле .Proj.

Есть ли свойство, к которому я могу получить доступ? Любая подсказка, как это сделать?

РЕДАКТИРОВАТЬ: Я не хочу, чтобы мне также пришлось передать свойство, чтобы получить это.

ОБНОВЛЕНИЕ: Это основано на сценариях развертывания с использованием сценариев MSBuild. Мой сервер сборки не используется для развертывания кода, только для сборки. Сам сервер сборки имеет уведомления о сборке, в которые можно включить.

Ответы [ 4 ]

10 голосов
/ 29 сентября 2008

Я не уверен, как сделать именно то, что вы просите, но не могли бы вы передать эту строку с помощью параметра / p?

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

Единственный другой способ сделать это - использовать условное свойство в каждой цели и, таким образом, установить первую цель, которая будет вызвана.

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

...
</Target>
7 голосов
/ 30 сентября 2008

Я нашел ответ!

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

Я бы хотел отдать должное апатичным. Не уверен, как это сделать.

4 голосов
/ 29 сентября 2008

Нет способа сделать это (о чем я знаю). У MSBuild нет свойства для списка целей, запрошенных для построения.

Однако, если вы найдете способ, имейте в виду, что это может быть не одна цель, а список целей для построения.

0 голосов
/ 30 сентября 2008

Я бы рекомендовал использовать сервер, такой как CCNET, для обработки выполнений сборки и уведомлений. Конечно, вы можете делать что-то со своим сценарием MSBuild для отправки уведомлений, но этот домен принадлежит серверу сборки.

...