Ik gebruik Visual Studio 2012 voor een oplossing met een
C# en een C ++/CLI .dll, waarbij de C ++/CLI
dll verwijst naar native .dlls zoals boost. De C ++ -code is
gecompileerd als x64.
Wanneer ik VS open, kan ik mijn project opschonen en
opbouwen.
Met behulp van testverkenner kan ik mijn tests uitvoeren.
Zodra ik testverkenner eenmaal heb gebruikt om tests uit te
voeren, kan ik het project niet opnieuw opbouwen. Het lijkt erop
dat VS2012 Test Explorer een vergrendeling op mijn C ++/CLI-dll
houdt en daar krijg ik de volgende foutmelding:
LNK1104: cannot open file 'C:\Dev\LockExample\bin\Debug\cli.dll'
Als gevolg hiervan, als ik de tests met Test Explorer heb
uitgevoerd, moet ik VS2012 opnieuw opstarten voordat ik kan
doorgaan met ontwikkelen. Het is duidelijk dat dit geen duurzaam
ontwikkelingsproces is.
Testen en opnieuw bouwen werkt probleemloos met C# -only dll's - voor zover ik weet, doet het
probleem zich alleen voor met DLL's die native x64-code
gebruiken.
Na wat meer testen, vond ik dat de slechterik hier
vstest.executionengine.exe is. Met handle (van SysInternals) zie ik
dat vstest.executionengine.exe sloten bevat voor de .dll en de .pdb
van de cli-dll. Het bevat geen vergrendeling voor managed-only
dll's.
Hoe krijg ik Visual Studio Test Explorer om de vergrendelingen
op de C ++/Cli-dll's vrij te geven nadat de tests zijn
voltooid?