我有一个 MVC .NET 应用程序。该解决方案包含应用程序本身和一个单元测试项目,其中还包含集成测试(包括需要数据库连接的数据层测试)。
我决定将两个项目的连接字符串放在单独的配置文件中。我将标记的内容复制<connectionStrings>
到一个新文件中,并在 web 项目的 Web.config 文件和测试项目的 app.config 文件中使用了 configSource 属性。Web 项目像以前一样调试和运行。测试项目无法调试,它退出
'vstest.executionengine.x86.exe'(托管(v4.0.30319)):加载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration.resources\v4.0_4.0.0.0_de_b03f5f7f11d50a3a\System.Configuration .resources.dll'
System.Configuration.dll 中出现“System.Configuration.ConfigurationErrorsException”类型的第一次机会异常
当我尝试运行它时,所有测试都失败了。当我使用 app.config 文件的原始版本时,它们会通过。
这是 app.config 的有效版本:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<connectionStrings>
<add name="TumorModelsDB" connectionString="Data source=tsql2; Initial Catalog=TumorModelle; User Id=anonymized; Password=anonymized;" providerName="System.Data.SqlClient" />
<add name="AzaraIntegrationTest" connectionString="Data Source=tsql2;Initial Catalog=AzaraIntegrationTest;User Id=anonymized; Password=anonymized;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
这是不起作用的版本(与其他项目使用的 web.config 几乎相同):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<connectionStrings configSource="ConnectionStrings.config" />
</configuration>
(完整的)新 ConnectionStrings.config 文件是:
<connectionStrings>
<add name="TumorModelsDB" connectionString="Data source=tsql2; Initial Catalog=TumorModelle; User Id=anonymized; Password=anonymized;" providerName="System.Data.SqlClient" />
<add name="AzaraIntegrationTest" connectionString="Data Source=tsql2;Initial Catalog=AzaraIntegrationTest;User Id=anonymized; Password=anonymized;" providerName="System.Data.SqlClient" />
</connectionStrings>
ConnectionStrings.config 文件的内容与连接字符串标记的旧内容完全相同。configSource 属性中的文件名没有拼写错误。ConnectionStrings.config 文件存在于测试项目中(它不是来自 Web 项目的链接)。Build Action 设置为 Content,Copy to Output 设置为 Do not copy。我没有想法在哪里寻找问题的根源。有任何想法吗?