5

我在我的 Visual Studio 2008 项目中使用.Settings文件,它从PublicSettingsSingleFileGenerator自定义工具自动生成Settings.Designer.cs文件。

这很好用,但我还想在编译选项中启用“警告为错误”,以强制每个人保持 XML 注释为最新,但我不知道如何为自动中的所有元素添加注释- 生成的代码。

实际属性可以通过在设计视图中选择元素并在属性窗口中添加“描述”来添加注释。但是对于类声明或默认实例属性似乎没有办法做到这一点。

重现此问题的步骤如下

  1. 创建一个新项目
  2. 将设置文件添加到项目中
  3. 将设置文件的“访问修饰符”设置为公共
  4. 转到项目属性,构建部分
  5. 将“将警告视为错误”设置为全部
  6. 检查输出 XML 文档文件选项
  7. 构建解决方案

这是在 PublicSettingsSingleFileGenerator Settings.Designer.cs 文件中生成的代码

namespace SettingsTest {

    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
    public sealed partial class Settings1 : global::System.Configuration.ApplicationSettingsBase {

        private static Settings1 defaultInstance = ((Settings1)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings1())));

        public static Settings1 Default {
            get {
                return defaultInstance;
            }
        }
    }
}

不确定这个额外的信息是否应该成为问题部分的一部分,因为它在某种程度上指向答案

根据此链接,应用于该类的属性似乎是错误的。

http://blogs.msdn.com/b/codeanalysis/archive/2007/04/27/correct-usage-of-the-compilergeneratedattribute-and-the-generatedcodeattribute.aspx

" CompilerGenerateAttribute - 此属性仅供编译器使用,指示特定代码元素是编译器生成的。这绝不应在源代码中使用。"

" GeneratedCodeAttribute - 此属性供生成代码的自定义工具使用。它应仅应用于反复重新生成的代码,不应由预期用户修改的模板使用。也不应应用如果生成的类型是部分类,则在类型级别。在这种情况下,它应该只应用于包含在类型的生成部分中的各个成员。

更新

我已经在 Microsoft Connect 站点上提出了一个错误报告,并且会在我们获得更多信息时更新并接受答案http://connect.microsoft.com/VisualStudio/feedback/details/634692/publicsettingssinglefilegenerator-code-失败-当-治疗-警告-as-errors-is-set-to-all-and-xml-documentation-is-on

4

4 回答 4

2

没有好的方法可以做到这一点,您不能在自动生成的文件中注入#pragma 警告禁用。顺便说一句,Winforms 设计器文件也存在问题。项目 + 属性,构建选项卡,抑制警告 = 1591。但这也会在您可能希望打开的位置禁用诊断。#pragma 警告恢复不能解决这个问题。

于 2011-01-04T17:04:12.673 回答
1

不幸的是,这里有冲突的问题\设置:

  • XML 文档生成将对公共成员的所有缺失评论发出警告。
  • 您已启用“将警告视为错误”(一件好事)。
  • 正在针对您无法更改的类(即生成的设置)发出警告。

这样做的结果是您将警告转换为无法修复的编译器错误。您无法可靠地手动将注释添加到设置类,因为下次重新生成类时它们将丢失。

考虑将您的设置放在一个单独的项目中并关闭该项目的 XML 文档。

于 2011-01-04T16:43:32.517 回答
0

Settings 是一个部分类:创建第二个空部分并对其进行注释。

于 2011-01-04T16:36:27.613 回答
0

请参阅Visual Studio 2010 中的文档 (XML) 应用程序设置

每个设置都有一个描述属性,这将反过来在生成的代码中创建 XML 注释。在 VS2010 中测试为工作。

于 2012-05-30T20:57:36.553 回答