Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向Settings.Designer.cs添加注释_C#_Visual Studio 2008_Settings.settings - Fatal编程技术网

C# 向Settings.Designer.cs添加注释

C# 向Settings.Designer.cs添加注释,c#,visual-studio-2008,settings.settings,C#,Visual Studio 2008,Settings.settings,我在Visual Studio 2008项目中使用了一个.Settings文件,该文件可从PublicSettingsSingleFileGenerator自定义工具自动生成一个Settings.Designer.cs文件 这很好,但我还希望在编译选项中启用“警告为错误”,以强制所有人保持XML注释最新,但我不知道如何向自动生成的代码中的所有元素添加注释 通过在“设计”视图中选择图元并在“特性”窗口中添加“说明”,可以添加实际特性的注释。但是对于类声明或默认实例属性,似乎没有这样做的方法 重现此

我在Visual Studio 2008项目中使用了一个.Settings文件,该文件可从PublicSettingsSingleFileGenerator自定义工具自动生成一个Settings.Designer.cs文件

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

通过在“设计”视图中选择图元并在“特性”窗口中添加“说明”,可以添加实际特性的注释。但是对于类声明或默认实例属性,似乎没有这样做的方法

重现此问题的步骤如下所示

  • 创建新项目
  • 将设置文件添加到项目中
  • 将设置文件的“访问修饰符”设置为公共
  • 转到项目属性,生成部分
  • 将“将警告视为错误”设置为所有
  • 选中“输出XML文档文件”选项
  • 构建解决方案
  • 这是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;
                }
            }
        }
    }
    
    我不确定这些额外的信息是否应该是问题部分的一部分,因为它在某种程度上指向了一个答案

    根据这个链接,应用于类的属性似乎是错误的

    CompilerGenerateAttribute-此属性仅供编译器使用,并指示编译器生成特定的代码元素。无论如何,都不应在源代码中使用此属性。”

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

    更新


    我已经在Microsoft Connect网站上对此提出了一个错误报告,并将在获得更多信息时进行更新并接受答复。

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

    不幸的是,此处存在冲突问题\设置:

    • XML文档生成将对公共成员上所有缺少的注释发出警告
    • 您已启用“将警告视为错误”(一件好事)
    • 针对您无法更改的类(即生成的设置)发出警告
    这样做的结果是,您将警告转换为无法修复的编译器错误。您无法可靠地手动向设置类添加注释,因为它们将在下次重新生成该类时丢失


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

    这样做没有好办法,您不能在自动生成的文件中插入#pragma warning disable。Winforms designer文件也有问题。顺便说一句,project+属性,Build选项卡,Suppress warnings=1591。但这将禁用在您可能希望打开诊断的位置也可以恢复诊断。pragma警告还原无法解决此问题。

    请参阅


    每个设置都有一个description属性,这将在生成的代码中创建XML注释。在VS2010中测试为正常工作。

    将警告视为错误会导致什么问题?很抱歉,忘了澄清一下,每当公共类/成员没有XML注释头时,编译器都会生成警告d为什么要将设置文件设置为公共?如果在designer视图中打开设置文件,则在网格顶部的“查看代码”按钮旁边有一个下拉框(仅在2008年)。默认值是内部的,但我需要将该类公开,因为我希望能够从另一个项目引用该类。谢谢,这个想法适用于类声明,但也有一个默认实例(singleton)属性。是否有任何方法可以对此进行注释?我已经对此进行了一些研究。根据,您不必对此类进行注释,因为类上的CompilerGeneratedAttribute应该可以防止警告作为错误发出。我已经尝试在VS2005和VS2008中复制您的问题,但在这两个IDE中,我都可以使用warn进行编译作为错误的重复记录(全部),上有xml文档,settings.designer.cs文件中没有任何注释。我将用重新创建问题的步骤更新我的问题,从您的链接我认为该工具实际生成了错误的代码OK,基于此,我将为设置创建一个包装器。将设置保留在内部,并创建一个新的XSettings类,并使其生效类public。为其指定一个索引属性或一个SettingByName方法,该方法返回命名设置的字符串值。添加一个HasSetting方法以检查设置是否存在。这样,您就可以对其进行注释,并更改基础设置文件,而不会中断生成。谢谢,我现在已经纠正了这个问题。还有取消一个额外的项目是一个好主意,但我现在坚持要一个更干净的解决方案,因为这似乎是解决一个相当简单的问题的一个相当尴尬的方式。