Obfuscator之后的CSharpCodeProvider

时间:2012-01-31 00:53:14

标签: c# .net obfuscation csharpcodeprovider

我正在使用一个在运行时编译的Scripting系统,它运行良好,但是当我使用一些代码混淆器来隐藏我的代码,从“坏人”脚本停止工作时,它会返回一个错误:

  

错误:CS0234

     

名称空间“TestProgram”中不存在类型或命名空间名称“Objects”(您是否缺少程序集引用?)

     

错误:CS0246

     

找不到类型或命名空间名称“Scripter”(您是否缺少using指令或程序集引用?)

你知道有没有办法解决它?我尝试了很多混淆器,看起来就像我的脚本编写者所做的一样。

1 个答案:

答案 0 :(得分:2)

您很可能不需要混淆“脚本”尝试访问的公共类型。

对于大多数更好的混淆器,可以根据需要在类型或方法上包含ObfuscationAttribute属性设置为true的相应属性(Exclude)来完成此操作:{{3} }


编辑:

您可以根据需要通过修饰相应的类型来使用此属性,即:

[Obfuscation(Exclude=true, ApplyToMembers=true)]
public class Objects
{
    // ... 

这会导致大多数混淆器(虽然有些需要配置来注意这个属性)不混淆类型。一些混淆器会混淆内部成员,但不会混淆公共API。这取决于您使用的实际工具,我建议您查看其文档以了解具体信息。