将app.config与类库一起使用

时间:2009-03-27 15:52:25

标签: .net configuration

我经常需要创建一个.Net类库,它需要app.config来处理数据库连接字符串等内容。但是,这些设置必须位于调用应用程序的app.config或web.config中。如果我想在多个应用程序中分发DLL,那就很麻烦,因为我必须将这些设置复制到每个应用程序的app.config中。

我考虑过通过类库中的代码手动读取配置设置,但这也是一个很大的痛苦。有没有人对在类库中加载app.config设置的最佳方法有任何建议?

9 个答案:

答案 0 :(得分:15)

我知道这不是你想听到的,但入口点的配置文件是放置这些设置的合理位置。如果每个库都需要自己的配置文件,那么编辑每个文件而不仅仅是一个文件会很繁琐。

我会有一个文本文件,默认设置包含在库中(作为项目的一部分),可以与库一起分发以进行默认设置配置(可以将其复制并粘贴到配置文件中) )。

答案 1 :(得分:5)

您可以做的一件事就是为您的库创建一个单独的设置文件,然后您只需要在您的条目应用配置文件中引用它。

有关此信息,请参阅accepted answer中的this question

答案 2 :(得分:3)

让每个类库在自定义ConfigurationSection中定义配置设置。

然后将自定义节处理程序添加到process.exe.config文件中。

This MSDN article在解释中非常全面,在VB和C#中都有示例。

它涉及编写一些非常重复的代码--Dmitryr创建了this tool来从XML配置的片段生成配置节,这可能会有所帮助。

答案 3 :(得分:3)

这是另一种选择。

首先尝试以下方法,尝试找到“合并”app.configs,甚至在DLL中放置配置项(并尝试解决“设计”问题)的方法,试试这个:

创建您的DLL,但在需要配置项的位置,创建一个公共属性。在DLL中实例化类时,可以使用拥有应用程序中的配置项填充这些属性。

现在配置在所有者级别进行管理,DLL是可移植的,因为您必须在运行时传递所需的内容。

不再有DLL.config!

答案 4 :(得分:1)

转到App properties - >设置标签;在那里添加你的设置。

使用Properties.Settings.Default.<SettingName>访问该设置。就是这样!

答案 5 :(得分:0)

对每个类库使用自己的配置文件不是(大)问题。如果您使用vb.net,您可以通过“设置”页面上的“我的项目”面板添加值。

您唯一要做的就是在类库设置上调用“My.Settings.Save”(而不仅仅是在主应用程序设置文件中)。

也适用于c#(但可能需要更多的手动工作)。

答案 6 :(得分:0)

如果您使用的是 NUnit ,请将您的app.config文件命名为* .nunit项目文件名。例如,如果您调用项目“ClassLibraryA.nunit”,则将类库配置文件命名为“ClassLibraryA.config”。它们还需要驻留在同一文件夹/目录中。 NUnit实际上是使用它作为主配置文件。

如果您有自定义代码,那么您需要确保您的app.config(或web.config)引用了类库的app.config文件。应用程序只关心root app.config或web.config。因此,您需要添加一个指向类库app.config的自定义配置部分。

答案 7 :(得分:0)

您可以创建自己的XML文件(如果需要,可以将其称为appConfig.xml或其他内容),使用System.Xml而不是System.Configuration来读取它,并将其与您的dll一起包含。

答案 8 :(得分:0)

在其他解决方案中创建您的类库。如果将它们保存在同一个解决方案中,则会读取最高层次结构的app.config。