引用的项目和配置文件

时间:2013-08-01 12:10:32

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

我对这个问题感到有点困惑。

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

  1. 是服务(A)
  2. 帮助项目(B)
  3. 两者都在单独的解决方案文件中。 (A)参考(B) 我感到困惑的是,例如我在(A)中有app.config文件,所以当我参考:

    ConfigurationManager.AppSettings["XYZ"]
    
    项目(B)中的

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

  

您的问题的答案是肯定的

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

答案 2 :(得分:1)

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

  1. 项目A(WebService)
  2. 项目B(班级图书馆)
  3. 如果是这样的话 - 是的。 ConfigurationManager.AppSettings将从启动项目的配置文件中读取,即您的案例中的项目A.

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