Das Projekt ist belegt
wkl-office endet mit Exitcode 10 und
error: ein anderer Lauf arbeitet an diesem Projekt (<holder>); erneut versuchen, wenn er fertig ist., dotnet build
schlägt mit dem Fehler WKL010 und demselben Text fehl, oder ein Vorgang des Access-Add-Ins zeigt auf der
Registerkarte „Projekt“ des Arbeitsbereichs wartet auf <holder> an.
Mit einer Maschinensperre (--lock-file oder WKL_ACCESS_LOCK_FILE) lautet die Meldung
Die Maschinensperre <datei> ist nach <n> s noch belegt: <inhaber>. Es wurde nichts ausgeführt; ..., bei
dotnet build WKL010: Die Maschinensperre <datei> ist noch belegt: <inhaber>., und das Add-In zeigt
Maschinensperre <datei>: <inhaber> an.
Umgebung
WKL Office SDK ab 0.2.0: jeder schreibende Befehl (aufgeführt unter „Ein Lauf je Projekt zur selben Zeit“ in der Befehlszeilenreferenz), die MSBuild-Tasks und das Access-Add-In.
Ursache
Zwei Läufe an einem Projekt würden gleichzeitig dieselbe Datenbank ersetzen oder dieselben Quellen schreiben. Jeder
schreibende Lauf hält deshalb während seiner Arbeit die Datei obj/wkl-sdk.lock neben der Projektdatei. Der Inhaber in
der Meldung nennt, wer sie hält: Prozess-ID, Programm (wkl-office.exe, dotnet.exe, MSACCESS.EXE), Befehl oder
Vorgang und Beginn. Typische Inhaber:
- ein Vorgang des Add-Ins in einem Access, das eine Datenbank des Projekts geöffnet hat (
MSACCESS.EXE ... Access add-in Validate); - ein
dotnet build, das ein Editor im Hintergrund gestartet hat; - ein zweites Terminal, in dem
wkl-officeläuft.
Die Maschinensperre gilt für den ganzen Computer: eine Datei, auf die sich alle Beteiligten geeinigt haben (Befehlszeilenreferenz). Ihr Inhaber kann ein Lauf des SDK in einem anderen Projekt oder einer anderen Sitzung sein oder ein anderes Werkzeug, etwa ein Testskript, das die Datei selbst angelegt hat.
Lösung
- Warten Sie, bis der genannte Lauf fertig ist, und starten Sie dann erneut. Das Add-In tut das von selbst: Sein Vorgang beginnt, sobald das Projekt frei ist.
- Ist der Lauf nicht erwünscht, beenden Sie ihn dort, wo er gestartet wurde: Abbrechen im Add-In, Strg+C im Terminal, Beenden im Editor.
- Existiert die Prozess-ID aus der Meldung nicht mehr, ist die Sperre bereits frei: Das Betriebssystem gibt sie frei, wenn der Prozess endet, auch wenn er abgebrochen wurde. Starten Sie erneut; die Datei
obj/wkl-sdk.lockkann bestehen bleiben und muss nicht aufgeräumt werden. - Maschinensperre: Eine Datei, die das SDK angelegt hat, verschwindet mit ihrem Lauf, auch wenn er abgebrochen wurde. Eine Datei, die bestehen bleibt, hat ein anderes Werkzeug angelegt; fragen Sie ihren Inhaber (Zeile
holder:) oder beenden Sie dieses Werkzeug. Löschen Sie die Datei nur, wenn sicher ist, dass kein Lauf den Computer belegt. Um länger zu warten statt abzubrechen, erhöhen Sie--lock-wait.
Verwandte Themen
- Access-Add-In verwenden (Vorgänge, „Abbrechen“, „Zurückziehen“)