我的理解是,.NET并没有真正“做”的DLL配置文件 - 仅主可执行文件或Web应用程序获取配置文件,以及由可执行/ Web应用程序从阅读中引用的所有DLL。
但在VS2008,如果添加的Web引用一个类库(DLL)项目,它增加了一个Settings.Settings文件和app.config文件到项目中。 它们包含的Web引用的主URL。
那么,这些文件? 有没有办法让DLL读他们无助的,对不对?
编辑:在app.config和Settings.Settings的内容似乎有所作为,但:改变(例如)Web引用URL中对自己的DLL项目的app.config文件没有什么区别,但如果编辑网址在App.config,然后打开Settings.Settings文件,你的app.config所做的更改,然后被复制到Settings.Settings。 然后,该DLL拿起在运行时的新值。 它是如何做呢?
编辑:我在这里的混乱,部分是因为我不是Settings.Settings和App.config中,以及它们如何相互关联的区别不太清楚,也许人们可以帮助与这个问题了。
有没有办法让DLL读他们,但他们强烈的暗示你,他们可能要在实际设置/ config文件中包含哪些DLL的消费者
编辑
在回答OP的注释 - 在设置无论是上次编辑被编译成代码为默认拿,如果没有正确的名称的设置是在运行时出现。 所以这就是为什么的工作。
Visual Studio中有某处添加这个东西,它不知道你想要把它放在哪个应用程序可以访问配置为通过执行以下操作的DLL:
var config = ConfigurationManager.OpenExeConfiguration("MyDll.dll.config");
我发现这个有用的唯一的一次,当我写了一个插件在第三方应用程序中的DLL,并希望我的DLL是可配置的(不是一般人做的时候,我怀疑)。
通常,虽然你只是移动配置部分,你需要到您的app.config或web.config文件。
编辑 -在问候你的更新是有道理的。 Settings.settings应用范围的设置来自应用程序的app.config文件。 对于应用程序范围设置它真的只是一个强类型的类代表这些设置。
还有就是从配置文件中读取DLL的可能性。 只需添加一个app.config文件到DLL项目,并确保您从DLL读取里面的配置设置。 在部署时,您的配置文件需要有命名为“MyDLL.dll.config”(假设你的DLL被命名为“MYDLL.DLL”),并在同一个文件夹中的DLL。
下面的代码应该从我的DLL返回我的ConnectionString:
return ConfigurationManager.AppSettings["ConnectionString"];
文章来源: .NET DLL Settings and Config when there's a Web Reference - whats going on?