我在我的VS项目中启用了"将警告视为错误",这意味着我会因缺少文档而得到错误提示(对于这个特定的项目来说是一个不错的提醒)。
然而,部分代码是由自定义工具生成的,该工具不会插入xml文档,所以我正在寻找一种方法来忽略仅针对已生成的代码的缺少xml文档的警告,而不是整个项目。我对实际生成的文件没有影响,也不能在文件中真正插入任何内容(因为它经常被工具重新生成),因此我正在寻找在生成的文件之外存在的某些东西(如果生成的类是partial的话,这可能有帮助)。
我在我的VS项目中启用了"将警告视为错误",这意味着我会因缺少文档而得到错误提示(对于这个特定的项目来说是一个不错的提醒)。
然而,部分代码是由自定义工具生成的,该工具不会插入xml文档,所以我正在寻找一种方法来忽略仅针对已生成的代码的缺少xml文档的警告,而不是整个项目。我对实际生成的文件没有影响,也不能在文件中真正插入任何内容(因为它经常被工具重新生成),因此我正在寻找在生成的文件之外存在的某些东西(如果生成的类是partial的话,这可能有帮助)。
避免生成的代码产生警告或Code Analysis错误的最佳方法是使用GeneratedCodeAttribute修饰生成的类,并使代码文件以*.generated.cs模式结尾。
如果您的代码文件还具有文件头,请添加以下标记:
//----------------------
// <auto-generated>
// Tool description
// </auto-generated>
//----------------------
这不是强制性的,但如果您有代码文件头,这是一个好习惯。
这样一来,FxCop和其他类似StyleCop的工具将不再分析您的代码。
异常的是,您的代码生成工具没有使用上述属性修饰代码元素。试着查看工具设置中是否有启用该选项或联系开发团队。
编辑: 生成的类是否是部分类,实际类的名称和数量是否经常更改?因为如果生成的代码内容变化不大,您可以简单地创建另一个代码文件,并声明生成的部分类以使用GeneratedCodeAttribute对其进行修饰。有一次它救了我的命(和时间!)。
编辑:看到评论表明这种方法无法在C# 4中使用。我不确定它是否适用于编译器的早期版本。不过,C# 4规范已经说明得很清楚了。第2.5.8.1节指出:
#pragma warning restore
指令将所有警告或给定的一组警告恢复到编译单元开始时的状态。请注意,如果某个特定的警告被外部禁用,#pragma warning restore
(不论是为了所有还是指定的警告)都不会重新启用该警告。
Jeff 在他的博客文章中有一个解决方案 - 基本上是将自动生成的代码作为构建的一部分重新处理。
如 Tom 所说,您可以向整个项目添加“忽略”(生成 / 抑制警告 - 输入1591作为警告编号) - 但是然后您可以在每个您的非生成文件的顶部还原警告:
#pragma warning restore 1591
它相当丑陋,但它确实起作用了(我刚刚测试过了)。
在这方面,您能做的最好的事情就是抑制包含生成代码的项目中的特定警告。您可以在“项目属性”中的“构建”选项卡中执行此操作。虽然不是理想的解决方案,但除了将pragma放入生成的代码之外,这是您能做的最好的方法。