我正在使用在运行时编译的脚本系统,它运行良好,但是当我使用一些代码混淆器向“坏人”隐藏我的代码时,脚本停止工作,它返回一个错误:
错误:CS0234
命名空间“TestProgram”中不存在类型或命名空间名称“Objects”(您是否缺少程序集引用?)
错误:CS0246
找不到类型或命名空间名称“Scripter”(您是否缺少 using 指令或程序集引用?)
你知道有没有办法解决它?我尝试了很多混淆器,看起来就像我的脚本编写器一样。
我正在使用在运行时编译的脚本系统,它运行良好,但是当我使用一些代码混淆器向“坏人”隐藏我的代码时,脚本停止工作,它返回一个错误:
错误:CS0234
命名空间“TestProgram”中不存在类型或命名空间名称“Objects”(您是否缺少程序集引用?)
错误:CS0246
找不到类型或命名空间名称“Scripter”(您是否缺少 using 指令或程序集引用?)
你知道有没有办法解决它?我尝试了很多混淆器,看起来就像我的脚本编写器一样。
您很可能不需要混淆您的“脚本”尝试访问的公共类型。
这可以使用大多数更好的混淆器来完成,方法是根据需要在类型或方法上包含适当的属性 ( ObfuscationAttribute ),并将Exclude属性设置为:true
[Obfuscation(Exclude=true)]
编辑:
您可以根据需要通过装饰适当的类型来使用此属性,即:
[Obfuscation(Exclude=true, ApplyToMembers=true)]
public class Objects
{
// ...
这将导致大多数混淆器(尽管有些需要配置以注意此属性)不会混淆类型。一些混淆器会混淆内部成员,但不会混淆公共 API。这取决于您使用的实际工具,我建议您查看他们的文档以了解具体信息。