pyo*_*yon 17 .net configuration class-library configuration-files
我有一个.NET类库,它提供了一组由多个Web服务使用的辅助函数.此类库必须存储单个设置,特别是连接字符串,Web服务本身无需查看,因为它们都必须查询相同的数据库.
不幸的是,.NET没有提供轻松读取DLL app.config文件的方法.唯一的"简单"解决方案是将连接字符串存储在每个 Web服务配置文件中,这完全是bollocks.
通常,我关心代码优雅,但这次我真的需要一个解决方案,即使它是一个黑客.有没有办法让.NET类库有自己的配置?
编辑:从技术上讲,我可以将所有这些Web服务合并到一个Web服务中.但是,出于商业原因(每个Web服务将单独出售),我不能这样做.
pri*_*rej 10
我知道一年过时了,但我使用这种方法来阅读每个设置:
Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
ConfigurationSectionGroup csg = config.GetSectionGroup("applicationSettings");
ClientSettingsSection c = (ClientSettingsSection)csg.Sections["Add your section name here, e.g. Your.Namespace.Properties.Settings"];
foreach (SettingElement e in c.Settings)
{
Debug.WriteLine("SETTING NAME: " + e.Name);
SettingValueElement v = e.Value;
Debug.WriteLine("SETTING VALUE: " + v.ValueXml.InnerText);
}
Run Code Online (Sandbox Code Playgroud)
这适用于在类库项目中创建的设置文件.设置文件应命名为"YourLibrary.dll.config",然后部署在库的位置.设置文件应具有与此类似的内容:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Your.NameSpace.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<applicationSettings>
<Your.NameSpace.Properties.Settings>
<setting name="YourLibrary_WebReferences_YourWebService" serializeAs="String">
<value>http://localhost:3861/YourWebService.asmx</value>
</setting>
<setting name="AnotherSetting" serializeAs="String">
<value>False</value>
</setting>
</Your.NameSpace.Properties.Settings>
</applicationSettings>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我不需要从配置文件中读取连接字符串,但是应该可以通过更改打开exe配置后获得的节组的名称来实现.
我需要这样做的原因是我有一个用户控件,它包装一个ActiveX/COM库,然后在IE中以"object"标签托管.我已经使用了"param"标签,所以我可以使用该机制将设置传递给用户控件,但这种方法在当时似乎是一个合乎逻辑的选择.另外,我不会让这个特殊问题打败我!
HTH pridmorej :)
我想你正在寻找:
ConfigurationManager.OpenExeConfiguration(string exePath)
Run Code Online (Sandbox Code Playgroud)
要么
ConfigurationManager.OpenMappedExeConfiguration(
new ExeConfigurationFileMap() {
ExeConfigFilename = path + "app.config"
}, ConfigurationUserLevel.None);
Run Code Online (Sandbox Code Playgroud)
哪个返回一个Configuration对象. ConfigurationManager上的MSDN doc
试试这个问题,了解如何获取DLL路径.
| 归档时间: |
|
| 查看次数: |
18551 次 |
| 最近记录: |