C# Properties.Settings 属性不设置任何值

Posted

技术标签:

【中文标题】C# Properties.Settings 属性不设置任何值【英文标题】:C# Properties.Settings Property doesn't setter any value 【发布时间】:2017-08-11 20:30:22 【问题描述】:

我想更改“MyProject.Properties.Settings.Default.Property”中的值,但给我一个错误和这个错误;

严重性代码描述项目文件行抑制状态 错误 CS0200 无法分配属性或索引器“Settings.Version” to -- 只读

我该如何解决这个问题?或者我可以尝试哪些不同的方法?

21.03.2017 编辑 - 我用这种方法解决了问题

Properties.Settings.Default["Version"] = File.GetLastWriteTime(mainDllPath).ToString("ddMMyyyyhhmmss");
Properties.Settings.Default.Save();

【问题讨论】:

为什么要为应用程序配置设置重新分配值?通常这些设置是由您的应用程序的用户设置的,而不是程序本身。 如果我的回答解决了您的问题,我很感激您将其标记为已接受,如果还没有,请告诉我,我会尽力提供进一步的帮助 【参考方案1】:

来自Microsoft:

应用程序范围的设置是只读的,并且只能是 在设计时更改或通过更改其之间的 .config 文件 应用程序会话。但是,用户范围的设置可以是 在运行时编写,就像更改任何属性值一样。这 新值在应用程序会话期间持续存在。你 可以在应用程序会话之间保留对设置的更改 通过调用 Save 方法。

如何:使用 C# 在运行时写入和保存用户设置:

访问设置并为其分配一个新值,如下例所示:

Properties.Settings.Default.myColor = Color.AliceBlue;

如果您想在应用程序之间保留对设置的更改 会话,调用 Save 方法,如本例所示:

Properties.Settings.Default.Save();

用户设置保存在用户的子文件夹中的文件中 本地隐藏的应用程序数据文件夹。

You can find more about using settings in c# here.

【讨论】:

我不会改变你的方法,因为我在微软代码之前尝试过,但不允许在运行时改变。 设置有两个不同的范围:用户和应用程序。只有具有用户范围的设置在运行时是可编辑的。要检查您的设置:转到解决方案资源管理器 > 展开项目的属性节点 > 双击 .settings 文件。在那里,您可以使用用户范围创建自己的设置并在运行时对其进行编辑,如果这是您的意图。【参考方案2】:

听起来您正试图在运行时从代码中编辑此只读属性。你根本无法做到这一点。

要更改您的版本,您需要通过解决方案资源管理器访问项目属性并在其中进行更改。

在这种特殊情况下,版本号被添加到已编译可执行文件的元数据中,并且需要在没有实际运行代码的情况下可供主机操作系统访问。所以改变这个 OTF 真的会适得其反。

【讨论】:

以上是关于C# Properties.Settings 属性不设置任何值的主要内容,如果未能解决你的问题,请参考以下文章

WPF C# Properties.Settings 不存在 [重复]

如何在 C# 中添加 Properties.Settings.Default

仅将 C# Properties.Settings 值设置为空格会失败

在资源中保存字符串值 [C#] 编辑:不是资源,而是 Properties.Settings

c# Using Settings under visual studio 2012

在 C# 中将 Windows 窗体属性绑定到 ApplicationSettings 的最佳方法?