Проект тестирования Visual Studio 2012 смешанного режима

В настоящее время я работаю в Visual Studio 2012 RC с тестовым проектом. Я включил следующие сборки:

  • Microsoft.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 Test, который игнорирует файл 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);

Ответы

Ответ 1

Это, похоже, исправлено в Visual Studio 2012, когда он прошел RTM. Нет необходимости обновлять конфигурационные файлы

Я тестировал это в Visual Studio 2012 Update 4 и Visual Studio 2013 Update 1 RC, и ваш код работает безупречно с вышеупомянутыми ссылками на код и сборку и без обновления файла конфигурации тестового бегуна. Возможно, это было нарушено в бета-версии или релизе кандидата Visual Studio 2012, но если бы это было так, то теперь оно исправлено.

Как упоминает Ханс, вы можете обновить файл .config для vstest.executionengine.x86.exe.config, но это изменит поведение для всех тестовых проектов на вашем компьютере и должно применяться ко всем людям, работающим над вашим проектом (и на сервере сборки если вы используете его). Это должно быть в крайнем случае!

Ответ 2

Убедитесь, что у вас не установлена ​​более старая версия .Net 4.0. Если вы загрузили либо бета-версию VS 2010, либо бета-версию VS 2012, это может произойти, а затем по какой-то причине оно запустится неправильно. О, и это будет бок о бок с текущим .Net 4.0. ссылка