Частые ошибки компиляции в CounterStrikeSharp и что они значат
Когда плагин не собирается, лог длинный и забит кодами. Читать его целиком почти никогда не нужно. Найдите первую строку, начинающуюся с error, возьмите её код и найдите ниже. Исправление первой ошибки часто убирает все остальные, ведь одна проблема может породить десятки сообщений.
CS0246: тип или пространство имён не найдены
Компилятор не знает класс, который вы используете. Либо в начале файла не хватает строки using, либо пакет с этим классом не указан в файле проекта. Для игровых типов вроде CCSPlayerController проверьте, что подключён пакет CounterStrikeSharp.API и в файле есть using CounterStrikeSharp.API.Core.
error CS0246: The type or namespace name 'CCSPlayerController' could not be found (are you missing a using directive or an assembly reference?)
CS0103: имя не существует в текущем контексте
Вы использовали имя, которое компилятор не видит в этом месте. Чаще всего это опечатка, переменная из другого метода или класс, которому нужен собственный using. Например, ChatColors находится в CounterStrikeSharp.API.Modules.Utils.
error CS0103: The name 'ChatColors' does not exist in the current context
CS1061: нет определения для члена класса
Класс существует, но свойства или метода с таким именем в нём нет. Типичные причины — опечатка или код, написанный под другую версию CounterStrikeSharp.API, где этот член был добавлен, переименован или удалён. Если плагин чужой, попробуйте вариант Текущая в нашем окне выбора версии.
error CS1061: 'CCSPlayerController' does not contain a definition for 'SomeMember'
NU1101: пакет не найден
NuGet не находит пакет с точно таким именем. Проверьте написание в файле проекта: хватит одной неверной буквы. Если пакет приватный или есть только в чьей-то собственной ленте, публичный компилятор его восстановить не сможет, и вместо него нужен исходный код.
error NU1101: Unable to find package SomePackage. No packages exist with this id in source(s): nuget.org
NETSDK1045: SDK не поддерживает эту версию .NET
Проект требует версию .NET новее, чем у SDK, который его собирает. Установите более свежий SDK или понизьте TargetFramework. В нашем компиляторе окно выбора версии позволяет указать цель, которую он поддерживает.
error NETSDK1045: The current .NET SDK does not support targeting .NET 10.0.
MSB9008: указанный проект не существует
Файл проекта ссылается на другой проект, обычно из соседней папки, который не попал в загрузку. Загружайте всю папку репозитория, а не только папку плагина, чтобы общий проект был на месте.
error MSB9008: The referenced project '../Shared/Shared.csproj' does not exist.
CS8618: предупреждение о свойствах, не допускающих null
Это всего лишь предупреждение, оно не останавливает сборку. Оно сообщает, что свойство может остаться пустым. Для быстрой проверки его можно игнорировать, а исправить — задав свойству значение по умолчанию, например пустую строку, или пометив его знаком вопроса.
warning CS8618: Non-nullable property 'Name' must contain a non-null value when exiting constructor.
Собирается, но всё равно не загружается
Плагин без единой ошибки всё равно может не заработать на сервере. Обычно причина в другой версии CounterStrikeSharp.API на сервере или в том, что скопированы не те файлы. Если это ваш случай, переходите к руководству о плагинах, которые не загружаются.
Было ли это руководство полезным?
Barlap для сообщества.