2010-01-04 63 views
4

我有叫MyLibrary.config我的C#类库一个配置文件,配置文件在VS 2008包括类库

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

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

干杯

回答

5

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

在某些情况下,你可以通过在appSettings elementfile属性共享配置文件:

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

注意path相对于执行程序集。

作为一个侧面说明,DLL甚至不使用您在项目中定义的配置文件。同样,配置信息是从配置文件中读取的,前缀与正在执行的程序集相同。因此,即使MyLibrary.dll试图从配置文件中抽取配置信息,它也会读取执行程序集的配置文件,而不是MyLibrary.dll.config

有关配置文件的工作方式,请参阅MSDN

2

标准的方式来使用配置文件是有它一样的可执行文件,添加到一个DLL的引用将不包括它的配置文件,据我知道的DLL不加载配置文件,而是依赖引用它们的可执行文件。

0

除了不能做到这一点,我还建议不采取这种做法。

与其试图将您的设置紧密耦合到DLL库,考虑更多的“依赖注入”类型方法 - 即将值依赖关系(即设置)传递给您调用的代码的位置(即库)。

在这方面的优点是你没有绑定到单一的存储设置的方法。然后您可以使用数据库,不同的配置文件格式......甚至可以使用硬编码。它还可以通过删除外部文件依赖关系来简化单元测试。

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