Ответ 1
Я видел подобную ситуацию и нашел в диспетчере задач, что vtest.discoveryengine.exe и vtest.executionengine.exe все еще были живы. Я убил обоих, которые решили проблему.
У меня есть интеграционный тест для метода в сборке A
. Сборка A
ссылок на сборку B
через ссылку на проект. Я запускаю их под отладчиком Visual Studio 2010 в сценарии модульного тестирования Resharper 6.1. Механизм тестирования - это MSTest от Microsoft.
Я получаю печально известный
Процесс не может получить доступ к файлу
...\B.dll
, потому что он используется другим процессом.
сообщение. Я проверил, что никакой другой процесс не имеет дескриптора в этом файле (например, через Sysinternal Process Explorer).
Выполнение теста из отладчика отлично работает. Любые идеи, почему это происходит под отладчиком и что я могу сделать, чтобы исправить это?
Я видел подобную ситуацию и нашел в диспетчере задач, что vtest.discoveryengine.exe и vtest.executionengine.exe все еще были живы. Я убил обоих, которые решили проблему.
Основываясь на ответе Себастьяна, я добавил шаг предварительной сборки к моему тестовому проекту, чтобы автоматически убить все выполняемые исполняемые файлы vstest.*
. Для меня работала следующая команда предварительной сборки:
taskkill /f /im vstest.*
exit 0
Команда exit 0
находится в конце, чтобы предотвратить сбой сборки, если нет исполняемых файлов vstest.*
.
Основываясь на ответе @mrtumnus и здесь здесь, я добавил шаг предварительной сборки в свой тестовый проект, чтобы автоматически убить любые исполняемые файлы vstest.*
:
START taskkill /f /im vstest.*
Используя START
вместо exit 0
, чтобы он не выдавал ошибку, если задача не запущена. (Он открывает окно команд, хотя это немного раздражает).