App.config多项目访问策略

时间:2011-10-31 16:13:11

标签: c# .net-3.5

我当前的解决方案有3个项目,带有2个app.config(一个用于常用设置,另一个用于服务设置)。截至目前,我只是创建静态类来充当访问值的中介。我这样做,所以我不必在任何地方写ConfigurationManager.AppSettings["SomeKey"]。这可以正常工作,直到您想要从其他项目访问app.config文件。

以下是我目前正在做的事情(为简洁起见省略了所有属性)。

public class ServiceConfiguration
{
    public static readonly string SyncEvery = ConfigurationManager.AppSettings["SyncEveryMinutes"];
}

如何访问位于另一个项目中的app.config文件?我想也许设置VS将文件复制到输出目录就行了但是我的配置对象仍然是空的。

2 个答案:

答案 0 :(得分:2)

我无法想象很多很好的理由来首先阅读其他应用程序的配置,它只是打开了一堆不值得处理的蠕虫。

公开一个将项目配置的值公开为属性的类,并从消费类中访问它们。

public class FirstProjectClass 
{
  public static int SyncEveryMinutes
  {
      get { return (int)ConfigurationManager.AppSetting["SyncEveryMinutes"] };
  }
}


public class SecondProjectClass
{
  public void ShowConfigedValue()
  {
      Console.Writeline("Syncing every {0} minutes", FirstProjectClass.SyncEveryMinutes);
  }
}

如果您有复杂的配置要求,您还可以查看custom configuration sections

答案 1 :(得分:1)

ConfigurationManager.OpenExeConfiguration可能会有所帮助: {{3P>

另外:杰森说的话 - 这通常是一个坏主意。