MySQL: Online
Load: Low
Sandbox: Ready

Como corrigir erros "Missing Project Reference" ao compilar um plugin CounterStrikeSharp

Alguns plugins estão divididos em dois repositórios: o plugin em si, e um projeto separado do tipo "API" ou "shared" do qual depende, normalmente ligado como submódulo git. Se descarregar o plugin como um simples .zip do GitHub, o conteúdo desse submódulo não está incluído, apenas um ponteiro para ele. O resultado é uma compilação que falha com dezenas de erros confusos CS0246/CS0103, "type or namespace not found", um para cada classe que o projeto em falta teria fornecido. A causa real está numa única linha, fácil de não notar.

1

Encontre o erro real

Percorra até ao topo do registo de compilação falhada, acima da parede de erros CS0246. Procure uma linha como esta, é a causa real, tudo o que se segue é consequência dela:

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

Perceba o que significa

O ficheiro .csproj do plugin faz referência a outro projeto através de um caminho relativo, no exemplo acima, uma pasta chamada ggmcAPI, um nível acima da própria pasta do plugin. Essa pasta simplesmente não está no seu arquivo carregado.

3

Verifique se é um submódulo git

Abra a página do plugin no GitHub e procure uma pasta mostrada com um pequeno ícone de seta e um hash de commit curto, em vez de uma listagem de ficheiros normal, isso é um submódulo. O botão "Download ZIP" do GitHub nunca inclui o conteúdo dos submódulos, apenas um ponteiro para o commit que deveria ser. Terá de abrir separadamente o repositório desse submódulo e descarregá-lo por conta própria.

4

A profundidade correta da pasta

Este é o passo que a maioria costuma errar à primeira tentativa. O caminho relativo no .csproj (../ggmcAPI no nosso exemplo) é resolvido em relação à pasta que contém o próprio ficheiro .csproj, não em relação à raiz do seu arquivo .zip. Se a pasta do seu plugin e a pasta da dependência não forem irmãs, um nível acima leva ao local errado.

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

Um erro comum a evitar

Colocar a pasta da dependência dentro da própria pasta do plugin parece razoável, mas não é o que o caminho relativo espera. Esta estrutura falhará exatamente como se não existisse pasta nenhuma:

OTeuPlugin.zip
OTeuPlugin-1.0.0
OTeuPlugin.csproj
ggmcAPI (profundidade errada)
6

Recompile

Depois de as duas pastas ficarem lado a lado na profundidade correta, volte a compactar o arquivo e carregue-o novamente. Se o MSB9008 tiver desaparecido do registo mas ainda vir erros, esses são agora erros de compilação reais que vale a pena investigar em separado.

Abrir o compilador CS2Sharp

Este tutorial foi útil?

0 utilizadores acharam este tutorial útil
Página gerada em 0.011 segundos
CounterStrikeSharp Web Compiler V1.0 - Feito com por RomaniaBarlap para a comunidade.