VS2017 Не удалось загрузить файл или сборку Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll или одну из его зависимостей

При попытке открыть более старое решение в VS2017 существует старый проект Unit Test, который создает проблемы при создании.

Я продолжаю получать следующую ошибку при создании этого тестового проекта:

Не удалось загрузить файл или сборку:///C:\Projects\MyProj\Test\DAL\UnitTestProj\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 'или одна из его зависимостей. Система не может найти указанный файл.

Я проверил ссылки на проект и, похоже, ссылается на Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. Кроме того, ошибок кода нет. Как я мог когда-нибудь выяснить, является ли это одной из его зависимостей, которую он не может найти?

Ответ 1

У меня была аналогичная проблема (с дополнительным сообщением The "BuildShadowTask" task failed unexpectedly) с проектом, первоначально разработанным с помощью VS2010, и пришлось потратить последние несколько часов на изучение еще одного унаследованного аспекта процесса сборки.

Существует хороший шанс, что вы имеете дело с частным файлом accessor (.accessor), которые были устарел в VS2012 (исходный источник - 404). Это было предварено в объявлении от команды VS2010, что они больше не работали над этими функциями.

Существует также вероятность, что вы просто имеете дело с ошибочными ссылками на неправильную версию UnitTestFramework, но восстановление NuGet должно исправить это. Если нет, см. этот поток GitHub для возможного исправления (вручную измените ref в общую папку) или перейдите в новый MSTest.TestAdapter и MSTest.TestFramework(см. поток поддержки MSDN).

Решение

  • Отредактируйте unit test .csproj и измените ссылки на элементы с <Shadow Include="Test References\namespace.accessor" /> на <None Include="Test References\namespace.accessor" /> (Shadow = > None).
  • Еще лучше, просто удалите все .accessor файлы из unit test проекта Test References.

В идеале вы также переписываете свои модульные тесты для удаления ссылок на частные методы, либо путем повторной архивирования, чтобы разделить проблемы, либо изменив свойства на internal и используя "friend" с помощью InternalsVisibleToAttribute.


Для тех, кто по какой-то причине продолжает поддерживать тестирование частных методов, тот же пост предоставляет следующие логические вопросы "What is available for me then?":

Для тех, кто хочет продолжить тестирование внутренних API, у вас есть три варианта:

  • Используйте класс Microsoft.VisualStudio.TestTools.UnitTesting.PrivateObject, чтобы помочь в доступе к внутренним и частным API в вашем коде. Это можно найти в сборке Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll.
  • Создайте инфраструктуру отражения, которая сможет отразить ваш код для доступа к внутренним или частным API.
  • Если код, к которому вы пытаетесь получить доступ, является внутренним, вы можете получить доступ к своим API-интерфейсам, используя InternalsVisibleToAttribute, чтобы ваш тестовый код мог иметь доступ к внутренним API-интерфейсам.

Тем не менее, нет хорошей замены для Code Generation для новых функций, добавленных командами lanugage. Вы можете создать заглушки TestMethod, а затем удалить внутренний код. Вам нужно только сохранить заглушку.


Дальнейшие чтения/источники, которые помогли мне собрать это вместе:

Ответ 2

Щелкните правой кнопкой мыши на папке с ссылками на проект. Добавить ссылку> Сборки> Расширения. Проверьте Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.1 и снимите отметку с любой более старой версии.

Ответ 3

Visual Studio Enterprise 2015, когда я пытался добавить нагрузочный тест, выдает сообщение "Невозможно найти сборку". Microsoft.VisualStudio.QualityTools.LoadTest, версия = 14.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a

Нагрузочный тест сборки, установленный в открытых сборках, отображается как версия 10.0.0.0, но в GAC его не было,

Скорее всего, он получил только 10.1.0.0. Установите 10.0.0.0 и перезапустите VS 2015, решив мою проблему.

Путь к DLL......\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

.CSProj эталонная версия