C# 向Settings.Designer.cs添加注释
我在Visual Studio 2008项目中使用了一个.Settings文件,该文件可从PublicSettingsSingleFileGenerator自定义工具自动生成一个Settings.Designer.cs文件 这很好,但我还希望在编译选项中启用“警告为错误”,以强制所有人保持XML注释最新,但我不知道如何向自动生成的代码中的所有元素添加注释 通过在“设计”视图中选择图元并在“特性”窗口中添加“说明”,可以添加实际特性的注释。但是对于类声明或默认实例属性,似乎没有这样做的方法 重现此问题的步骤如下所示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注释最新,但我不知道如何向自动生成的代码中的所有元素添加注释 通过在“设计”视图中选择图元并在“特性”窗口中添加“说明”,可以添加实际特性的注释。但是对于类声明或默认实例属性,似乎没有这样做的方法 重现此
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方法以检查设置是否存在。这样,您就可以对其进行注释,并更改基础设置文件,而不会中断生成。谢谢,我现在已经纠正了这个问题。还有取消一个额外的项目是一个好主意,但我现在坚持要一个更干净的解决方案,因为这似乎是解决一个相当简单的问题的一个相当尴尬的方式。