【问题标题】:Config file in C# with a simple syntax?用简单的语法在 C# 中配置文件?
【发布时间】:2016-02-18 14:24:43
【问题描述】:

我正在构建一个 C# (WPF) 应用程序,我想使用一个简单的配置来定义文件路径。 目的是让用户能够轻松地读取和/或修改配置文件,而无需学习任何复杂的语法(或样板),并使用简单的文本编辑器来完成。 我一直在阅读有关 App.config 文件的内容,据我了解,手动修改非常复杂。

过去在 Windows 和 Linux 中(即使在今天)也有非常简单的 Key=Value 文件,这正是我所习惯的 - 但是我看到 C# 没有任何对 INI 文件读取的内置支持/解析。

不熟悉语法的用户能否轻松修改 App.config 文件?如果没有,有什么简单的选择吗?

【问题讨论】:

  • any 文件能否被不熟悉的用户轻松修改。如果您的用户不是那么先进,也许您应该在 UI 中处理配置。
  • 我确定有用于解析 INI 文件的库。您也可以查看其他格式,例如 JSON 或 YAML。
  • 既然您手头有一种相当强大的编程语言,那么实现您自己的处理 .ini 文件的方式就不是什么负担了。见:codeproject.com/Articles/1966/…
  • 我将和 James Thorpe 一起讨论这个问题。不要指望您的用户习惯于在配置文件中胡闹,因为他们可能会做很多错误的事情。为他们提供易于遵循的 GUI 以更改设置/首选项。
  • @JamesThorpe 我认为 Key=Value 比 XML 语法更简单。然而,由于 XML 语法无处不在,我愿意接受它——只要它没有您必须添加的任何预定义样板文本。这显然是我对配置文件的经验的问题,但我真的认为这是最简单的语法是不言而喻的。

标签: c# wpf app-config


【解决方案1】:

App.config 文件很容易修改。下面是一个带有自定义值的标准 App.config。

<!-- Start Ignore here -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>

  <!-- End ignore here, the below is what you want -->
  <appSettings>
    <add key="myCustomPath" value="C:\Path\To\Something"/> <!-- The user can edit this value -->                   
  </appSettings>
</configuration>

如您所见,用户只需更改appSettings 节点下的value。就这么简单。

然后要访问该值(在您的代码中),您所要做的就是调用ConfigurationManager

var path = ConfigurationManager.AppSettings["myCustomPath"];

【讨论】:

  • 查看我对 Ric 的评论。
【解决方案2】:

对于这种情况,无论是使用app.config 还是web.config,都有一个appsetting 的部分可以包含键/值对,用于存储易于修改和读取的文件路径等信息:

<configuration>
    <appSettings>
       <add key="myFilePath" value="pathToFile" />
    </appSettings>
....
</configuration>

您可以根据需要在appSettings 中添加任意数量的部分

【讨论】:

  • 用户必须知道appsettings标签和配置标签。我说的是从头开始编写文件(比如我移动应用程序),而不需要添加各种预定义的字符串(如 INI 文件)。我真的不想忽略一些事情。这就是文件处理复杂的原因。
  • 您要求a simple configuration to define the file pathsthe user to be able to read and/or modify the configuration file easily 这不是很适合这种情况吗?
  • 我不这么认为,因为从头开始编写会很困难(如果您知道属性名称) - 您必须使用样板文本。
【解决方案3】:

为了便于编辑并消除整个文件的复杂性,您可以将 appSettings 部分拆分为一个单独的文件,引用自 app.config...

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
    <configSections>
      <!- stuff in here -->
    </configSections>
    <appSettings configSource="myCustomisableSettings.config" />
  </Configuration>

单独的文件应如下所示。

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
  <add key="FirstPathKey" value="FirstPath" />
  <add key="SecondPathKey" value="SecondPath" />
</appSettings>

【讨论】:

  • 我认为这与我所追求的很接近。也可以在这里使用部分(如 INI 文件)吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 2011-02-22
  • 2017-05-10
  • 2011-10-17
  • 1970-01-01
相关资源
最近更新 更多