标签: settings.settings

.NET桌面应用程序中的Settings.settings与app.config

可能重复:
app.config文件和XYZ.settings文件有什么区别?

我很惊讶Visual Studio中这两种机制的明显冗余来存储和管理桌面应用程序设置:

  • 您可以使用XML app.config文件,向该<appSettings>部分添加项目.可以使用ConfigurationManager类从代码中检索这些内容.
  • 或者,您可以使用Settings.settings文件通过编辑器添加单个设置.Visual Studio将生成一个Settings类,用于在运行时对类型安全的设置检索.

这两种机制似乎服务于相同(或几乎相同)的目的.我知道存在一些差异,但我也对重叠及其后果感到困惑.例如,当我使用Visual Studio向Settings.settings文件添加设置时,我输入的所有信息也最终作为app.config文件中的条目.显然,存在同步机制:如果我更改了app.config文件中的设置,Visual Studio会在Settings.settings下次在编辑器中打开时提示我更新文件.

我的问题是:

  • 为什么两种机制而不仅仅是一种?
  • 使用app.configover 的最常见方案是什么Settings.settings,反之亦然?
  • 如果我的应用程序正在使用Settings.settings并且在app.config部署后更改了值,会发生什么?Settings.settings由于已经编译和分发,因此不会发生同步.

注意.我已经搜索了关于这个主题的问题,但我更加困惑.例如,这里这个问题的答案是相当矛盾的,并没有说清楚.

注意2.我知道这app.config是一个设计时文件名,我熟悉Visual Studio复制的动态并将其重命名为可执行文件夹.

.net app-config settings.settings

86
推荐指数
2
解决办法
4万
查看次数

如何在文件版本更改中保留.settings/.config文件中的更改?

我创建了一个应用程序,它使用settings.settings来存储一些用户特定的设置(scope = User).设置在启动时正确加载,在使用过程中更改并正确保存以供下次启动.这个循环似乎没有问题.

当我更新新版本的程序集和文件版本时,会出现问题.启动时不再加载设置(而是使用默认值).即使启动版本1.2并且生成并保存了新的配置文件(即,您可以重新启动版本1.1并且配置文件将是从该文件保存的配置文件),似乎从版本1.1保存的配置文件将保持不变.版).

因此,设置似乎特定于程序集和/或文件的版本.值得注意的是,在版本1.1和版本1.2之间没有对settings.settings文件或其他任何内容进行任何更改(即我在这些不同版本之间进行的唯一更改是修改版本号).

有没有办法在版本更改后保留这些设置?

.net c# settings.settings

43
推荐指数
2
解决办法
2万
查看次数

何时使用.NET设置vs config <appsettings>?

是否有关于何时使用应用程序设置(不是每个用户设置)与.config文件<appsettings>的建议?

更新
希望了解一些更精细和重要的差异,因为它们都是有效的键/值存储.例如,我知道在web.config中修改appsettings将回收Web应用程序.

设置已经在.NET中存在了一段时间,我没有费心去看它们 - 也许一个有点多余,或者同时使用两者都没有意义......这就是我的细节期待了解和原因.

.net appsettings settings.settings

24
推荐指数
3
解决办法
9342
查看次数

当前配置系统不支持用户范围设置

我正在尝试使用设置文件来存储用户登录应用程序时的首选项.

我将它们定义为用户(范围),但我得到了

System.Configuration.ConfigurationErrorsException: The current configuration system does not support user-scoped settings.

什么可能是一个好的解决方案?

.net asp.net configuration settings.settings

17
推荐指数
2
解决办法
1万
查看次数

使用应用程序设置中的值存储字符串数组

我修改了我的Settings.settings文件以便system_Filters成为一个System.String[].
我想在Visual Studio设计器中填充此变量,而不是在代码中填充.我可以使用以下代码在代码中使用它:

Properties.Settings.Default.system_Filters = new string[] { "a", "b", "c" };
string _systemFilters = Properties.Settings.Default.system_Filters;
Run Code Online (Sandbox Code Playgroud)

这工作正常.但是,我没有一个好的地方把它放在我的代码中,理想情况下想在Settings.setting文件中输入它.此值不会被修改.我已经尝试了几乎所有我能想到的变体,但结果总是一样的.

无法转换为System.String

有谁知道正确的语法?我也愿意使用StringCollectionif,这样更容易.

c# application-settings settings.settings visual-studio .net-4.5

16
推荐指数
1
解决办法
2万
查看次数

在单元测试中修改应用程序设置

我有一个类库我想用Microsofts单元测试框架进行单元测试.我想测试的一些类是使用应用程序设置配置的.这些设置在Settings.settings具有应用程序范围和合适的默认值的文件中定义.当应用程序使用库时,可以在App.Config文件中覆盖这些设置.如果不是,则使用默认值.这正是我想要它的方式.

在我的一些测试用例中,我想测试设置值的特殊组合,但我不知道如何从单元测试代码更改被测试类所看到的值.这些设置将始终从代码生成的类的属性加载其默认值.

在我的库类中,我访问如下设置:

var mySetting1 = Settings.Default.MySetting1;
var mySetting2 = Settings.Default.MySetting2;
Run Code Online (Sandbox Code Playgroud)

在被测试的类访问设置之前,如何在单元测试中修改这些设置?单元测试可以访问内部设置类并不能解决问题,因为设置具有应用程序范围并且是设置类的只读属性.

.net configuration unit-testing settings.settings visual-studio

15
推荐指数
2
解决办法
5464
查看次数

C#:在尝试从另一个程序集中使用它之前,如何确保设置变量存在?

我有以下内容:

using CommonSettings = MyProject.Commons.Settings;

public class Foo
{
    public static void DoSomething(string str)
    {
        //How do I make sure that the setting exists first?
        object setting = CommonSettings.Default[str];

        DoSomethingElse(setting);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# settings settings.settings

12
推荐指数
4
解决办法
2万
查看次数

WPF应用程序设置 - 重置单个属性

有一种方法可以重置应用程序设置 Settings.Default.Reset()

有没有办法只重置一个属性?就像是

Settings.Default.Properties["MyPropertyName"].Reset();
Run Code Online (Sandbox Code Playgroud)

c# wpf settings.settings

11
推荐指数
3
解决办法
3519
查看次数

在settings.settings中添加自定义类型

我想使用配置文件.settings来保存这个结构:

struct sR22Protocole
{
    Int32 inputkey;
    Int32 outputkey;
    Int32 voltage;
    Int32 Ohm;
    Int32 Correction;
};
Run Code Online (Sandbox Code Playgroud)

在设置设计器中,我可以添加不同的类型,但它不会在浏览部分显示我的结构.设计师有没有办法访问我的结构?如果不是,有没有办法以programmaticaly添加它?

c# settings.settings

10
推荐指数
2
解决办法
2万
查看次数

Properties.Settings没有setter

我决定使用Properties.Settings为我的ASP.net项目存储一些应用程序设置.但是,当我尝试修改数据时,我收到一个错误The property 'Properties.Settings.Test' has no setter,因为这是生成的,我不知道我应该怎么做才能改变它,因为我以前的所有C#项目都没有这个问题.

c# asp.net settings.settings

9
推荐指数
1
解决办法
5836
查看次数