【发布时间】:2011-01-04 16:21:48
【问题描述】:
我在我的 Visual Studio 2008 项目中使用 .Settings 文件,它从 PublicSettingsSingleFileGenerator 自动生成 Settings.Designer.cs 文件强>自定义工具。
这工作正常,但我也想在编译选项中启用“警告为错误”,以强制每个人保持 XML cmets 最新,但我不知道如何将 cmets 添加到所有元素在自动生成的代码中。
可以通过在设计视图中选择元素并在属性窗口中添加“描述”来添加实际属性。但是对于类声明或默认实例属性似乎没有办法做到这一点。
重现此问题的步骤如下
- 创建一个新项目
- 将设置文件添加到项目中
- 将设置文件的“Access Modifier”设置为Public
- 转到项目属性,构建部分
- 将“将警告视为错误”设置为全部
- 检查输出 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 网站上提出了一个错误报告,并将在我们获得更多信息时更新并接受答案http://connect.microsoft.com/VisualStudio/feedback/details/634692/publicsettingssinglefilegenerator-code-fails-when-treat-warnings-as-errors-is-set-to-all-and-xml-documentation-is-on
【问题讨论】:
-
将警告视为错误会遇到什么问题?
-
抱歉忘了说明,只要公共类/成员没有 XML 注释标头,编译器就会生成警告
-
您如何以及为什么将设置文件设置为公开?
-
如果您在设计器视图中打开设置文件,在“查看代码”按钮旁边的网格顶部有一个下拉框(仅在 2008 年)。默认是内部的,但我需要将类公开,因为我希望能够从另一个项目中引用该类。
标签: c# visual-studio-2008 settings.settings