C# 在应用程序启动中保存配置

C# 在应用程序启动中保存配置,c#,configuration-files,appsettings,C#,Configuration Files,Appsettings,用户的输入保存在应用程序的配置文件中,因为每次重新启动软件时都需要使用此输入: public void setAppSetting(string key, string value) { //Laden der AppSettings Configuration config = ConfigurationManager. OpenExeConfiguration(

用户的输入保存在应用程序的配置文件中,因为每次重新启动软件时都需要使用此输入:

  public void setAppSetting(string key, string value)
    {
        //Laden der AppSettings
        Configuration config = ConfigurationManager.
                                OpenExeConfiguration(
                                System.Reflection.Assembly.
                                GetExecutingAssembly().Location);

        if (config.AppSettings.Settings[key] != null)
        {
            config.AppSettings.Settings.Remove(key);
        }

        config.AppSettings.Settings.Add(key, value);
        config.Save(ConfigurationSaveMode.Modified);
    }

     public string getAppSetting(string key)
    {

        Configuration config = ConfigurationManager.
                                OpenExeConfiguration(
                                System.Reflection.Assembly.
                                GetExecutingAssembly().Location);

        return config.AppSettings.Settings[key].Value;
    }
加载应用程序设置:

private void Start_Closed(object sender, EventArgs e)
    {

        setAppSetting("benutzerEingabe", textBoxPath.Text);
        setAppSetting("benutzerEingabe", userConfigurePath);
    }
因此,当用户解压缩存在exe文件的zip文件时,会出现没有内容的内容文件。所以我想要它

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
 </configuration>

首次使用应用程序后,配置中会填充以下键:

  <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
 <appSettings>
    <add key="benutzerEingabe" />
 </appSettings>
 </configuration>


我的问题是,当用户将exe复制到其他位置,并在第一次有新的配置文件时启动此应用程序。这就是问题所在。是否有可能配置文件是在exe文件中实现的,因此该文件不会自行创建。或者有其他解决方案吗?

您可以使用
ConfigurationManager.OpenExeConfiguration


有一个很好的例子:它在移动时保留设置。

您需要的是安装程序exe或
msi包。您可以通过在VisualStudio中创建msi项目来实现这一点。使用此方法而不是提供exe文件,您将为用户提供一个MSI文件。因此,在安装msi时,您可以将exe捆绑在一起,以便自动放置配置文件。您还可以使此安装程序在用户计算机上创建文件夹等。非常有用


当然,你可以随时使用c语言中的设置,因为它们是为这些事情而设计的。

最好在公共位置创建文件,每次检查公共位置是否存在该文件,如果存在,则读取/写入该值,否则创建该文件

您可以使用XML文件或ini文件保存数据。因此,如果您更改exe位置,它不会影响您的执行

你可以用

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)


作为您的公用文件夹。

当应用程序启动时,您始终可以检查是否有app.conf文件,如果没有创建一个app.conf文件,如果是继续,您可以使用注册表。也可以将其保存在所有用户的固定位置。您可以将其作为嵌入式资源,然后将其写入磁盘。如果没有找到,我相信初始配置文件会自动生成,但我想,您可以使用嵌入的配置文件并比较/覆盖现有的配置文件。这是一种比注册表方法更好的方法,因为用户/应用程序需要访问注册表,由于用户帐户权限和环境的原因,注册表有时会成为一个问题。在同一台计算机上移动时,如果您必须从一台pc移到另一台pc,则会保留注册表,然后您可以预见导出/导入设置的方法。无论哪种方式,app.config都不是用来存储用户设置的。我只有Visual Studio Express 2010,所以我通过clickone实现了这一点:你的提示告诉我正确的方法