MySQL: Online
Load: Low
Sandbox: Ready

Как да поправите грешка "Missing Project Reference" при компилиране на плъгин за CounterStrikeSharp

Някои плъгини са разделени в два репозитория: самия плъгин и отделен проект от типа "API" или "shared", от който зависи, обикновено свързан като git подмодул. Ако изтеглите плъгина като обикновен .zip от GitHub, съдържанието на този подмодул не е включено, само указател към него. Резултатът е компилация, която се проваля с десетки объркващи грешки CS0246/CS0103, "type or namespace not found", по една за всеки клас, който липсващият проект би осигурил. Истинската причина е един-единствен ред, лесен за пропускане.

1

Открийте истинската грешка

Превъртете до горната част на неуспешния лог за компилация, над стената от грешки CS0246. Потърсете ред като този, той е истинската причина, всичко под него е следствие от нея:

warning MSB9008: The referenced project ../ggmcAPI/ggmcAPI.csproj does not exist.
2

Разберете какво означава

Файлът .csproj на плъгина препраща към друг проект чрез относителен път, в примера по-горе, папка на име ggmcAPI, разположена едно ниво над папката на самия плъгин. Тази папка просто липсва в качения от вас архив.

3

Проверете дали е git подмодул

Отворете страницата на плъгина в GitHub и потърсете папка, показана с малка стрелка и кратък хеш на commit, вместо нормален списък с файлове, това е подмодул. Бутонът "Download ZIP" на GitHub никога не включва съдържанието на подмодулите, само указател за това кой commit трябва да бъде. Ще трябва да отворите отделно репозиторито на този подмодул и да го изтеглите самостоятелно.

4

Правилната дълбочина на папката

Това е стъпката, която повечето хора обикновено бъркат при първия опит. Относителният път в .csproj (../ggmcAPI в нашия пример) се определя спрямо папката, съдържаща самия файл .csproj, а не спрямо корена на вашия .zip архив. Ако папката на плъгина ви и папката на зависимостта не са на едно ниво, едно ниво нагоре води на грешното място.

VashiaPlugin.zip
VashiaPlugin-1.0.0
VashiaPlugin.csproj
VashiaPlugin.cs
ggmcAPI
ggmcAPI.csproj
5

Честа грешка, която да избягвате

Поставянето на папката на зависимостта вътре в самата папка на плъгина изглежда логично, но не е това, което очаква относителният път. Тази структура ще се провали точно както при пълна липса на папка:

VashiaPlugin.zip
VashiaPlugin-1.0.0
VashiaPlugin.csproj
ggmcAPI (грешна дълбочина)
6

Компилирайте отново

След като двете папки застанат една до друга на правилната дълбочина, архивирайте отново и качете файла пак. Ако MSB9008 е изчезнал от лога, но все още виждате грешки, те вече са истински грешки при компилация, които си струва да разгледате отделно.

Отворете компилатора CS2Sharp

Беше ли полезно това ръководство?

0 потребители намериха това ръководство за полезно
Страницата е генерирана за 0.010 секунди
CounterStrikeSharp Web Compiler V1.0 - Направено с от RomaniaBarlap за общността.