Исключение выдает адаптер модульного теста: невозможно загрузить один или несколько запрошенных типов

Я пытаюсь запустить тесты SpecFlow из командной строки Visual Studio 2010 и получаю довольно тупое сообщение об ошибке:

Исключение выдает адаптер модульного теста: невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации.

Некоторая информация о моем проекте VS2010:

Windows 7 Enterprise, 64-разрядная (Версия 6.1.7601 с пакетом обновления 1, сборка 7601)Visual Studio 2010 Premium (v10.0.40219.1 SP1Rel)Использование кодированных тестов пользовательского интерфейсаИспользование SpecFlow 1.9.0, который делегирует API тестирования CodedUIMSTest.NET v4.0.30319Целое решение компилируется в 32-битный код (у меня есть коллеги, использующие XP до сих пор)

У меня есть событие после сборки, которое копирует несколько DLL-файлов из моего каталога пакетов NuGet в целевой каталог:

copy $(SolutionDir)packages\SpecBind.1.2.1.71\lib\net45\SpecBind.dll $(TargetDir)
copy $(SolutionDir)packages\SpecBind.CodedUI.1.2.1.71\lib\net45\SpecBind.CodedUI.dll $(TargetDir)

Без этого mstest почему-то не смог бы загрузить несколько сборок SpecFlow.

Соответствующие части App.config тестового проекта

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
    <section name="specBind" type="SpecBind.Configuration.ConfigurationSectionHandler, SpecBind" />
  </configSections>

  <connectionStrings>
    ...
  </connectionStrings>

  <specFlow>
    <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
    <unitTestProvider name="MsTest" generatorProvider="Specflow.CodedUI.MsTestCodedUiGeneratorProvider, Specflow.CodedUI" runtimeProvider="TechTalk.SpecFlow.UnitTestProvider.MsTest2010RuntimeProvider, TechTalk.SpecFlow" />
    <stepAssemblies>
      <!-- This attribute is required in order to use StepArgument Transformation as described here; 
           https://github.com/marcusoftnet/SpecFlow.Assist.Dynamic/wiki/Step-argument-transformations  -->
      <stepAssembly assembly="SpecFlow.Assist.Dynamic" />
      <stepAssembly assembly="SpecBind" />
    </stepAssemblies>
  </specFlow>
  <specBind>
    <browserFactory provider="SpecBind.CodedUI.CodedUIBrowserFactory, SpecBind.CodedUI" browserType="IE" />
    <!-- For additional details on SpecBind configuration options see the project site. -->
  </specBind>
</configuration>

Команда, которую я использовал для запуска тестов:

C:\path\to\bin\Debug> mstest /testcontainer:MyTests.dll /test:SpecFlowFeatureName

Loading MyTests.dll
Starting Execution...

Results         Top Level Tests
--------        ------------------
Failed          ...
Failed          ...
Failed          ...

...

Я искал решение проблемы все выше и ниже, и все, что я продолжаю находить, это ссылки на VS2008 и отключение Code Coverage. У меня VS2010, и в моих локальных тестовых настройках кодовое покрытие не включено.

Средство просмотра журнала событий Windows

После рутинга в моем средстве просмотра журнала событий Windows я, наконец, наткнулся на дополнительную информацию (я слышал, что люди жалуются, что не могут найти трассировку стека с этой ошибкой - посмотрите в своем окне просмотра событий)

The description for Event ID 0 from source VSTTExecution cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event: 

(QTAgent32.exe, PID 6920, Thread 213) Unit Test Adapter threw exception: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.RuntimeModule.GetTypes()
   at System.Reflection.Assembly.GetTypes()
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.GetAssemblyInfo(Assembly assembly)
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.GetTypeInfo(Type type, Boolean checkAlreadyExaminedType)
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.ResolveMethods()
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.Initialize(UnitTestResult result, UnitTestRunner runner, ConsoleOutputRedirector redirector)
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestRunner.Run(UnitTestElement test, ITestContext testContext, Boolean isLoadTest, Boolean useMultipleCpus)

the message resource is present but the message is not found in the string/message table

Я не знаю, как решить эту ошибку. Тесты SpecFlow нормально запускаются изнутри Visual Studio, когда я щелкаю правой кнопкой мыши файл .feature, загруженный в редактор, и выбираю «Запустить сценарии SpecFlow ...», но я не могу запустить их из командной строки.

Любые идеи или дополнительную информацию я мог бы опубликовать?

Как примечание, это вытекает из моего предыдущего вопроса:Как вы запускаете сценарии SpecFlow из командной строки, используя MSTest?

Обновление № 1

Я немного побродил и нашел этот пост:МСТест и 64бит, Я проверил свои локальные настройки теста, и он заставляет тесты работать в 32-битном режиме.

Теперь с помощью этой команды:

mstest /testcontainer:MyTests.dll /testsettings:"..\..\..\Local.testsettings"

Сообщение об ошибке:

Test method Blah.Dee.Blah threw exception: 
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.TestTools.UITest.Extension, Version=11.0.0.0, Culture=neutral, PublicKeyToken=...' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

TestCleanup method Blah.Dee.Blah.ScenarioTearDown threw exception. BoDi.ObjectContainerException: BoDi.ObjectContainerException: Interface cannot be resolved: SpecBind.BrowserSupport.IBrowser.

Обновление № 2

Я удалил ссылку на Microsoft.VisualStudio.TestTools.UITest.Extension и добавил ее обратно. Убирали. Перестроен. Запустил ту же команду снова. Все еще получаю ту же ошибку.

По какой-то причине он пытается загрузить сборку Microsoft.VisualStudio.TestTools.UITest.Extension как Версия 11, и у меня установлена Версия 10 на моем компьютере. Я пытаюсь отследить, где указана эта версия, чтобы я мог ее изменить.

Ответы на вопрос(4)

Ваш ответ на вопрос