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