2008-09-29 2 views
13

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

Пример:

MSBuild Project.proj /т: ApplicationDeployment/р: Environment = DEV

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

Есть ли у меня доступ к недвижимости? Есть ли подсказки, как это сделать?

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

UPDATE: Это основано на сценариев развертывания с использованием скриптов MSBuild. Мой сервер сборки не используется для развертывания кода, только для построения. Сам сервер сборки имеет встроенные уведомления, которые могут быть выбраны.

ответ

6

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

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

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

8

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

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

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

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

... 
</Target> 
+0

Я мог бы, но я хотел бы знать, как получить доступ к самой цели. – ferventcoder 2008-09-29 19:30:30

+0

Спасибо, что согласился. Я прочитал документацию MSBuild, чтобы проверить, и я не верю, что MSBuild предлагает эту информацию. Обходной путь. – 2008-09-29 20:11:01

+0

Я ценю обходное решение – 2008-09-29 20:17:51

3

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

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

0

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

Смежные вопросы