MSBUILD- 대상을 명령 줄에서 호출합니다
-
02-07-2019 - |
문제
MSBuild 명령 줄에서 호출 된 대상 (/t)의 이름을 얻는 방법을 아는 사람이 있습니까? 호출 할 수있는 몇 가지 유형의 대상이 있으며 사용자에게 알림에 해당 속성을 사용하고 싶습니다.
예시:
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>
나는 냉담한 것에 부분적인 신용을주고 싶습니다. 어떻게 해야할지 모르겠습니다.
다른 팁
당신이 요구하는 일을 정확히 수행하는 방법을 잘 모르겠지만 /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 스크립트에 대한 작업을 수행하여 알림을 전송할 수 있지만 해당 도메인은 빌드 서버에 속합니다.