我有一个.NET 4类库项目,由多个Web项目使用。在这个类库中,我需要获得一个数据库连接字符串,并且它对于所有Web项目都需要相同。目前我已将其作为每个 web.config 文件中的设置,但这并不理想。有没有办法让我的配置与DLL一起存储,但仍然允许在运行时修改它(即硬编码连接字符串已经出来)?
对于DLL,App.config似乎通常被忽略,即使它已重命名为 assemblyname .dll.config并复制到Web的 bin 目录中。我尝试将其设置为“应用程序设置”(即使用从System.Configuration.ApplicationSettingsBase
派生的自动生成的类),此出现,但更改DLL .config文件中的值运行时没有效果,所以我怀疑它只是使用设置的硬编码默认值。
答案 0 :(得分:2)
如果使用您的库,机器上的所有程序应该相同,您可以将设置存储在注册表数据库中。
答案 1 :(得分:2)
就个人而言,我会这样做(即使你以某种方式设法让它工作,是的,内置的配置机制不会让你)。我总是存储应用程序的行为设置应用程序自己的配置。我已经完成并看到了将这些值存储在数据库中的系统 - 这对连接字符串来说当然不太可行。
这样的DLL是被动的(或者应该是),并且只对来自其用户的显式调用起作用,因此不需要任何配置用于它自己的目的(除了可能是“全局”诊断的东西,但即便如此...... ),因为调用者可以在使用相应功能时或之前提供它。
如果您有多个应用程序偶然需要相同的设置,那么DLL就不应该知道甚至不关心。
为了使事情更易于管理,您可以考虑将此问题重新定位到构建或部署过程中。在您的应用程序配置文件(web.config文件)中为connectionstring添加一个占位符。然后在构建或部署期间(更好地满足您的需求)将该占位符替换为真实的连接字符串,您可以将其保存在单个文件中。
答案 2 :(得分:0)
无法改变这一点。这就是.NET的工作原理。您必须将DLL app.config中的设置复制到web.config或 programName .exe.config文件。