Я использую Visual Studio 2012 для решения с С# и С++/CLI.dll, с dll С++/CLI, ссылающимися на родные DLL файлы, такие как boost. Код С++ скомпилирован как x64.
Когда я открываю VS, я могу очистить и построить свой проект.
Используя тестовый проводник, я могу запустить свои тесты.
Как только я использовал тестовый проводник для запуска тестов один раз, я не могу перестроить проект. Кажется, что VS2012 Test Explorer хранит блокировку моей С++/CLI-dll, и там я получаю следующую ошибку:
LNK1104: cannot open file 'C:\Dev\LockExample\bin\Debug\cli.dll'
В результате этого, всякий раз, когда я запускал тесты с помощью Test Explorer, мне нужно перезапустить VS2012, прежде чем я смогу продолжить разработку. Очевидно, что это не процесс устойчивого развития.
Тестирование и восстановление работают без проблем с С# - только DLL - насколько я могу сказать, проблема возникает только с DLL, которые используют собственный x64-код.
После еще нескольких тестов я обнаружил, что злодеем здесь является vstest.executionengine.exe. Используя handle (из SysInternals), я вижу, что vstest.executionengine.exe содержит блокировки для .dll и .pdb cli-dll. Он не содержит блокировок для управляемых DLL.
Как я могу заставить Visual Studio Test Explorer освободить блокировки на DLL С++/Cli после завершения тестовых запусков?