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

时间:2010-09-08 20:53:00

标签: visual-studio msbuild continuous-integration compilation teamcity

在我们的连续集成服务器(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忽略生成文件中缺少的注释?

EDITED

进一步挖掘: 在Visual Studio解决方案中,我们选中了“警告为错误”,但我们还添加了“抑制警告”文本框中列出的错误1591。 MSBuild似乎没有拿起那个“压制警告”文本框并且无法构建。我能做什么?

再次编辑 问题是MSBuild正在针对任何CPU(并且在“任何CPU”配置中我们没有抑制错误1591)。一旦我们更改了任何CPU以排除错误1591,它就开始在构建服务器上正确构建。感谢那些帮助过的人。

3 个答案:

答案 0 :(得分:3)

不,MSBuild对XML评论并不挑剔。无论您使用何种代码分析工具。猜测像StyleCop这样的东西。它确实抱怨这个确切的问题,它不是很聪明,与Windows Forms项目模板相同。

如果在应用于构建服务器时在开发人员上强制执行相同类型的构建规则,则只能解决此问题。因为它们中的一个将编辑它在Mumble.Designer.cs文件中的do-not-edit代码并应用[GeneratedCode]属性。它现在不在那里。

这是一个政治问题,我无法真正帮助你。微软的团队也不是在不同的时间和不同的建筑物上工作的。但如果你要求他们解决问题,你可以指望开发者大声吠叫。

使其保持一致。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

对我来说,问题只发生在带有SOAP服务引用的dll项目上。当我在Built选项卡上打开项目设置时,我注意到一个名为&#34; XML Documentation file&#34;的复选框。检查。这就是迫使SOAP服务的每个公开成员都发表评论的原因!

This checkbox enforces /doc option in my build settings