【问题标题】:Save Config in the Application Startup在应用程序启动中保存配置
【发布时间】:2014-03-22 16:36:34
【问题描述】:

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

  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 文件中实现配置文件,以便该文件不会自行创建。还是有其他解决办法?

【问题讨论】:

  • 您可以随时检查应用程序何时启动,是否有 app.conf 文件,如果没有,则继续
  • 您可以使用注册表。或者它可以保存在所有用户的固定位置。
  • 您可以将其作为嵌入式资源,然后将其写入磁盘。如果找不到,我相信初始配置文件会自动生成,但我猜你可以使用嵌入式配置文件并比较/覆盖现有的配置文件。这将是比注册表方法更好的方法,因为用户/应用程序需要访问注册表,这有时会因用户帐户权限和环境而成为问题。

标签: c# configuration-files appsettings


【解决方案1】:

您需要的是安装程序 exe 或 msi package。您可以通过在 Visual Studio 中创建一个 msi 项目来做到这一点。使用这种方法而不是提供 exe 文件,您将给用户一个 MSI 文件。因此,在安装 msi 时,您可以捆绑您的 exe,以便您自动放置配置文件。您还可以使此安装程序在用户计算机上创建文件夹等。很有用。

http://www.codeproject.com/Articles/568476/Creating-an-MSI-Package-for-Csharp-Windows-Applica

http://support.microsoft.com/kb/307353

http://msdn.microsoft.com/en-us/library/cc766795.aspx

【讨论】:

【解决方案2】:

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

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

你可以使用

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

作为您的公用文件夹。

【讨论】:

    【解决方案3】:

    您可以使用ConfigurationManager.OpenExeConfiguration手动加载配置文件

    here 上有一个很好的例子:它保留了移动的设置。

    【讨论】:

      【解决方案4】:

      您当然可以始终使用 c# 中的设置,它们是为这些事情而设计的。 http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

      【讨论】:

      • 在同一台计算机上移动时,它们会被保留,如果您必须从一台计算机移动到另一台计算机,那么您可以预见一种导出/导入设置的方法。无论哪种方式,app.config 都不是为存储用户设置而设计的。
      猜你喜欢
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 2013-06-07
      • 2013-07-05
      • 2015-07-19
      • 1970-01-01
      相关资源
      最近更新 更多