我使用DotfuscatorCLI和Visual Studio 2015 Update 3 Post Build事件命令对.Net 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中定义/公开,并且它们在intellisense中也不可用。
如果我在对象浏览器中查看该DLL,它会显示带有一些奇怪名称的类,例如h,我,m,n等。
我是否在这里遗漏了一些内容,以便使用该DLL?
任何回应,提示或解决方案都将受到赞赏。
答案 0 :(得分:0)
听起来你可能已禁用 Library Mode。尝试重新启用它,这将告诉Dotfuscator自动排除公共类型和成员重命名。
答案 1 :(得分: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提供通用解决方案,这些DLL在一个项目中被引用。 所以现在使用这种方法,我希望这不仅可以自动化我的混淆过程,而且还可以加快速度,因为它是一种构建后事件命令方法。简而言之,我需要做的就是按Build Build解决方案按钮,完成它。
希望这会对其他人有所帮助。如果有任何歧义或疑虑,或者您有任何其他建议,请告诉我。