gpt4 book ai didi

.net - 如何让 .NET 类库读取自己的配置文件?

转载 作者:行者123 更新时间:2023-12-02 20:21:02 26 4
gpt4 key购买 nike

我有一个 .NET 类库,它提供了一组供多个 Web 服务使用的帮助程序函数。该类库必须存储单个设置,特别是一个连接字符串,Web 服务本身不需要看到该设置,因为它们都必须查询相同的数据库。

不幸的是,.NET 没有提供轻松读取 DLL 的 app.config 文件的方法。唯一“简单”的解决方案是将连接字符串存储在每个 Web 服务配置文件中,这完全是胡说八道。

通常情况下,我关心代码的优雅性,但是这次我真的需要一个解决方案,即使它是一个 hack。有没有办法让.NET类库有自己的配置?

<小时/>

编辑:从技术上讲,我可以将所有这些 Web 服务合并到一个 Web 服务中。但是,出于商业原因(每个 Web 服务将单独出售),我不能这样做。

最佳答案

我知道已经过时一年了,但我使用这种方法来读取每个设置:

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);
}

这适用于在类库项目中创建的设置文件。设置文件应命名为“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>

我不需要从配置文件中读取连接字符串,但这应该可以通过更改打开 exe 配置后获得的节组的名称来实现。

我需要这样做的原因是我有一个用户控件,它包装了一个 ActiveX/COM 库,然后将其托管在 IE 中的“对象”标记中。我已经使用了“param”标签,因此我可以使用该机制将设置传递到用户控件中,但这种方法当时似乎是一个合乎逻辑的选择。另外,我不会让这个特殊的问题打败我!

HTH pridmorej:)

关于.net - 如何让 .NET 类库读取自己的配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com