找不到我的配置文件
本文关键字:配置文件 我的 找不到 | 更新日期: 2023-09-27 18:21:09
我需要读/写一个与任何exe无关的配置文件。我正在尝试这个:
var appConfiguration = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = "SlamDunkSuper.config" }, ConfigurationUserLevel.None);
if(appConfiguration == null) {
//Configuration file not found, so throw an exception
//TODO: thow an exception here
} else {
//Have Configuration, so work on the contents
var fileEnvironment = appConfiguration.GetSection("fileEnvironment");
}
不会引发异常,但fileEnvironment始终为null。以下是文件内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="fileEnvironment" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<fileEnvironment>
<add key="DxStudioLocation" value="123456"/>
</fileEnvironment>
</configuration>
请有人带我走出荒野。我也不知道在获得部分内容后,如何在NameValueCollection中编写或更改条目。感谢
您可以通过一些小的调整来全球化AppSettingsSection:
<section name="fileEnvironment" type="System.Configuration.AppSettingsSection"/>
使用:
var appConfiguration = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = "SlamDunkSuper.config" }, ConfigurationUserLevel.None);
if (!appConfiguration.HasFile) // no need to null check, ConfigurationManager.OpenMappedExeConfiguration will always return an object or throw ArgumentException
{
//Configuration file not found, so throw an exception
}
else
{
var section = appConfiguration.GetSection("fileEnvironment") as AppSettingsSection;
if (section != null)
{
var dxStudioLocation = section.Settings["DxStudioLocation"].Value;
}
}
在.net中,配置文件是由运行的exe文件选择的,所以如果你有5个项目(4个dll和一个exe),并且每个项目都有不同的配置文件,当你从exe文件运行应用程序时,他加载的dll会认为exe的配置文件是他们的配置文件。
换句话说,要读取dll项目的配置文件,您需要使用他的路径显式地打开它。
希望它能帮助