【问题标题】:Change the Default AppConfig at runtime with custom config sections使用自定义配置部分在运行时更改默认 AppConfig
【发布时间】:2012-10-01 19:18:54
【问题描述】:

我主要负责为我的项目使用大量外部资源的 DLL。我想为我的项目创建一个名为 Infrastructure.config 的配置文件,客户项目可以将其复制到他们的项目中,而无需剪切并粘贴到他们自己的应用程序或 Web 配置中。我在以下位置尝试了以下建议:

Change default app.config at runtime

在我尝试使用使用自定义部分的 Log4Net 之前,该解决方案运行良好。当我尝试使用上述链接中的代码时,我收到了一个未知的配置部分。当我使用没有上述代码的相同配置文件时,它可以正常工作。有趣的是,当我尝试使用 TransactionScope 时它爆炸了。因此,在我的配置中使用 TransactionScope 和 configurationSections 的某种组合使其失败。有什么建议吗?

我希望每个客户端应用程序或网站都有自己的配置来配置自己的值,而我的 infrsatucture.dll 应该能够组合自己的值、自定义 SOAP 绑定和 Log4Net。

【问题讨论】:

    标签: c# configuration app-config


    【解决方案1】:

    听起来像 Dependency Injection 适合解决的问题。

    我强烈建议不要创建依赖于配置文件(应用程序设置或部分)的应用程序/dll,而是让您的界面公开其工作所需的内容。这些可以是其他 DLL (log4net) 公开的外部类/接口,或者您可以创建自己的并允许其他开发人员根据您所需的抽象/接口类派生具体类。

    【讨论】:

    • 这基本上是反向发生的事情。我正在处理 Infrasdtructure.dll 的 DLL 正在实现由核心 DLL 指定的接口。这些接口之一是用于日志记录。我试图避免让每个客户端将特定于 Infrastructure.dll 的配置设置复制到他们的配置文件的做法。我希望我们可以避免这种情况。现在,如果我的 DLL 是一个单独的运行进程(例如 Web 服务),这将不是问题。我只会有我自己的配置。然而,在这个项目中,架构师只想使用普通的旧 DLL。
    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2015-07-11
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多