【问题标题】:Referenced Projects and Config Files引用的项目和配置文件
【发布时间】:2013-08-01 12:10:32
【问题描述】:

我对这个问题有点困惑。

我的情况是我在 C# 中有两个独立的项目:

  1. 是服务(A)
  2. 辅助项目 (B)

两者都在单独的解决方案文件中。 (A) 有参考 (B) 我感到困惑的是,例如我在 (A) 中有 app.config 文件,所以当我提到:

ConfigurationManager.AppSettings["XYZ"]

在项目 (B) 中。这是否意味着我正在使用项目 (A) 的 app.config 文件?

【问题讨论】:

  • 您只使用 1 个配置,即主项目的配置。从那里复制粘贴 B 的东西。

标签: c# visual-studio-2010 projects-and-solutions projects


【解决方案1】:

是的,ConfigurationManager 类和底层配置文件可用于整个 AppDomain 实例。由于您的库将被服务使用,因此它成为服务的 AppDomain 的一部分并继承对该配置文件的访问权限。

如果您希望其他二进制文件(项目 B)拥有它自己的,那么您需要在它自己的 AppDomain 中创建它的实例。这比它的价值更麻烦,所以我不会尝试这样做。

任何将使用此库的 AppDomain 都将提供其配置设置。这意味着,如果库有自己的设置,服务本身不使用,那么您需要确保使用该库的任何可执行文件都具有这些设置。

因此,如果您的解决方案包含 ProjA(控制台应用程序)、ProjB(WinForms 应用程序),并且它们都使用 ProjC(共享库),请确保 ProjC 正在寻找的设置同时在 ProjA 和 ProjB 的配置文件中,因为ProjA 和 ProjB 在运行时是它们自己的 AppDomain 实例。

【讨论】:

  • 所以您建议我将所有配置信息添加到单个配置文件中,即 (A) 中
【解决方案2】:

你的问题的答案是肯定的

这里要注意的另一点是,除非您明确复制引用项目的 app.config,否则始终会部署主项目的 app.config 文件(而不是引用的项目)。因此,最好在主项目的 app.config 上完成所有工作,在您的情况下是 A

【讨论】:

    【解决方案3】:

    如果我理解正确,您的解决方案中有两个项目

    1. 项目 A (WebService)
    2. 项目 B(类库)

    如果是这样的话 - 是的。 ConfigurationManager.AppSettings 将从启动项目的配置文件中读取,在你的例子中是项目 A。

    但是,如果您有不同的项目独立运行,例如两个不同的服务项目 Service1 和 Service2 都将引用它们各自的 app.config/web.config 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 2018-09-07
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多