我在C#类库中有一个名为MyLibrary.config的配置文件,在vs 2008中。
我创建了另一个项目,比如说一个简单的控制台应用程序,通过“浏览”类库项目的bin目录中的MyLibrary.dll添加引用,当我编译时,MyLibrary.config不包含在bin目录中控制台应用程序中的输出。
如何设置它以便在引用dll时可以包含它?
干杯
答案 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库紧密耦合,而是考虑更多的“依赖注入”类型方法 - 即将值依赖性(即设置)传递给您调用的代码(即库)
这方面的优点是您不依赖于存储设置的单一方法。然后,您可以使用数据库,不同的配置文件格式......甚至硬编码。它还通过删除外部文件依赖性使单元测试更容易。
有不同的方法来实现它,但是一个例子是将配置设置传递给使用它们的类的构造函数。