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 为社区打造。