Не удалось загрузить файл или сборку 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=11.0.0.0'
Я использую MSTest.TestAdapter и MSTest.TestFramework версии 1.2.0 для своих тестов модульных тестов MS. На моем локальном компьютере (Visual Studio 2017) тесты работают отлично, но на нашем сервере сборки мы получаем следующее сообщение:
Не удалось загрузить файл или сборку 'Microsoft.VisualStudio.TestPlatform.ObjectModel, версия =11.0.0.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a' или одна из ее зависимостей. Система не может найти указанный файл.
Затем я проверил ссылку на эту сборку с помощью ildasm, и это действительно версия 11.0.0.0 (см. Ниже).
Однако я не могу найти v11 этой сборки, в Интернете есть только версия v14 для nuget: https://www.nuget.org/packages/Microsoft.VisualStudio.TestPlatform.ObjectModel/
Я также ищу на своей машине, и я не могу найти v11.
Итак, мой вопрос, почему тесты запускаются на моей машине, а не на сервере сборки?
Я пробовал сборку, но безуспешно.
8 ответов
Требуемый пакет NuGet - Microsoft.TestPlatform.ObjectModel, созданный Microsoft, а не пакет Microsoft.VisualStudio.TestPlatform.ObjectModel, созданный Christopher.Haws.
https://www.nuget.org/packages/microsoft.testplatform.objectmodel/
Пакет Microsoft содержит сборки Microsoft.VisualStudio.TestPlatform.ObjectModel, несмотря на то, что он так не назван. Я получал ту же ошибку, и когда я установил v11 пакета Microsoft, он исправил сборку на сервере сборки для меня.
Та же проблема, я смог установить последнюю версию:
Install-Package Microsoft.TestPlatform.ObjectModel -Version 15.8.0
Затем добавьте перенаправление привязки в тестовые проекты app.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.TestPlatform.ObjectModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="11.0.0.0-14.0.0.0" newVersion="15.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Другие обходные рекомендуется здесь
Не отражайте типы из сборки Microsoft.VisualStudio.TestPlatform.ObjectModel. ИЛИ Понижение версии Microsoft.NET.Test.Sdk до версии 15.3.0.
Вероятно, второй вариант вам не подходит, поскольку вы используете.NET framework, а не.NET core.
Дополнительная информация:
В моем случае после обновления с .NET 5 до 7 не удалось загрузить
Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Решение состоит в том, чтобы напрямую ссылатьсяMSTest.TestFramework
в тестовом проекте. Поскольку я временно ссылался на него через проект библиотеки классов netstandard2.0.
<PackageReference Include="MSTest.TestFramework" Version="x.x.x" />
версия=3.0.02 на момент написания
В окне вывода теста у меня были такие ошибки…
[MSTest][Discovery][C:\Repos\Flomaster\bin\Debug\ApiTest.UnitMaintenance.dll] Failed to discover tests from assembly C:\Repos\Flomaster\bin\Debug\ApiTest.UnitMaintenance.dll. Reason:Type 'Microsoft.VisualStudio.TestPlatform.ObjectModel.Trait' in Assembly 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.
Мне удалось заставить моих тестовых бегунов работать, очистив все мои obj
а также bin\debug
папки, но он вернулся, поэтому я посмотрел немного глубже и обнаружил, что просто искал Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
и удаления любых совпадающих файлов было достаточно, чтобы запустить тестовый запуск
После того, как мы снова столкнулись с той же проблемой в другом проекте, мы снова посмотрели на нее и нашли решение.
Install-Package Microsoft.TestPlatform.ObjectModel -Version 11.0.0
Но этого было недостаточно, чтобы убедиться, что сборка собрана сервером сборки, мы добавили ее в качестве элемента развертывания в базовый тестовый класс;
[DeploymentItem("Microsoft.VisualStudio.TestPlatform.ObjectModel.dll")]
И теперь сервер сборки снова начинает модульные тесты:-)
Grtz
Та же проблема. Решите, включив локаторы адаптеров в файлы .proj:
<PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.10" />
Столкнулся с той же ошибкой после того, как по ошибке добавил пакет NuGet для NUnit 3.0 в несколько проектов в решении, а затем удалил его.
Ссылка не была удалена полностью. Мне пришлось открыть каждый файл.csproj вручную и удалить все ссылки на ранее удаленный пакет NuGet. После очистки и перестройки ошибка ушла.