Выполнение сборки VSTest - не загружает зависимые сборки проекта

Я создал приложение Service Fabric и добавил в решение проект MSTest для тестирования методов в службах.

Для этого я добавил ссылку на сервисный проект на HelloWorldAPI.dll в проекте MSTest.

После этого я создал автоматическое определение сборки в Visual Studio Team Services (было VSO), и я пытаюсь выполнить тестовые примеры Visual Studio через эту сборку. Однако я получаю следующую ошибку:

> Starting task: Test Assemblies **\*test*.dll;-:**\obj\**
******************************************************************************
Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.104.1\tasks\VSTest\1.0.50\VSTest.ps1
Working folder: C:\a\1
Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "C:\a\1\s\POC\ServiceFabric\HelloWorld\UnitTestProject1\bin\Debug\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" "C:\a\1\s\POC\ServiceFabric\HelloWorld\UnitTestProject1\bin\Debug\UnitTestProject1.dll"  /logger:trx
Microsoft (R) Test Execution Command Line Tool Version 14.0.25420.1
Copyright (c) Microsoft Corporation.  All rights reserved.
Starting test execution, please wait...
Failed   GetHelloWorldString
Error Message:
Unable to create instance of class HelloWorld.Test.ProductContollerTest. Error: System.BadImageFormatException: Could not load file or assembly 'HelloWorldAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format..
Stack Trace:
at HelloWorld.Test.ProductContollerTest..ctor()

 - ***Error Message:***

*
**

> Unable to create instance of class
> HelloWorld.Test.ProductContollerTest. Error:
> System.BadImageFormatException: Could not load file or assembly
> 'HelloWorldAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
> or one of its dependencies. An attempt was made to load a program with
> an incorrect format..

**
*

Пожалуйста, найдите приложенные ниже детали конфигурации в Team Services:

Сведения о конфигурации VSTest

Stack Trace:
at HelloWorld.Test.ProductContollerTest..ctor()
Failed   GetAllProductListTest
Test Run Failed.
Results File: C:\a\1\TestResults\buildguest_TASKAGENT5-0026 2016-08-22 08_48_07.trx
Total tests: 2. Passed: 0. Failed: 2. Skipped: 0.
Test execution time: 0.4165 Seconds
System.Exception: VSTest Test Run failed with exit code: 1
Publishing Test Results...
Test results remaining: 2
Published Test Run : https://jci.visualstudio.com/Project%20-%20Microservices/_TestManagement/Runs#runId=3191&_a=runCharts

Можно ли загрузить зависимую (проектную) сборку на этапе выполнения VSTest?


person VINOD Bhoite    schedule 22.08.2016    source источник
comment
Каков результат, если вы запустите тесты прямо на локальной машине? Как добавить ссылку? Ссылка на проект (щелкните правой кнопкой мыши проект = ›Добавить ссылку =› Проекты) или двоичную ссылку (щелкните правой кнопкой мыши проект = ›Добавить ссылку =› Браузер = ›Найти файл dll)? Разместите здесь подробный тестовый код или поделитесь простыми проектами в OneDrive.   -  person starian chen-MSFT    schedule 23.08.2016
comment
У меня тоже есть эта проблема, и она относится и к моей локальной машине. Если я запускаю vstest.console.exe в библиотеке DLL напрямую с помощью соответствующего средства выполнения тестов, возникает эта ошибка. Работает с dotnet test, но в противном случае не может найти исполняемый файл для запуска тестов.   -  person Eric    schedule 23.08.2016
comment
какой шаблон службы вы использовали? Как добавить тестовый проект и каков подробный тестовый код?   -  person starian chen-MSFT    schedule 25.08.2016
comment
Исключения BadImageFormatException обычно возникают, когда вы пытаетесь указать неправильную архитектуру платформы. Попробуйте сменить платформу с x64 на x86   -  person Novastorm    schedule 14.10.2016


Ответы (1)


Я слишком поздно отвечать на это. Но сегодня я столкнулся с той же проблемой, и поэтому я решил поделиться своим решением здесь. Это может кому-то помочь.
Примечание. Я использую Visual Studio 2017.
Для меня это происходило из-за несовместимых архитектур процессоров (32- и 64-разрядных), используемых в сборках / проектах.
Чтобы исправить это, я установил для всех проектов 64-битную архитектуру (x64). Вы можете сделать это, щелкнув правой кнопкой мыши свое решение в обозревателе решений, затем Properties> Configuration Properties и нажав кнопку Configuration Manager.
Затем я установил для архитектуры процессора по умолчанию для тестов значение x64. Вы можете сделать это, щелкнув меню Test> Test Settings> Default Processor Architecture> x64.
Убедитесь, что вы запускаете библиотеку, созданную по правильному пути - \ bin \ x64 \ Release \ mytests.dll

person Saurabh R S    schedule 03.06.2020