【问题标题】:Assembly's App.Config is being ignored; Machine.config being read instead装配的 App.Config 被忽略;改为读取 Machine.config
【发布时间】:2010-10-12 02:46:52
【问题描述】:

在针对我的 DAL 运行我的 VS2008 unit 集成测试时,我发现程序集正在读取 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 取代

感谢任何帮助!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 雷,你是个怪物!我所要做的就是参考 System.Configuration 并将 DataLayer 项目中的 App.Config 复制/共享到我的 UnitTest 项目中,它就可以工作了。太棒了!
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 1970-01-01
      • 2015-10-16
      • 2017-03-16
      • 1970-01-01
      • 2012-01-09
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多