2013-08-01 99 views
1

我对这个问题有点困惑。引用的项目和配置文件

我的情况是我在C#两个单独的项目:

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

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

ConfigurationManager.AppSettings["XYZ"] 

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

+1

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

回答

3

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

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

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

所以,如果你有一个ProjA(控制台应用程序),ProjB(WinForms应用程序),他们都使用ProjC(共享库)的解决方案,请确保ProjC和ProjB的配置文件因为ProjA和ProjB在运行时是它们自己的AppDomain实例。

+0

所以你建议我将所有的配置信息添加到一个配置文件,即(A) –

+0

@DawoodAwan是的,这是正确的 – Ehsan

1

回答你的问题是YES

另一点,这里要注意的是,你的主要项目的app.config文件始终部署(未引用的项目),除非你明确地复制引用项目的app.config。因此,它始终是更好地做你的主要项目,你的情况是一个

1

如果我理解正确,你必须在UR解决方案

  1. A计划两个项目(的app.config中的所有工作WebService的)
  2. 项目B(类库)

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

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