So behebst du "Missing Project Reference"-Fehler beim Kompilieren eines CounterStrikeSharp-Plugins
Manche Plugins sind auf zwei Repositories aufgeteilt: das Plugin selbst, und ein separates "API"- oder "shared"-Projekt, von dem es abhaengt, meist als git-Submodul verknuepft. Wenn du das Plugin als einfaches .zip von GitHub herunterlaedst, ist der Inhalt dieses Submoduls nicht enthalten, nur ein Verweis darauf. Das Ergebnis ist ein Build, der mit Dutzenden verwirrenden CS0246/CS0103-Fehlern fehlschlaegt, "type or namespace not found", einer fuer jede Klasse, die das fehlende Projekt bereitgestellt haette. Die eigentliche Ursache ist eine einzige Zeile, leicht zu uebersehen.
Finde den echten Fehler
Scrolle nach oben im fehlgeschlagenen Build-Log, ueber die Wand von CS0246-Fehlern. Suche nach einer Zeile wie dieser, sie ist die eigentliche Ursache, alles darunter ist eine Folge davon:
warning MSB9008: The referenced project ../ggmcAPI/ggmcAPI.csproj does not exist.
Verstehe, was das bedeutet
Die .csproj-Datei des Plugins verweist ueber einen relativen Pfad auf ein anderes Projekt, im Beispiel oben ein Ordner namens ggmcAPI, eine Ebene ueber dem Ordner des Plugins selbst. Dieser Ordner ist einfach nicht in deinem hochgeladenen Archiv.
Pruefe, ob es ein git-Submodul ist
Oeffne die Seite des Plugins auf GitHub und suche nach einem Ordner, der mit einem kleinen Pfeil-Symbol und einem kurzen Commit-Hash angezeigt wird, statt einer normalen Dateiliste, das ist ein Submodul. Der "Download ZIP"-Button von GitHub enthaelt niemals den Inhalt von Submodulen, nur einen Verweis darauf, welcher Commit es sein sollte. Du musst das Repository dieses Submoduls separat oeffnen und eigenstaendig herunterladen.
Die richtige Ordnertiefe
Das ist der Schritt, den die meisten beim ersten Versuch falsch machen. Der relative Pfad in der .csproj (../ggmcAPI in unserem Beispiel) wird relativ zum Ordner aufgeloest, der die .csproj-Datei selbst enthaelt, nicht relativ zum Stammverzeichnis deines .zip-Archivs. Wenn dein Plugin-Ordner und der Abhaengigkeits-Ordner keine Geschwister sind, fuehrt eine Ebene hoeher an die falsche Stelle.
Ein haeufiger Fehler
Den Abhaengigkeits-Ordner in den Plugin-Ordner selbst zu legen wirkt naheliegend, ist aber nicht das, was der relative Pfad erwartet. Diese Struktur schlaegt genauso fehl wie gar kein Ordner:
Neu kompilieren
Sobald beide Ordner nebeneinander in der richtigen Tiefe liegen, packe das Archiv neu und lade es erneut hoch. Wenn MSB9008 aus dem Log verschwunden ist, aber du noch Fehler siehst, sind das jetzt echte Kompilierfehler, die es sich lohnt, separat zu untersuchen.
CS2Sharp-Compiler oeffnenWar diese Anleitung hilfreich?
Barlap für die Community.