我想从名为MyAssembly.dll.config的程序集配置文件中检索AppSetting键。以下是配置文件的示例:
<configuration>
<appSettings>
<add key="MyKey" value="MyVal"/>
</appSettings>
</configuration>
以下是检索它的代码:
var myKey = ConfigurationManager.AppSettings["MyKey"];
我想从名为MyAssembly.dll.config的程序集配置文件中检索AppSetting键。以下是配置文件的示例:
<configuration>
<appSettings>
<add key="MyKey" value="MyVal"/>
</appSettings>
</configuration>
以下是检索它的代码:
var myKey = ConfigurationManager.AppSettings["MyKey"];
使用OpenMappedExeConfiguration
方法会返回一个"Configuration"对象,您可以使用它来查看类库的配置(存在的设置将覆盖主应用程序配置中同名的设置):
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "ConfigLibrary.config";
Configuration libConfig = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
AppSettingsSection section = (libConfig.GetSection("appSettings") as AppSettingsSection);
value = section.Settings["Test"].Value;
但是,那些仅存在于主应用程序配置中而在类库自己的配置中不存在的设置仍然可以通过ConfigurationManager
静态类进行访问:
string serial = ConfigurationManager.AppSettings["Serial"];
这仍然有效-类库的配置仅隐藏其配置文件中的设置;此外,您还需要使用"libConfig
实例来获取访问类库自己的配置设置。
这两个世界(主要app.config,classlibrary.config)可以完全且非常愉快地共存 - 没有任何问题!
Marc
ExeConfigFilename
,否则你将会得到一个存储在C:\Windows\System32
而不是你期望的应用程序目录下的文件。 - DonBoitnottvar appSettings = ConfigurationManager.OpenExeConfiguration((Assembly.GetAssembly(typeof(MYASSEMBLY))).Location).AppSettings;
var uri = new Uri(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase));
var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = Path.Combine(uri.LocalPath, "MyAssembly.dll.config") };
var assemblyConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
Using System.Configuration
Public Shared Function AppDomainConfiguration() As Configuration
Dim fileMap As New ExeConfigurationFileMap
fileMap.ExeConfigFilename = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
Return ConfigurationManager.OpenMappedExeConfiguration(fileMap,Configuration.ConfigurationUserLevel.None)
End Function