问题标签 [applicationsettingsbase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5229 浏览

c# - 当版本号更改时,如何升级 user.config 中的所有设置?

我有许多用户范围的设置由继承自 ApplicationSettingsBase 的对象存储在 user.config 中。

每个实例的SettingsKey在运行时主要使用表单名称动态派生。因此可能有数百个。

我已经阅读了许多问题和答案(比如这个 - How do you keep user.config settings across different assembly versions in .net? ),它们都建议在一些版本号检查中包装一个ApplicationSettingsBase.Upgrade()调用。

问题是(据我所知)您需要知道用于实例化所有 ApplicationSettingsBase 对象以依次调用升级方法的每个 *SettingsKey( 值。

有没有办法一次升级所有 user.config 设置,或者迭代文件中的所有设置来升级它们?

0 投票
1 回答
233 浏览

c# - 如何读取多个 .settings 文件并将它们传递给 C#/XNA .Net 中的方法

我正在尝试读取我用作播放器设置的多个设置文件。C# 和 XNA

它们都有完全相同的设置。AKA Settings1 有 player1 的名称、ShipType、Weapon、Shield、Color 等……(大约 100 种东西) Settings2 有 player2 的信息,设置与玩家 1 相同。AkA Settings1.settings Settings2.settings 等……
我正在使用这个因为它让我可以轻松地引用 VS 中的所有内容,我只需单击即可添加内容,它会为我找出类型和所有好东西。

这就是我想做的

然而。如果我使用此设置 playerSettings[0] 不允许我访问 Name 属性。

当我进入调试时,我可以看到 PlayerSettings[0] 包含 Settings1,其中包含 Name 属性。我只是不知道如何在 VS 中访问它,所以我可以阅读它。

我曾希望能够使用 system.configureation.applicationsettingsbase[] 这样我就可以简单地将它传递给该方法,并且只需要在那里更新 1 次代码。而不是手动为每个玩家做这件事(现在是 4 次而且很长)

同样,这些必须是默认设置文件,您可以通过右键单击并选择 add-new-settings 添加到项目中。

TLDR:我需要一种方法来访问 System.Configuration.ApplicationSettingsBase 数组中的属性,该数组中充满了 .settings 文件。或将每个不同的 .settings 文件传递​​给一个方法,即使它们被识别为不同的类型谢谢

0 投票
1 回答
603 浏览

c# - 首次使用时的自定义设置类异常 (ApplicationSettingsBase)

第一次读取设置(-在设置之前)会引发Object reference not set to an instance of an object.异常。

在实际情况下无法使用DefaultSettingValueAttribute设置默认值,因为它不是我的 int 示例中的简单类型,并且不能描述为字符串。从文档

DefaultSettingValueAttribute 要求可以将默认值表示为字符串。

应该如何避免这种情况?

更多信息:

当然,我可以将它包装在一个try-catch块中,但这应该留给特殊情况,而这是正常的 - 每个第一次使用该应用程序的用户都会遇到这种情况。因为第一次,所以try每次都 ing 似乎是错误的。

那么正确的解决方案是什么?

这是代码:

并这么称呼:

0 投票
0 回答
274 浏览

c# - 自定义设置缓慢加载 (ApplicationSettingsBase)

每次启动应用程序时,首次加载自定义设置大约需要 2 秒。

有什么方法可以加速吗?

(或者这是否被广泛使用,正如这里所建议的那样,尽管速度会受到影响。)

这是代码:

并这么称呼:

0 投票
1 回答
1526 浏览

c# - c#如何将组合框SelectedIndex链接到ApplicationSettings

在 Visual Studio 设计器(我使用 2012)中,无法将 ApplicationSettings 机制链接到 SelectedIndex 属性(仅限文本)。

可以改用什么解决方法?


抱歉,如果我的问题违反了 StackOverflow 规则。我搜索了我的问题,但没有找到确切的答案。

我不只知道如何自定义代码 ApplicationSettings。我总是在设计模式下使用此功能 - 我的文本框的链接文本属性,然后使用 Properties.Settings.Default.Save() 保存它,在 Form_Load 上我使用 Properties.Settings.Default.SomeName 加载保存的值。除此之外的一切都是由 VisualStudio 完成的,我不知道究竟要根据我的需要改变它的行为。

我确信这个问题对初学者很有用

0 投票
1 回答
6426 浏览

c# - 保存用户范围设置 (ApplicationSettingsBase)

当用户退出配置表单(不是我的主表单)时,我正在尝试保存我的应用程序设置。它将设置保存在内存中,因为当我再次打开表单时,我配置的数据仍然存在,但不会将其保存到磁盘。这是将 xml 文件保存到的文件路径

C:\Users\david_000\AppData\Local[公司名称][项目名称]\1.0.0.0.

我在实现 ApplicationSettingsBase 文件的类中使用 [UserScopedSetting()],因此它应该在我调用时保存,

这是我使用 ApplicationSettingsBase 的课程

我的 BindingList 包含多个属性,并且该类使用 [Serializable] 属性。但是当我保存 xml 文件时,它保存的只是:

对此的任何建议将不胜感激。

0 投票
1 回答
742 浏览

c# - ApplicationSettingsBase 没有按预期序列化我的类

我正在尝试使用 ApplicationSettingsBase 来持久化我的课程。我这里有一个例子。我也尝试过不使用 ApplicationSettingsBase,这似乎工作正常。该示例在下面。

有人可以给我一些关于使用 ApplicationSettingsBase 来保持我的完整类层次结构的指导吗?谢谢谢谢。

我在第一个示例中保存了一些中间实例来尝试解决这个问题。我不打算在最终实施中这样做。我可以在这里看到它会保存中间数据,但不会保存嵌套数据。我只是不明白。

运行后的 user.config:

以下是未尝试使用ApplicationSettingsBase 的示例:

运行后的 user.config:

0 投票
0 回答
134 浏览

c# - 从字符串加载 Properties.Settings.Default

我开始使用Properties.Settings.Default为我的应用程序保留设置,但现在要求已经改变,我们需要将这些设置保存在 SQL 数据库中,而不是磁盘上的文件中。我必须将 xml 加载到一个字符串,然后以某种方式从该字符串初始化设置。

我宁愿不必丢弃所有相关的代码Properties.Settings.Default并使用不同的类。我需要类似void Properties.Settings.Default.LoadSettingsXmlFromString(string xml)和的东西string Properties.Settings.Default.SaveSettingsToString()。然后我会自己处理存储和加载字符串。

想到的一个简单的解决方案是从服务器检索设置,然后覆盖Properties.Settings.Default将加载的文件,同样用于保存。

我还发现Loading Properties.Settings from a different file at runtime,但我的问题有点不同,因为我根本没有从磁盘上的文件加载设置。

编辑:根据如何更改.NET用户设置位置,似乎甚至可以获取文件位置以便我可以覆盖它并不容易

0 投票
3 回答
816 浏览

c# - ApplicationSettingsBase ConfigurationErrorsException 多个程序集

更新的问题(正确指出问题)

我正在使用一个库,它实现了一个派生自ApplicationSettingsBase.

现在我在另一个项目中使用这个库。这些项目还包含至少一个派生自ApplicationSettingsBase.

现在这两个类都源自ApplicationSettingsBase将它们的属性存储到同一个user.config文件。应用程序和 lib 使用多个任务,如果两个任务同时执行(例如)属性设置器,我得到以下异常。两个任务都尝试同时执行写操作......

我可以用以下场景重现它:

现在我正在寻找一种实现来保护对user.config文件的访问。

解决方案:

我找到了一个可行的解决方案。CustomApplicationSettingsBase锁定并发任务。

public sealed class GlobalLibSettings : CustomApplicationSettingsBase

public sealed class ProjectSettings : CustomApplicationSettingsBase和:

谢谢你的帮助!

0 投票
2 回答
365 浏览

c# - 当我想将自定义类添加为设置类型时,“类型未定义”

我想将此类添加为设置类型:

所以我做了什么:

  1. 在类型下拉框中选择浏览... :
    在此处输入图像描述
  2. 我在任何地方都看不到MY_PROJECT命名空间: 在此处输入图像描述
  3. 所以我手动输入了完整的类型: 在此处输入图像描述
  4. 结果是一个错误:

    在此处输入图像描述

我也试过一个SUB_PROJECT.ConfigsConfigs。没有任何帮助。为什么我的课程没有显示在浏览器中?