19

这实际上只是重新询问有关 Visual Studio 2008的问题。VS2010 是否提供任何功能来消除自动生成代码的 CS1591 编译器警告?

CS1591: Missing XML comment for publicly visible type or member

引用 VS2008 的问题:

这是一个烦恼多于一个问题。我的项目包含许多自动生成的文件(使用 mgmtclassgen.exe)。当我生成 XML 文档时,我的精美注释库受到来自这些 autogen 文件的 xml 文档警告的困扰。

有没有办法a)禁止为这些文件生成文档或b)只为一组文件禁止警告CS1591?我显然不想修改自动生成的文件,即使只是添加抑制编译指示。

编辑:在我的例子中,有问题的文件是由 WCF RIA 服务生成的,所以生成错误的文件是自动生成的 WebContext 类(MyProject.BusinessApplication.Web.g.cs)。

我无法手动修改此文件,因为它是动态生成的,所有更改都将被清除。我也不想全局禁用警告,因为它对我的非自动生成代码很有帮助。

4

4 回答 4

12

我对自动生成的实体框架类有类似的问题。我设法通过修改模板文件来解决它。这显然不适用于所有自动生成的场景,它可能不适用于您的特定 RIA 场景,但我会在这里为可能遇到相同问题的其他人发帖。

打开模板文件(something.tt),找到自动生成的 xml 注释部分

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

在注释块之后添加以下行

#pragma warning disable 1591 

再往下一点,您应该会找到命名空间块的结束位置。它可能看起来像这样

if (!String.IsNullOrEmpty(ObjectNamespace))
{
    PopIndent();
#>
}

将以下行放在该右大括号之后

#pragma warning restore 1591

如果一切正常,只要你的类是由 Entity Framework 自动生成的,它们应该被 disable/restore pragma 语句包装。这应该抑制有关 EF 类中没有 XML 注释的警告,而不抑制项目级别的警告。

于 2012-08-08T15:55:38.067 回答
2

以下文章可能会触发您解决问题的一些提示:http: //lvquoc.blogspot.com/2010/11/disable-xml-comment-warning-in-workflow.html

文章的重要部分是 Alan McBee 的评论:为了禁用 windows 工作流 VS2012+ 中生成的警告,请将其添加到项目文件的底部:

<Target Name="XamlGeneratedCodeWarningRemoved" AfterTargets="MarkupCompilePass2">
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do echo #pragma warning disable 1591 > %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do type %%f >> %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do echo #pragma warning restore 1591 >> %%f.temp" />
  <Exec Command="for %%f in (@(_GeneratedCodeFiles)) do move /y %%f.temp %%f" />
  <Message Text="Xaml Generated Code Warnings Removed: @(_GeneratedCodeFiles)" />
</Target>
于 2010-12-01T17:45:47.997 回答
1

与 Quam Loc 的解决方案类似,可以使用构建目标禁用 RIA 生成的文件中的警告:

<Target Name="CreateRiaClientFilesTaskDisableWarnings" AfterTargets="CreateRiaClientFiles">
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do echo #pragma warning disable &gt; %%f.temp" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do type %%f &gt;&gt; %%f.temp" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do attrib -r %%f" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do move /y %%f.temp %%f" />
  <Exec Command="for %%f in (@(RiaClientGeneratedFiles)) do attrib +r %%f" />
  <Message Text="CreateRiaClientFilesTaskDisableWarnings: @(RiaClientGeneratedFiles)" />
</Target>

我刚刚在我的博客上发布了它。

于 2012-05-09T09:44:16.477 回答
0

我面临着类似的问题。如果命名空间没有任何 XML 注释,我所做的是在任何页面中,只需添加以下代码行,您将不会遇到类似的错误。

'/// <summary>
/// Namespace provides implementation for ABC classes.
/// </summary>
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
class NamespaceDoc
{
}'
于 2015-08-28T05:16:32.273 回答