我的dll被引用时,我可以自动将web / app配置值添加到项目中吗?

时间:2011-07-28 11:55:53

标签: .net configuration reference

如果一个dll依赖于一小组应用程序设置键的存在,或者在运行时可能是一个小的自定义xml部分,是否有一个事件我可以在我的程序集中响应,当引用发生时我可以用于写入项目的配置文件以确保存在默认值?

3 个答案:

答案 0 :(得分:3)

不,你不能,而且有理由这样做。

如果某个库可以更改我的应用程序配置文件,我会感到害怕。如果我在运行中生成它会怎么样?如果另一个实用程序从网上下载该怎么办?如果我使用app.config tranformations怎么办?如果您的代码完全错误并且您搞砸了我现有的设置怎么办?

毕竟,我不希望我的应用程序有配置文件,该怎么办?如果我的应用程序是SharePoint webpart或某个网站插件,并且无法从开发环境访问(生产) web.config

如果您认为您的图书馆确实需要XML配置keep it in a configSections,但它真的由调用应用程序来提供这些设置。创建一个设置类,库调用者可以使用该设置类作为指定XML配置的替代方法,并假设其中包含默认值。引入某种静态属性来保存这些设置。

NLog为例。它允许使用code APIXML configuration指定两者设置,这些设置也可以in application configuration section, a separate file in the same directory or in the library directory。这对你的目的来说可能是一种过度杀伤力;我只是说在坚持使用特定配置解决方案之前应该考虑所有用例

答案 1 :(得分:3)

虽然您要求的具体事项(在程序集中实现自定义 OnReferenced 逻辑)是不可能的,但您正在描述的用例(某些库只需要主机应用程序提供一些配置设置)很常见。幸运的是,NuGet是一个出色的.Net包管理器,它提供了一种非常巧妙的方法来实现这一目标。

它要求你做的就是创建一个包含程序集的包,然后使用NuGet Visual Studio扩展来引用该包。

有关如何创建包的介绍,请参阅hereThis链接将精确显示如何将配置文件转换添加到NuGet包。

NuGet也被广泛覆盖here on StackOverflow,因此您应该可以轻松找到所有内容。

答案 2 :(得分:1)

点网框工作不提供写回配置文件的方法..但它只是一个XML文件,其中包含许多函数,快速搜索Writing to Your .NET Application's Config File