VS2010:自动生成的文件和XML文档

时间:2010-09-02 18:59:07

标签: visual-studio-2010 visual-studio compiler-warnings documentation-generation xml-comments

这真的只是重新询问this question asked about Visual Studio 2008。 VS2010是否提供任何功能来摆脱自动生成代码的CS1591编译器警告?

CS1591: Missing XML comment for publicly visible type or member

引用VS2008的问题:

  

这不仅仅是一种烦恼   问题。我的项目包含一个数字   自动生成的文件(使用   mgmtclassgen.exe)。当我生成   我很精美的XML文档   评论的图书馆受到xml的困扰   来自这些的文档警告   自动文件。

     

有没有办法要么a)抑制   为这些生成文档   文件或b)禁止警告CS1591   只为一组文件?我很明显   不想修改文件   自动生成,即使只是添加   抑制pragma。

编辑: 在我的例子中,违规文件是由WCF RIA Services生成的,因此生成错误的文件是自动生成的WebContext类(MyProject.BusinessApplication.Web.g.cs)。

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

4 个答案:

答案 0 :(得分: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注释的警告,而不会抑制项目级别的警告。

答案 1 :(得分: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>

答案 2 :(得分: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>

我刚刚发布了my blog

答案 3 :(得分:0)

我遇到了类似的问题。我所做的是在任何一个页面中,如果没有任何关于命名空间的XML注释,只需添加下面的代码行,你就不会遇到类似的错误。

'/// <summary>
/// Namespace provides implementation for ABC classes.
/// </summary>
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
class NamespaceDoc
{
}'