本文主要内容为使用命令行方式操作Dotfuscator,并将其集成到Visual Studio中,以便于直接生成发布。
另:本文使用的Dotfuscator版本为:集成在Visual Studio 2015 社区版中的Dotfuscator CE版本。
创建友好的Dotfuscator项目文件
Dotfuscator项目文件本质是一个xml,下文主要描述使用Dotfuscator可视化工具创建项目文件。
-
首先在Visual Studio中打开Dotfuscator:点击菜单栏中的工具 > PreEmptive Protection - Dotfuscator打开Dotfuscator。
-
此处默认新建了Dotfuscator项目,建议先进行保存,将文件保存至你要混淆项目的解决方案文件夹中,如,个人保存的位置为:
E:\Projects\OpenSourceProject\ReferenceDoc\Dotfuscator\Samples\DotfuscatorSample\DotfuscatorSample.xml
保存到解决方案文件夹并非必须,此处如此处理可以为了后面进一步处理更加方便。
- 添加待混淆文件,如图所示:
- 修改文件路径,将文件路径修改为如下图所示:点击属性,查看项目属性 - configdir(就是之前的保存位置),然后切换回输入,点击输入中第三个按钮编辑输入(那支笔),将路径中与configdir匹配的部分替换为**${configdir}**(注意是大括号)。
处理此步骤亦不是必须的,这样处理的原因是为了让我们的配置与本地无关(相对路径),方便其他人合作使用。
- 至此,基本配置就可以了,点击生成项目就可以进行混淆了。至于其他更多配置见官方文档。
本地可以直接在Dotfuscator工具中点击菜单栏中的帮助 > 帮助目录(此为中文文档,基础的配置基本都有)。
帮助文件本地目录参考(中文帮助):C:\Program Files (x86)\Microsoft Visual Studio 14.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition\zh-Hans
配置Visual Studio命令调用Dotfuscator
- 主要操作就是编辑生成后事件:右击项目属性,切换到生成事件页面,编辑后期生成事件命令行,添加如下代码:
此处为了保证只有在Release的模式下使用混淆,故添加了Release判断。
if $(ConfigurationName)==Release "C:\Program Files (x86)\Microsoft Visual Studio 14.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition\dotfuscatorcli.exe" /q "$(SolutionDir)DotfuscatorSample.xml"
代码解释:dotfuscator命令行工具+参数+项目混淆配置文件;其中配置文件之前保存到解决方案文件夹下,故此出可以直接用解决方案文件目录来索引。
代码中唯一不足就是命令行工具使用了绝对路径,vs中的宏参数没有可以直接使用的,若读者有啥好方法将此变为相对路径,望通知。 —— 但关于系统中添加环境变量的法子就不要了,个人不喜。
- 如果你在此处下一步需要进一步的打包处理,而你又需要Debug模式下一样可以打包测试。如,本人使用WiX打包,需要配置文件路径,方便一点就是要配置为生成路径,但是release模式下,需要将混淆的打包进去,而非直接生成的文件。此时,你不能改打包配置(改路径的话,debug会用不了),所以,你需要在将混淆过的文件拷贝到原来的release生成目录。所以我最后完整的生成事件就是如下代码了:
注意:经测试,如果在Dotfuscator中将生成路径设为文件来源路径,可以生成还会自动覆盖,但软件会用不了,具体原因不明。
if $(ConfigurationName)==Release "C:\Program Files (x86)\Microsoft Visual Studio 14.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition\dotfuscatorcli.exe" /q "$(SolutionDir)DotfuscatorSample.xml"
if $(ConfigurationName)==Release xcopy /e /y "$(SolutionDir)Dotfuscated\*.*" "$(TargetDir)"
代码中的copy目录可以见Dotfuscator配置的生成目录: