我对这个问题感到有点困惑。
我的情况是我在C#中有两个独立的项目:
两者都在单独的解决方案文件中。 (A)参考(B) 我感到困惑的是,例如我在(A)中有app.config文件,所以当我参考:
ConfigurationManager.AppSettings["XYZ"]
项目(B)中的。这是否意味着我正在使用项目(A)的app.config文件?
答案 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)
如果我理解正确,你的解决方案中有两个项目
如果是这样的话 - 是的。 ConfigurationManager.AppSettings将从启动项目的配置文件中读取,即您的案例中的项目A.
但是,如果您有不同的项目,例如独立运行,例如两个不同的服务项目Service1和Service2都将引用它们各自的app.config / web.config文件。