在针对我的DAL运行VS2008 单元集成测试时,我发现程序集正在读取machine.config
而不是程序集app.config
。
这是调用堆栈的纲要:
MyDataLayer
类继承自基类。方法称为GetStuff()
System.Configuration
。一切都好。ConfigurationManager.ConnectionStrings["MyConnStr"]
实际上返回null,因为它显然没有找到。MyDataLayer
类,是的,MyConnStr就在那里。ConnectionStrings
,是的,它有一个连接字符串。这是在C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
app.config
被machine.config
感谢任何帮助!
答案 0 :(得分:5)
不确定这是否适用于您,但您需要确保配置字符串位于Unit Test Project的app.config中,而不是DataLayer项目中。
答案 1 :(得分:2)
这有助于处理Settings.settings
和App.config
的某些人:
在编辑Visual Studio中的Settings.settings网格中的任何值(行)时,在“属性”窗格中注意GenerateDefaultValueInCod
e属性(在我的情况下为VS2008)。
如果将GenerateDefaultValueInCode
设置为True(True是默认值!),默认值将被编译到exe(或dll)中,当您在平面中打开它时,您可以在文件中找到它文本编辑器。
我正在使用控制台应用程序,如果我在exe中有默认值,应用程序总是忽略放在同一目录中的配置文件!
相当噩梦,整个互联网都没有这方面的信息。