MSBuild - Получение целевого объекта, вызываемого из командной строки

StackOverflow https://stackoverflow.com/questions/150047

Вопрос

Кто-нибудь знает, как получить имя ЦЕЛЕВОГО объекта (/t), вызываемого из командной строки MSBuild?Есть несколько типов целевых объектов, которые можно вызывать, и я хочу использовать это свойство в уведомлении для пользователей.

Пример:

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

Мне нужен доступ к целевым словам ApplicationDeployment в моем файле .Proj.

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

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

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

Это было полезно?

Решение 2

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

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

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

Другие советы

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

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

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

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

...
</Target>

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top