Почему ссылка на dll блокируется при отладке в Resharper/MSTest?

У меня есть интеграционный тест для метода в сборке A. Сборка A ссылок на сборку B через ссылку на проект. Я запускаю их под отладчиком Visual Studio 2010 в сценарии модульного тестирования Resharper 6.1. Механизм тестирования - это MSTest от Microsoft.

Я получаю печально известный

Процесс не может получить доступ к файлу ...\B.dll, потому что он используется другим процессом.

сообщение. Я проверил, что никакой другой процесс не имеет дескриптора в этом файле (например, через Sysinternal Process Explorer).

Выполнение теста из отладчика отлично работает. Любые идеи, почему это происходит под отладчиком и что я могу сделать, чтобы исправить это?

Ответ 1

Я видел подобную ситуацию и нашел в диспетчере задач, что vtest.discoveryengine.exe и vtest.executionengine.exe все еще были живы. Я убил обоих, которые решили проблему.

Ответ 2

Основываясь на ответе Себастьяна, я добавил шаг предварительной сборки к моему тестовому проекту, чтобы автоматически убить все выполняемые исполняемые файлы vstest.*. Для меня работала следующая команда предварительной сборки:

taskkill /f /im vstest.*
exit 0

Команда exit 0 находится в конце, чтобы предотвратить сбой сборки, если нет исполняемых файлов vstest.*.

Ответ 3

Основываясь на ответе @mrtumnus и здесь здесь, я добавил шаг предварительной сборки в свой тестовый проект, чтобы автоматически убить любые исполняемые файлы vstest.*:

START taskkill /f /im vstest.*

Используя START вместо exit 0, чтобы он не выдавал ошибку, если задача не запущена. (Он открывает окно команд, хотя это немного раздражает).