Używam Visual Studio 2012 do rozwiązania z C# i C++/CLI .dll, z dll C++/CLI odwołującego się do rodzimych .dll takich jak boost. Kod C++ jest skompilowany jako x64.VS2012 Eksplorator testów blokuje natywny plik .dll, powodując niepowodzenie odbudowy.
Po otwarciu VS mogę wyczyścić i zbudować swój projekt.
Korzystając z eksploratora testów, mogę uruchomić moje testy.
Gdy tylko użyję testowego eksploratora do przeprowadzenia testów raz, nie mogę odbudować projektu. Wydaje się, że VS2012 testowania Explorer utrzymuje blokadę na moim C++/CLI-dll, a tam pojawia się następujący błąd:
LNK1104: cannot open file 'C:\Dev\LockExample\bin\Debug\cli.dll'
W wyniku tego, kiedy mam uruchomić testy testem Explorer, muszę aby ponownie uruchomić VS2012, zanim będę mógł dalej się rozwijać. Oczywiście nie jest to proces zrównoważonego rozwoju.
Testowanie i przebudowywanie działa bez problemu z C# -only dll - o tyle, na ile mogę powiedzieć, że problem występuje tylko z bibliotekami DLL, które korzystają z natywnego kodu x64.
Po kilku kolejnych testach odkryłem, że złoczyńcą jest tutaj vstest.executionengine.exe. Używając uchwyt (z SysInternals), widzę, że vstest.executionengine.exe przechowuje blokady dla .dll i .pdb z cli-dll. Nie ma żadnych blokad dla bibliotek DLL tylko do zarządzania.
Jak mogę uruchomić Eksploratora testów Visual Studio, aby zwolnić blokady w bibliotekach C++/Cli po zakończeniu testów?
Znaleziono ten sam problem w VS 2017 z odwołaniem niezarządzanego DLL. –