Comment corriger les erreurs "Missing Project Reference" lors de la compilation d'un plugin CounterStrikeSharp
Certains plugins sont répartis sur deux dépôts : le plugin lui-même, et un projet séparé de type "API" ou "shared" dont il dépend, généralement lié comme sous-module git. Si vous téléchargez le plugin en simple .zip depuis GitHub, le contenu de ce sous-module n'est pas inclus, seulement un pointeur vers lui. Le résultat est une compilation qui échoue avec des dizaines d'erreurs CS0246/CS0103 déroutantes, "type or namespace not found", une pour chaque classe que le projet manquant aurait fournie. La vraie cause tient en une seule ligne, facile à manquer.
Repérez la vraie erreur
Remontez en haut du journal de compilation échouée, au-dessus du mur d'erreurs CS0246. Cherchez une ligne comme celle-ci, c'est la cause réelle, tout ce qui suit en découle :
warning MSB9008: The referenced project ../ggmcAPI/ggmcAPI.csproj does not exist.
Comprenez ce que ça signifie
Le fichier .csproj du plugin référence un autre projet via un chemin relatif, dans l'exemple ci-dessus, un dossier appelé ggmcAPI, situé un niveau au-dessus du dossier du plugin lui-même. Ce dossier n'est tout simplement pas dans votre archive téléchargée.
Vérifiez si c'est un sous-module git
Ouvrez la page du plugin sur GitHub et cherchez un dossier affiché avec une petite icône de flèche et un court hash de commit, au lieu d'une liste de fichiers normale, c'est un sous-module. Le bouton "Download ZIP" de GitHub n'inclut jamais le contenu des sous-modules, seulement un pointeur vers le commit attendu. Vous devrez ouvrir séparément le dépôt de ce sous-module et le télécharger de son côté.
La bonne profondeur de dossier
C'est l'étape que la plupart des gens ratent au premier essai. Le chemin relatif dans le .csproj (../ggmcAPI dans notre exemple) est résolu par rapport au dossier contenant le fichier .csproj lui-même, pas par rapport à la racine de votre archive .zip. Si le dossier de votre plugin et le dossier de la dépendance ne sont pas frères, un niveau au-dessus mène au mauvais endroit.
Une erreur fréquente à éviter
Placer le dossier de la dépendance à l'intérieur du dossier du plugin semble logique, mais ce n'est pas ce qu'attend le chemin relatif. Cette structure échouera exactement comme s'il n'y avait aucun dossier du tout :
Recompilez
Une fois les deux dossiers côte à côte à la bonne profondeur, réarchivez et téléchargez à nouveau. Si MSB9008 a disparu du journal mais que vous voyez encore des erreurs, ce sont maintenant de vraies erreurs de compilation qui méritent d'être examinées séparément.
Ouvrir le compilateur CS2SharpCe tutoriel vous a-t-il été utile ?
Barlap pour la communauté.