1

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

这是调用堆栈的概要:

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

任何帮助表示赞赏!

4

2 回答 2

5

不确定这是否适用于您,但您需要确保配置字符串在您的单元测试项目的 app.config 中,而不是在您的 DataLayer 项目中。

于 2009-03-09T03:47:48.603 回答
2

这可能对一些处理Settings.settingsand的人有所帮助App.config

GenerateDefaultValueInCod在 Visual Studio(在我的例子中是 VS2008)中编辑 Settings.settings 网格中的任何值(行)时,请注意属性窗格中的e 属性。

如果设置GenerateDefaultValueInCode为True(此处默认为True!),则默认值编译成exe(或dll),在纯文本编辑器中打开时可以发现它嵌入在文件中。

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

一场噩梦,整个互联网上都没有这方面的信息。

于 2009-08-26T08:51:47.880 回答