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