MSBuild - Получение целевого объекта, вызываемого из командной строки
-
02-07-2019 - |
Вопрос
Кто-нибудь знает, как получить имя ЦЕЛЕВОГО объекта (/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 для отправки уведомлений, но этот домен принадлежит серверу сборки.