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