装配的 App.Config 被忽略;改为读取 Machine.config
Posted
技术标签:
【中文标题】装配的 App.Config 被忽略;改为读取 Machine.config【英文标题】:Assembly's App.Config is being ignored; Machine.config being read instead 【发布时间】: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.config
被 machine.config
取代
感谢任何帮助!
【问题讨论】:
【参考方案1】:不确定这是否适用于您,但您需要确保配置字符串在您的单元测试项目的 app.config 中,而不是在您的 DataLayer 项目中。
【讨论】:
雷,你是个怪物!我所要做的就是参考 System.Configuration 并将 DataLayer 项目中的 App.Config 复制/共享到我的 UnitTest 项目中,它就可以工作了。太棒了!【参考方案2】:这可能对处理Settings.settings
和App.config
的一些人有所帮助:
在 Visual Studio(在我的例子中是 VS2008)中编辑 Settings.settings 网格中的任何值(行)时,请注意“属性”窗格中的 GenerateDefaultValueInCod
e 属性。
如果将GenerateDefaultValueInCode
设置为True(这里默认为True!),默认值编译成exe(或dll),在纯文本编辑器中打开时可以发现它嵌入在文件中.
我正在开发一个控制台应用程序,如果我在 exe 中有默认设置,应用程序总是会忽略放置在同一目录中的配置文件!
真是一场噩梦,整个互联网上都没有这方面的信息。
【讨论】:
以上是关于装配的 App.Config 被忽略;改为读取 Machine.config的主要内容,如果未能解决你的问题,请参考以下文章
vstest.console.exe 忽略 app.config
自定义 FieldSetMapper 中忽略的自动装配 JpaRepository 保存