Assembly的App.Config被忽略了;正在读取Machine.config

时间:2009-03-09 03:42:49

标签: c# visual-studio unit-testing configuration app-config

在针对我的DAL运行VS2008 单元集成测试时,我发现程序集正在读取machine.config而不是程序集app.config

这是调用堆栈的纲要:

  • 单元测试项目具有调用DataLayer项目的方法
  • MyDataLayer类继承自基类。方法称为GetStuff()
  • 基类正在使用System.Configuration。一切都好。
  • 在代码中调用此属性:ConfigurationManager.ConnectionStrings["MyConnStr"]实际上返回null,因为它显然没有找到。
  • 检查MyDataLayer类,是的,MyConnStr就在那里。
  • 检查集合ConnectionStrings,是的,它有一个连接字符串。这是在C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
  • 中的machine.config中的那个
  • 我不确定为什么我的DAL的app.configmachine.config
  • 取代

感谢任何帮助!

2 个答案:

答案 0 :(得分:5)

不确定这是否适用于您,但您需要确保配置字符串位于Unit Test Project的app.config中,而不是DataLayer项目中。

答案 1 :(得分:2)

这有助于处理Settings.settingsApp.config的某些人:

在编辑Visual Studio中的Settings.settings网格中的任何值(行)时,在“属性”窗格中注意GenerateDefaultValueInCod e属性(在我的情况下为VS2008)。

如果将GenerateDefaultValueInCode设置为True(True是默认值!),默认值将被编译到exe(或dll)中,当您在平面中打开它时,您可以在文件中找到它文本编辑器。

我正在使用控制台应用程序,如果我在exe中有默认值,应用程序总是忽略放在同一目录中的配置文件!

相当噩梦,整个互联网都没有这方面的信息。