无法读取app.config,为什么?

时间:2010-03-28 06:52:30

标签: .net app-config

我正在尝试从app.config获取数据,而且我总是得到零。 App.config在这里:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="ExplorerContext" connectionString="metadata=res://*/ExplorerData.csdl|res://*/ExplorerData.ssdl|res://*/ExplorerData.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MYT\SQLEXPRESS;Initial Catalog=Explorer;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

有人可以解释什么是错的,为什么我不能得到这些值, System.Configuration.ConfigurationManager.AppSettings.Count始终为0

我指示我使用类库,我正在尝试使用NUnit项目进行检查。此类库调用另一个使用ADO.NET Entity Project的项目(类库)。

3 个答案:

答案 0 :(得分:7)

您没有使用AppSettings!请改为ConfigurationManager.ConnectionStrings

答案 1 :(得分:1)

您的配置文件中没有声明任何AppSettings。如果您尝试获取Connection字符串,则应使用:

var connectionString = ConfigurationManager.ConnectionStrings["ExplorerContext"].ConnectionString;

编辑如果您使用的是NUnit,只要它以DLL命名,就可以提供配置文件。例如,如果DLL名为Foo.dll,则配置文件必须命名为Foo.dll.config。 Visual Studio不会为您执行此操作的DLL。您必须手动创建文件,并且必须确保它进入正确的bin文件夹。

有关详情,请参阅NUnit Configuration Files

答案 2 :(得分:1)

  

我忘了指定我使用课程   图书馆,我正试图检查   使用NUnit项目。而这堂课   库调用另一个项目(类   库)也使用ADO.NET实体   项目

您需要将配置信息放入主应用 - 使用/调用具有EF模型的类库项目的应用程序。 .NET配置本身不支持类库级app.config。

因此,在您的测试环境中,主测试工具需要在其app.config中包含这些条目。

如果你坚持你的类库程序集有自己的配置 - 请查看Jon Rista的Cracking the Mysteries of .NET 2.0 Configuration,他详细解释了如何使用ConfigurationManager.OpenExeConfiguration调用来打开任何* .config文件和在.NET 2.0配置系统中使用它。它有效 - 但它更多的工作,我不会真的推荐它。