Come correggere gli errori "Missing Project Reference" durante la compilazione di un plugin CounterStrikeSharp
Alcuni plugin sono divisi su due repository: il plugin stesso, e un progetto separato di tipo "API" o "shared" da cui dipende, di solito collegato come submodulo git. Se scarichi il plugin come semplice .zip da GitHub, il contenuto di quel submodulo non è incluso, solo un puntatore ad esso. Il risultato è una compilazione che fallisce con decine di errori confusi CS0246/CS0103, "type or namespace not found", uno per ogni classe che il progetto mancante avrebbe fornito. La vera causa è una singola riga, facile da perdere.
Individua l'errore reale
Scorri fino in cima al log di compilazione fallita, sopra il muro di errori CS0246. Cerca una riga come questa, è la vera causa, tutto ciò che segue ne è una conseguenza:
warning MSB9008: The referenced project ../ggmcAPI/ggmcAPI.csproj does not exist.
Capisci cosa significa
Il file .csproj del plugin fa riferimento a un altro progetto tramite un percorso relativo, nell'esempio sopra, una cartella chiamata ggmcAPI, un livello sopra la cartella del plugin stesso. Quella cartella semplicemente non è nel tuo archivio caricato.
Controlla se è un submodulo git
Apri la pagina del plugin su GitHub e cerca una cartella mostrata con una piccola icona a freccia e un breve hash di commit, invece di un normale elenco di file, quello è un submodulo. Il pulsante "Download ZIP" di GitHub non include mai il contenuto dei submoduli, solo un puntatore a quale commit dovrebbe essere. Dovrai aprire separatamente il repository di quel submodulo e scaricarlo per conto suo.
La profondità corretta della cartella
Questo è il passaggio che la maggior parte delle persone sbaglia al primo tentativo. Il percorso relativo nel .csproj (../ggmcAPI nel nostro esempio) viene risolto rispetto alla cartella che contiene il file .csproj stesso, non rispetto alla radice del tuo archivio .zip. Se la cartella del tuo plugin e la cartella della dipendenza non sono sorelle, un livello sopra porta nel posto sbagliato.
Un errore comune da evitare
Mettere la cartella della dipendenza dentro la cartella stessa del plugin sembra ragionevole, ma non è ciò che si aspetta il percorso relativo. Questa struttura fallirà esattamente come se non ci fosse alcuna cartella:
Ricompila
Una volta che entrambe le cartelle sono affiancate alla profondità corretta, ricomprimi l'archivio e caricalo di nuovo. Se MSB9008 è sparito dal log ma vedi ancora errori, ora sono errori di compilazione reali che vale la pena esaminare separatamente.
Apri il compilatore CS2SharpQuesto tutorial ti è stato utile?
Barlap per la comunità.