如何仅针对生成的文件禁用“警告作为错误”?(MSBuild)

5
在我们的持续集成服务器上(Teamcity 5.1.3),我们有一个msbuild脚本,自动构建我们的应用程序。
当我们在Visual Studio中启用“警告视为错误”时,它能够成功编译(它会忽略“*.designer.cs”文件中的方法)。但是在构建服务器上,我们总是收到以下错误:
[(Rebuild target(s)):] somefile.Designer.cs(XX, XX): error CS1591: Warning as Error: Missing XML comment for publicly visible type or member...

正在使用的MSBuild脚本如下所示:

<MSBuild Projects="proj\$(ProjectName).sln"
         Targets="Clean;Rebuild"
         Properties="Configuration=Release"
         StopOnFirstFailure="True">
</MSBuild>

我能理解为什么会这样,但一定有办法告诉msbuild忽略生成文件中缺失的注释吧?
编辑: 进一步挖掘: 在Visual Studio Solution中,我们勾选了“警告作为错误”,但我们还将错误1591列在“抑制警告”文本框中。MSBuild似乎没有捕捉到“抑制警告”文本框,因此构建失败。我该怎么办?
再次编辑: 问题是MSBuild针对任何CPU(在“ANY CPU”配置中,我们没有禁止错误1591)进行了目标设置。一旦我们将ANY CPU更改为排除错误1591,就可以在构建服务器上正确构建了。感谢那些提供帮助的人。
3个回答

4

您可以通过在msbuildcall中添加以下属性 nowarn="1591,1573" 来忽略注释警告。

<MSBuild Projects="proj\$(ProjectName).sln"
     Targets="Clean;Rebuild"
     Properties="Configuration=Release;nowarn=1591,1573"
     StopOnFirstFailure="True">
</MSBuild>

3
不,MSBuild对XML注释并不挑剔。任何代码分析工具都有可能会挑剔,比如StyleCop。它确实会抱怨这个确切的问题,但它并不是很聪明,与Windows Forms项目模板差不多。
只有当你对开发人员施加与构建服务器相同的构建规则时,你才能解决这个问题。因为需要有人编辑不允许编辑的代码,它在Mumble.Designer.cs文件中,并应用[GeneratedCode]属性。现在没有这个属性。
这是一个政治问题,我无法真正帮助你解决。也不是微软在不同时间和不同建筑物工作的团队可以解决的问题。但是如果你要求他们解决问题,你可以指望开发人员大声抗议。
保持一致性。

我已经编辑了我的问题以反映我找到的新信息。虽然我仍然有点困惑,但你的答案帮助我朝着正确的方向挖掘。 - Benoittr
尽管答案并没有直接回答我的问题(而且一开始我的问题也不是很清楚...请看编辑记录),但我还是接受了你的答案,因为它在某种程度上帮助我找到了我想要的答案。 - Benoittr

0
对我来说,问题只发生在一个带有SOAP服务引用的dll项目上。当我打开构建选项卡上的项目设置时,我注意到一个名为“XML文档文件”的复选框被选中了。这就是强制要求SOAP服务的每个公开成员都必须有注释的原因!

This checkbox enforces /doc option in my build settings


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接