15

我目前正在使用测试项目在 Visual Studio 2012 RC 中工作。我已包括以下程序集:

  • 微软.SqlServer.Smo
  • Microsoft.SqlServer.SmoExtend
  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Management.Sdk.Sfc

这些程序集是在 2.0.50727 版本中构建的,我在 .NET 4.0 中有一个测试项目。因此,基于这些信息,我在项目中添加了一个 app.config 文件,其中包含以下几行:

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

当我要运行它时,我一直收到以下消息:

混合模式程序集是针对运行时版本“v2.0.50727”构建的,如果没有额外的配置信息,则无法在 4.0 运行时中加载。

这是 Visual Studio 2012 RC 测试项目中的一个错误,它忽略了 app.config 文件,还是我做错了什么?

有关其他信息,我还包括了我的测试代码:

    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);
4

2 回答 2

1

这似乎在 Visual Studio 2012 中得到修复,当它进入 RTM 时。无需更新配置文件

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

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

于 2013-12-30T20:37:09.313 回答
0

Check to make sure you don't have an older version of .Net 4.0 installed. If you downloaded either the 2010 VS beta or the 2012 VS beta, that can happen and then for some reason it will spool up the wrong one. Oh, and it would be a side-by-side install with the current .Net 4.0 . reference

于 2012-08-15T21:28:15.470 回答