Ich arbeite an einer Lösung, die aus 8 .NET-Projekten besteht. Da ich TDD praktiziere, muss ich meine Lösung sehr oft neu kompilieren. In letzter Zeit habe ich den folgenden Fehler etwa jedes zweite Mal, wenn ich versuche zu kompilieren:
Fehler 2 Datei kann nicht kopiert werden "obj \Debug\Zeiterfassung.Tests.dll " auf "bin \Debug\Zeiterfassung.Tests.dll ". Der Prozess kann nicht auf die Datei 'bin \Debug\Zeiterfassung.Tests.dll ' weil sie von einer anderen Person verwendet wird Prozess verwendet wird.
Zeiterfassung.Tests.dll ist die dll, die von einem meiner Projekte erzeugt wird (es ist das Unit-Testing-Projekt). Es ist immer diese dll, die nicht kopiert werden kann und den Fehler verursacht. Alles andere funktioniert 100 % der Zeit gut.
In etwa 9/10 Fällen kann ich das Problem durch erneutes Kompilieren meiner Lösung "lösen". Aber wenn das Problem wirklich schlimm wird, lässt sich das Projekt einfach nicht erfolgreich kompilieren, egal wie oft ich es versuche, und ich muss die IDE neu starten.
Ich habe Microsofts handle.exe verwendet, um festzustellen, welcher Prozess die DLL sperrt, und es ist devenv.exe. Ich habe auch versucht, die DLL von Hand zu löschen, aber sie kann wirklich erst gelöscht werden, wenn ich die IDE neu starte.
Zu guter Letzt habe ich versucht, Folgendes hinzuzufügen <GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
zu meinem Projekt hinzugefügt, wie in einem anderen Forum vorgeschlagen, aber das hat nicht geholfen.
Bitte um Hilfe! Dieses Problem fängt wirklich an, mich verrückt zu machen.
Editar: Ich könnte auch hinzufügen, dass ich sichergestellt habe, dass meine Unit-Tests abgeschlossen sind, wenn dieses Problem auftritt. Dennoch bleibt die DLL gesperrt. Ich führe meine Tests über den Resharper-Unit-Test-Explorer.