:TransformXml 작업에서 "경고를 오류로 처리"를 활성화하려면 어떻게해야합니까? 나는 다음 (크게 단순화)은 MSBuild 스크립트를 사용하고
<?xml version="1.0"?>
<Project DefaultTargets="Transform" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="Transform">
<TransformXml Source="../web.config"
Transform="Config\Production\webapp.xml"
Destination="Config\Build\Production\web.config" />
</Target>
</Project>
이 MSDeploy을 통해 갈 필요없이 하나의 구성 파일을 변환하는 좋은 작품.
그러나 Transform에서 변수의 철자를 잘못 입력했다고 가정 해 보겠습니다.
C : \ MyApp \ DevOps \ Config \ Production \ webapp.xml (15,6) : 경고 : 소스 문서의 어떤 요소도 '/ configuration/appSettings/add [@]와 일치하지 않습니다. 키 = 'MyUnknownVariable'] [C : \ MyApp를 \ 개발 운영 팀 \ ConfigBundle.msbuild]
우리는이에 대한 경고를 얻을이 좋은이지만
, 난 정말이의 일부가 될 것이기 때문에 오류가 수 있도록이 필요 우리의 자동화 된 빌드 및 배포 프로세스는 응용 프로그램이 작동을 멈출 때까지 아무도 발견하지 않을 것입니다.나는이 경고를 오류로 취급하고 싶습니다. 내가 인터넷에서 본 몇 가지를 바탕으로, 나는 두 개의 서로 다른 TreatWarningsAsErrors 기호와 PropertyGroup을 시도했다 : 나는 의심 명령 줄 (에이 설정을 시도했습니다
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
은 동일 이상) :
C:\MyApp\DevOps>msbuild /p:TreatWarningsAsErrors="true" ConfigBundle.msbuild
위의 작업은 아무 것도 없습니다. 경고가 계속 전송됩니다. 이를 바탕으로 TreatWarningsAsErrors 지시문을 존중하는 것이 개별 MSBuild 작업에 미치지 만 TransformXml은 그렇지 않습니다.
<Message Text="##teamcity[message text='Config Transform Failed!' status='ERROR']" Condition="$WarningOccurred == 'true'" />
그것은 정확히 완벽 하진하지만 확실히 성공적으로 마무리에서 빌드를 중지 할 것 :
내가 마지막 작업이 내가 좋아하는 뭔가를 할 수 예를 들어 경고를 던졌다 경우 배울 수있는 방법을 찾을 수 있다면
. 다행히 누군가가 이것에 대한 도움이 될 제안을 할 것입니다.
TransformXml 작업을 만들고 실행하는 래퍼 사용자 지정 MSBuild 작업을 만들 수 있으며 경고가 기록되면 오류로 다시 기록 할 수 있습니다. 또한 TransformXml 클래스를 디 컴파일하여 경고를 오류로 처리하는 방법이 있는지 확인하는 데 도움이 될 수 있습니다 (특히 ToolTask에서 파생 된 경우). – makhdumi
그래, 그게 내가 끝내었던 접근법이야. Powershell 스크립트로 감쌌다. 당신의 방법은 분명히 "깨끗한"것이고, 이후 버전의 배포 스크립트에서는이를 잘 구현할 것입니다. –