C# 如何通过app.config变量覆盖settings.settings变量

C# 如何通过app.config变量覆盖settings.settings变量,c#,.net,app-config,C#,.net,App Config,如何通过在生产时向app.config添加变量来更改(或覆盖)settings.settings变量 这是否可行?仅通过代码: e、 g 但是,如果您的问题是在不同的环境中维护不同的配置值,那么我将使用AppSettings 然后可以使用开发人员覆盖文件 <appSettings file="..\user.config"> 它取决于设置的范围。如果是应用程序范围设置,则在app.config中更改其值就足够了 但是,如果是用户范围设置,则app.config中的值只是新用户使用

如何通过在生产时向app.config添加变量来更改(或覆盖)settings.settings变量

这是否可行?

仅通过代码:

e、 g

但是,如果您的问题是在不同的环境中维护不同的配置值,那么我将使用AppSettings

然后可以使用开发人员覆盖文件

 <appSettings file="..\user.config">

它取决于设置的范围。如果是应用程序范围设置,则在app.config中更改其值就足够了

但是,如果是用户范围设置,则app.config中的值只是新用户使用的默认值,并且每个已经使用应用程序的用户都会将当前使用的值存储在单独的文件user.config中,因此,更改app.config中的值对已经运行应用程序一次的用户没有影响

因此,更改用户范围设置的值可能是一项麻烦的任务。有关更改用户作用域设置的详细信息,请查看以下答案:


为生产和您使用不同的配置文件。基本上,在生产环境中,您将在发行版中编译,所以如果您使用VisualStudio进行编译,请使用生成后事件来复制发行版配置文件,以防为生产环境准备生成


我更喜欢这样,而不是从代码中更改它,因为其他人更容易在配置文件中看到差异,然后深入到代码中查找所有的
if/else
内容。

您必须直接引用要覆盖的应用程序设置,并显式指定具有替换值的属性


新字符串值

对于应用程序范围连接字符串值:

  <connectionStrings>
    <add name="appname.Properties.Settings.setting1" connectionString="test string" providerName="dbProvider"/>
  </connectionStrings>


OP询问的是Settings.Settings,而不是
ApplicationSettings
部分。
appname
来自哪里?我们迁移到了.net 5,使用的是app.config。在覆盖其他类似项目的设置之前,从我们的测试环境开始,但在迁移之后,它不起作用。。。你有什么想法吗。
  <connectionStrings>
    <add name="appname.Properties.Settings.setting1" connectionString="test string" providerName="dbProvider"/>
  </connectionStrings>