如果一个dll依赖于一小组应用程序设置键的存在,或者在运行时可能是一个小的自定义xml部分,是否有一个事件我可以在我的程序集中响应,当引用发生时我可以用于写入项目的配置文件以确保存在默认值?
答案 0 :(得分:3)
不,你不能,而且有理由这样做。
如果某个库可以更改我的应用程序配置文件,我会感到害怕。如果我在运行中生成它会怎么样?如果另一个实用程序从网上下载该怎么办?如果我使用app.config tranformations怎么办?如果您的代码完全错误并且您搞砸了我现有的设置怎么办?
毕竟,我不希望我的应用程序有配置文件,该怎么办?如果我的应用程序是SharePoint webpart或某个网站插件,并且无法从开发环境访问(生产) web.config ?
如果您认为您的图书馆确实需要XML配置keep it in a configSections
,但它真的由调用应用程序来提供这些设置。创建一个设置类,库调用者可以使用该设置类作为指定XML配置的替代方法,并假设其中包含默认值。引入某种静态属性来保存这些设置。
以NLog为例。它允许使用code API和XML 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扩展来引用该包。
有关如何创建包的介绍,请参阅here。 This链接将精确显示如何将配置文件转换添加到NuGet包。
NuGet也被广泛覆盖here on StackOverflow,因此您应该可以轻松找到所有内容。
答案 2 :(得分:1)
点网框工作不提供写回配置文件的方法..但它只是一个XML文件,其中包含许多函数,快速搜索Writing to Your .NET Application's Config File