包括类库中的配置文件

时间:2010-01-04 03:56:30

标签: c# .net configuration

我在C#类库中有一个名为MyLibrary.config的配置文件,在vs 2008中。

我创建了另一个项目,比如说一个简单的控制台应用程序,通过“浏览”类库项目的bin目录中的MyLibrary.dll添加引用,当我编译时,MyLibrary.config不包含在bin目录中控制台应用程序中的输出。

如何设置它以便在引用dll时可以包含它?

干杯

3 个答案:

答案 0 :(得分:5)

你做不到。您的控制台应用程序希望找到一个配置文件,其前缀与控制台应用程序的名称相同(MyConsoleApplication.exe - > MyConsoleApplication.exe.config。)。

在某些情况下,您可以使用appSettings element上的file属性共享配置文件:

<appSettings
    file="path">
</appSettings>

请注意path与执行程序集相关。

作为旁注,DLL甚至不使用您在项目中定义的配置文件。同样,从配置文件中读取配置信息,其前缀与执行程序集相同。因此,即使MyLibrary.dll尝试从配置文件中提取配置信息,它也将读取正在执行的程序集的配置文件,而不是MyLibrary.dll.config

有关配置文件如何工作的详细信息,请参阅MSDN

答案 1 :(得分:2)

使用配置文件的标准方法是使其与可执行文件相同,添加对dll的引用将不包括其配置文件,据我所知,dll不会自行加载配置文件,相反,他们依赖于引用它们的可执行文件。

答案 2 :(得分:0)

除了无法做到这一点,我还建议不要这样做。

不要试图将您的设置与DLL库紧密耦合,而是考虑更多的“依赖注入”类型方法 - 即将值依赖性(即设置)传递给您调用的代码(即库)

这方面的优点是您不依赖于存储设置的单一方法。然后,您可以使用数据库,不同的配置文件格式......甚至硬编码。它还通过删除外部文件依赖性使单元测试更容易。

有不同的方法来实现它,但是一个例子是将配置设置传递给使用它们的类的构造函数。