在 configSource 中使用外部 .config 文件会产生错误
本文关键字:文件 错误 config 外部 configSource | 更新日期: 2023-09-27 17:56:09
我正在研究如何使用配置管理器在 C# 中的 WPF 应用程序的 App.config 文件中读取/写入自定义部分。我阅读了这篇关于 .NET 2.0 配置揭秘的优秀文章,它对我使用配置文件有很大帮助。这是我编写的初始App.config文件,它工作正常。
应用配置
版<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="example" type="CustomConfig.ExampleSection, CustomConfig" />
</configSections>
<example version="A sample string value." />
<appSettings>
<add key="version_string" value="1.01" />
</appSettings>
</configuration>
但是当我更改App.config文件时,我的自定义部分将从configSource中提到的外部配置文件中读取,Visual Studio给了我一个错误。
配置源文件的格式必须是包含名称的元素 的节。
以下是 App.config 和 example.config 文件
更改了应用程序配置
。<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="example" type="CustomConfig.ExampleSection, CustomConfig" />
</configSections>
<example configSource="example.config" />
<appSettings>
<add key="version_string" value="1.01" />
</appSettings>
</configuration>
例子.config
<?xml version="1.0"?>
<example>
<add key="version" value="blahblah" />
</example>
我遇到了同样的错误。就我而言,是由于我在两个文件中有密钥,然后将appSettings
标签检测为重复。
如果需要在 web.config 中保留一些与项目相关的密钥,并在另一个文件中保留个性化密钥(出于安全原因,建议使用),请使用 file
属性而不是 configSource
。
web.config 文件:
<configuration>
<appSettings file="../AppSettings.config">
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
</appSettings>
</configuration>
AppSettings.config 文件:
<?xml version="1.0"?>
<appSettings>
<add key="RutaBodega" value="D:'Test'Card"/>
<add key="CodeLen" value="5"/>
</appSettings>
希望对别人有帮助!
Visual Studio 的编辑器/智能感知有一个缺点,因为它抱怨configSource=
属性 - 但它是绝对合法的,而且它确实有效;我每天都在各种生产系统中使用它。
我的建议:试试吧! :-)运行代码 - 我很确定它会起作用(你的配置对我来说看起来不错)。
更新:好的 - 看起来你正在完全改变<example>
标签的样式。在您的原始app.config
中,您有:
<example version="A sample string value." />
因此,当然,外部化example.config
必须包含相同的值和相同的结构:
<?xml version="1.0"?>
<example version="A sample string value." />
你能试试这个example.config
吗?
我的问题是我在同一标签中添加了一个 configSource 和一个键。
不對:
<appSettings configSource="Appsettings.config">
<add key="Setting1" value="May 5, 2014"/>
</appSettings>
如果您删除"add"标签或将其移动到configSource文件中,则错误将消失。
正确:
<appSettings configSource="Appsettings.config" />
如果要外部创建的部分是在 configSections 中定义的,则应将 configSource 属性放在定义该部分的元素中。只有 appSettings 和 connectionString 部分(不需要在 configSections 中定义)应该在主配置文件的正文中具有带有 configSource 的标记。