Unit testing Visual Studio 2012测试项目混合模式运行时

Unit testing Visual Studio 2012测试项目混合模式运行时,unit-testing,.net-4.0,.net-2.0,visual-studio-2012,Unit Testing,.net 4.0,.net 2.0,Visual Studio 2012,我目前在Visual Studio 2012 RC中从事一个测试项目。我已包括以下组件: Microsoft.SqlServer.Smo Microsoft.SqlServer.SmoExtend Microsoft.SqlServer.ConnectionInfo Microsoft.SqlServer.Management.Sdk.Sfc 这些程序集是在2.0.50727版本中构建的,我在.NET4.0中有一个测试项目。因此,基于此信息,我在项目中添加了一个app.config文件,其中

我目前在Visual Studio 2012 RC中从事一个测试项目。我已包括以下组件:

  • Microsoft.SqlServer.Smo
  • Microsoft.SqlServer.SmoExtend
  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Management.Sdk.Sfc
这些程序集是在2.0.50727版本中构建的,我在.NET4.0中有一个测试项目。因此,基于此信息,我在项目中添加了一个app.config文件,其中包含以下行:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

检查以确保未安装较旧版本的.Net 4.0。如果你下载了2010版VS beta版或2012版VS beta版,可能会发生这种情况,然后出于某种原因,它会出现错误的版本。哦,它将与当前的.NET4.0并行安装

这似乎在VisualStudio2012的RTM中得到了修复。无需更新配置文件

我已经在Visual Studio 2012 Update 4和Visual Studio 2013 Update 1 RC中测试了这一点,并且您的代码可以完美地使用上述代码和程序集引用,而无需更新测试运行程序的配置文件。这可能是在VisualStudio2012的测试版或候选版本中被打破的,但如果是,它现在似乎已经被修复


正如Hans提到的,您可以为
vstest.executionengine.x86.exe.config
更新
.config
文件,但这会改变您机器上所有测试项目的行为,并且需要应用于所有在您的项目上工作的人(如果您正在使用构建服务器,则应在构建服务器上)这应该是最后的选择

它不能只是“app.config”,它必须与执行代码的程序名匹配,并存储在与exe相同的目录中。哪一个是测试跑步者。我猜是C:\ProgramFiles(x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.config。请注意,此文件已存在。痛苦。啊,这就是为什么我不能让它工作。我会试试你的建议,汉斯,然后回来汇报。你好,汉斯,成功了!你是绝对正确的,只是现在我需要找到一些东西,我可以让其他开发人员,但这并不重要。再次感谢@HansPassant你应该把它作为一个答案,并让它被接受:)@MichielPeeters你是如何把它传播给其他开发者的?或者你找到了另一种方法来解决这个问题了吗?这里是Visual Studio Professional 2012,11.0.61030.00更新4,我仍然遭受着这个问题的困扰。也就是说,在RTM之外仍有破损。
    var connectionString = new SqlConnectionStringBuilder()
    {
        DataSource = @"(local)",
        IntegratedSecurity = true
    }.ConnectionString;

    var sql = "alter database [Test] set single_user with rollback immediate go ";
    sql += "drop database [Test] go ";
    sql += "create database [Test] go ";
    sql += Properties.Resources.Test;

    var connection = new SqlConnection(connectionString);
    var server = new Server(new ServerConnection(connection));

    server.ConnectionContext.ExecuteNonQuery(sql);