2017-02-13 133 views
0

我使用DotfuscatorCLI和Visual Studio 2015 Update 3 Post Build事件命令混淆了一个.Net DLL。它似乎成功地被混淆了,因为在该命令后没有出现错误。引用混淆DLL

下面是一个命令:

dotfuscatorcli.exe/Q /P = SourceDirectory = “$(TARGETDIR)\” 的SourceFile = $(TargetFileNa我) “$(PROJECTDIR)Dotfuscator的。 XML”

这里是Obfuscator.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v1.1.dtd"> 
<dotfuscator version="1.1"> 
    <propertylist> 
     <property name="SourceDirectory" value="This Path Will Be Replaced By Visual Studio" /> 
     <property name="SourceFile" value="This Filename Will Be Replaced By Visual Studio" /> 
    </propertylist> 
    <trigger> 
     <filelist> 
     <file dir="${SourceDirectory}\" name="${SourceFile}" /> 
     </filelist> 
    </trigger> 
    <output> 
     <file dir="${SourceDirectory}\Dotfuscator\" /> 
    </output> 
</dotfuscator> 

现在,当我引用的DLL在另一个项目,并尝试访问其公众成员;我无法再访问它们。就好像它们没有在该DLL中定义/公开,并且它们在智能感知中也不可用。

如果我在对象浏览器中查看该DLL,它将显示具有一些奇怪名称的类,例如h,我,米,n等

我在这里失踪的东西,为了消耗该DLL?

任何回应,暗示或解决方案将不胜感激。

+3

公共类型和成员不应该被混淆。通常一个混淆器知道......你在用什么? –

+0

另外,不要只是链接到另一篇文章,并让我们去那里弄清楚....链接是好的,但也提供实质性的细节*在这里*在你的问题身上。 –

+0

我更新了问题并编写了我正在使用的命令。请告诉我是否需要其他信息。 –

回答

0

在@Nathan的帮助下,我可以解决我遇到的问题。以下是来自更新的Obfuscator.xml文件的内容。

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
    <!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.3.dtd"> 
    <dotfuscator version="2.3"> 
     <propertylist> 
      <property name="SourceDirectory" value="This Path Will Be Replaced By Visual Studio" /> 
      <property name="SourceFile" value="This Filename Will Be Replaced By Visual Studio" /> 
     </propertylist> 
     <input> 
     <asmlist> 
      <inputassembly> 
      <option>library</option> 
      <file dir="${SourceDirectory}\" name="${SourceFile}" /> 
      </inputassembly> 
     </asmlist> 
     </input> 
     <output> 
      <file dir="${SourceDirectory}\Dotfuscator\" /> 
     </output> 
    </dotfuscator> 

我知道如果我使用dotfuscator UI,它会自动启用库模式,但我会故意选择CLI方法。我想自动化并为我在一个项目中引用的35多个DLL提供通用解决方案。 所以现在用这种方法,我希望这不仅能够让我的混淆处理自动化,而且还可以加快处理速度,因为这是一种后期构建事件命令方法。简而言之,我需要做的就是按建立解决方案按钮,然后完成。

希望这会帮助别人。如有任何含糊或疑虑,或者您有任何其他建议,请告知我。

0

这听起来像你可能已经禁用Library Mode该组件。尝试重新启用它,这将告诉Dotfuscator自动从重命名中排除公共类型和成员。

+0

谢谢@Nathan。我更新了我的问题,并且您可以看到该XML文件。我没有明确禁用任何模式。 –

+1

@AzazulHaq,问题是在配置文件级别,你必须*启用*库模式。如果您使用UI生成配置文件,则默认情况下会启用它。该博客文章中的配置文件没有提供,所以这是混淆的根源。如果您想了解如何通过手动编辑XML来启用它,请参阅[用户指南中的相关部分](https://www.preemptive.com/images/stories/Dotfuscator/webframe.html# Library_Mode_By_Assembly.html)。 –