C# 有什么好的配置文件工具
我正在编写一个新的 C# 应用程序,它将大量使用配置文件。我的要求是:
- 人类可读的
- 名称值
- 对 分层
- [可由应用程序更新]
嗯,翻译一下:我想定义一个对象以及与该对象关联的一组配置参数。配置参数可以是名称值对或另一个对象,并附加其自己的属性:
module "db" { 主机:“db.example.com”; 编码器“zip”{ 压缩:10; } 我不太致力于要求 4,但
确实考虑到我希望应用程序更新设置并将其写回配置文件。
我知道以下选项:
- XML。人类可读性不够。
- INI 文件。不是分层
- JSON。
- YAML。
JSON 和 YAML 似乎值得研究。
建议使用这些进行配置吗?我可以考虑使用任何替代工具吗?
至于将应用程序所做的更改持久保存到配置文件中,我知道 JSON 和 YAML 可以做到这一点,但是可以在保存原始人工编辑版本中可能存在的注释的同时执行此操作吗?
I'm writing a new C# application which will make heavy use of a configuration file. My requirements are:
- Human readable
- Name value pairs
- Hierarchical
- [Updatable by application]
Um, to translate: I want to define an object and a set of configuration parameters associated with that object. The configuration parameters may be name value pairs or another object, with it's own attributes attached:
module "db" {
host: "db.example.com";
encoder "zip" {
compression: 10;
}
}
I'm less committed to requirement 4, but do consider that I would like the application to update a setting and write it back to the configuration file.
I am aware of the following options:
- XML. Not sufficiently human readable.
- INI file. Not hierarchal
- JSON.
- YAML.
JSON and YAML seem worth investigating.
Advise on using these for configuration? Any alternate tools I may want to consider?
As for persisting changes made by the application back to the config file I know that JSON and YAML can do this but can either do this WHILE saving comments which may have been in the original human edited version?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
重建轮子没有意义。为什么不直接使用内置的配置 API?它使用 XML,因此您可以根据需要在运行时手动编辑。 IDE 中有一个内置编辑器,可在构建时进行编辑。
这里有来自 MSDN 的更多内容
No sense in rebuilding the wheel. Why not just use the built-in configuration API? It uses XML, so you can edit by hand at run-time if you want to. there is a built-in editor in the IDE to edit at build-time.
here is more from MSDN
当我需要做类似的事情时,我使用自定义配置文件。 这是我的做法。
I use custom configuration files when I need to do something like that. Here's how I did it.