gpt4 book ai didi

msbuild - 如何为我的 TransformXml 任务启用 "Treat Warnings as Errors"?

转载 作者:行者123 更新时间:2023-12-05 01:06:09 27 4
gpt4 key购买 nike

我正在使用以下(高度简化的)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): warning : No element in the source document matches '/configuration/appSettings/add[@key='MyUnknownVariable']'[C:\MyApp\DevOps\ConfigBundle.msbuild]



虽然我们收到警告很好,但我真的需要这是一个错误,因为这将成为我们自动化构建和部署过程的一部分,因此在应用程序停止工作之前,任何人都不太可能发现它。

我想要一种将这些警告视为错误的方法。根据我在互联网上看到的一些内容,我尝试了一个带有两个不同 TreatWarningsAsErrors 符号的 PropertyGroup:
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>

我试过在命令行上设置它(我怀疑与上面的相同):
C:\MyApp\DevOps>msbuild /p:TreatWarningsAsErrors="true" ConfigBundle.msbuild

不幸的是,这些都不起作用;警告继续发送。基于这一点,我猜测这取决于单个 MSBuild 任务是否尊重 TreatWarningsAsErrors 指令,在这种情况下,TransformXml 没有。

如果我能找到一种方法来了解最后一个任务是否发出警告,例如,我可以执行以下操作:
<Message Text="##teamcity[message text='Config Transform Failed!' status='ERROR']" Condition="$WarningOccurred == 'true'" />

它并不完全完美,但这肯定会阻止构建成功完成。希望有人对此有一个有用的建议。

最佳答案

TreatWarningsAsErrors



用于指示不同语言的编译器将警告视为错误

CodeAnalysisTreatWarningsAsErrors



用于指示代码分析将警告视为错误。

没有将所有 MsBuild 警告视为错误的通用开关。通常,MsBuild 的调用者会将记录器传递给 MsBuild 以检测是否发生了警告,例如 Team Build 就是这样做的。然后调用工具可以通过或失败整体构建结果。

关于msbuild - 如何为我的 TransformXml 任务启用 "Treat Warnings as Errors"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com