禁止生成c#代码的警告

时间:2010-04-23 20:15:20

标签: c# visual-studio code-generation suppress-warnings

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

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

3 个答案:

答案 0 :(得分:9)

编辑:请参阅注释,指出此与C#4一起使用。我不清楚它是否在早期版本的编译器中有效。 C#4规范虽然很清楚。第2.5.8.1节规定:

  

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

Jeff有一个workaround in a blog post - 基本上是作为构建的一部分重新处理自动生成的代码。


正如汤姆所说,你可以为整个项目添加一个“忽略”(建立/抑制警告 - 输入1591作为警告号码) - 但是你可以自己恢复警告每个未生成的文件:

#pragma warning restore 1591

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

答案 1 :(得分:9)

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

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

//----------------------
// <auto-generated>
//     Tool description
// </auto-generated>
//----------------------

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

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

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


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

答案 2 :(得分:2)

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