禁止生成c#代码的警告

我为我的VS项目打开了“将警告视为错误”,这意味着我因错过的文档而出错(这个特定项目的提醒很好)。

但是,部分代码是由一个自定义工具生成的,该工具不会插入xml文档,因此我正在寻找远离忽略生成代码的缺失xml文档,而不是整个项目。 我对生成的实际文件没有任何影响,并且无法在文件中真正插入任何内容(因为它经常被工具重新生成)所以我在生成的文件之外寻找存在的东西(生成的类是部分的,如果这有帮助的话)

编辑:请参阅注释,表明这不适用于C#4.我不清楚它是否在早期版本的编译器中有效。 C#4规范虽然很清楚。 第2.5.8.1节规定:

#pragma warning restore指令将所有或给定的一组#pragma warning restore到编译单元开头有效的状态。 请注意,如果在外部禁用了特定警告,则#pragma warning restore (无论是对于所有警告还是指定的警告)都不会重新启用该警告。

Jeff 在博客文章中有一个解决方法 – 基本上是重新处理自动生成的代码作为构建的一部分。


正如Tom所说,您可以在整个项目中添加“忽略”(构建/抑制警告 – 输入1591作为警告编号) – 但是您可以在每个未生成的文件的顶部自行恢复警告:

 #pragma warning restore 1591 

这很丑陋,但它有效(我刚刚测试过)。

避免在生成的代码上出现警告或代码分析错误的最佳方法是使用GeneratedCodeAttribute修饰生成的类,并使代码文件以* .generated.cs模式结束。

如果你的代码文件也有文件头,你应该有这些标签:

 //---------------------- //  // Tool description //  //---------------------- 

这不是强制性的,但如果您有代码文件头,这是一个很好的做法。

这样,FxCop和StyleCop等其他工具将不再分析您的代码。

不正常的是,您的代码生成工具不会使用上面提到的属性来分解您的代码元素。 尝试查看是否在工具设置中启用了选项或联系开发团队。


编辑:生成的类是否是部分类,并经常做实际的类名称和数字更改? 因为如果生成的代码内容没有大量移动,你可以做的只是创建另一个代码文件,然后声明生成的部分类用GeneratedCodeAttribute来装饰它们。 有一次它挽救了我的生命(和我的时间!)。

您可以做的最好的事情是禁止项目中包含生成代码的特定警告。 您可以在“构建”选项卡上的“项目属性”中执行此操作。 它不是理想的,但是如果没有将pragma放在生成的代码中,那么它是你能做的最好的。