mstest не копирует библиотеку, на которую есть ссылки в проекте, но используется только во время выполнения

У меня есть проект, который использует Microsoft Enterprise Library и использует конфигурацию для указания типа менеджера кэширования.

Загруженный таким образом менеджер кэширования зависит от библиотеки Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll, которая включена в в моем тестовом проекте в качестве ссылки, но библиотека не используется для код напрямую (во время компиляции). Таким образом, скомпилированный файл mytests.dll не будет ссылаться на эту библиотеку (это проверено с помощью dotpeek).

Вопрос № 1: Почему MSTest не копирует такую ​​библиотеку во временную папку для тестирования? Вопрос № 2: Есть ли элегантный обходной путь?

Не элегантное решение # 1 : сделайте фиктивную ссылку на включенную библиотеку (как упомянуто в этом нить );

или решение # 2 : используйте конфигурацию MSTest Deploy для явного включения библиотеки.

решение # 3 :
Использование файла .testsettings в mstest решает проблему, даже если опция развертывания отключена . То есть Файл testsettings содержит:



Похоже, что выполнение этого вызывает запуск mstest не в каталоге temp TestResults\user_HOST 2011-12-21 15_22_08\Out, а в bin\Debug (где рассматриваемая библиотека правильно ] развернут в).

Это ожидаемое поведение mstest? Я имею в виду тот факт, что mstest не использует временный каталог, если в файле .testsettings отключено развертывание?

10
задан THX-1138 21 December 2011 в 22:30
поделиться