c# 使用dotfuscator编译时自动混淆命令
系统搜索 dotfuscator 打开,vs2022默认已经安装了,首次使用可能要同意注册什么的。
rem 请使用VS2012自带的混淆版本,VS2010自带的有问题,而且每次弹出需要手动点击,费时费力
"C:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.9\dotfuscator.exe" /q /in:"$(TargetPath)" /out:"$(ProjectDir)bin\Debug"
VS 2022 无法直接覆盖,使用命令:
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe" /q /in:"$(TargetPath)" /out:"$(ProjectDir)bin\Debug\Dotfuscated"
然后用copy代码覆盖
copy /y "$(ProjectDir)bin\Debug\Dotfuscated\$(TargetFileName)" "$(TargetPath)"
为了实现高效工作不至于每次都混淆,Debug是作为编码模式,Release作为发布模式,只有Release模式下才混淆,配置编译后事件,有如下代码:
if not "$(ConfigurationName)" == "Release" (exit) "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe" /q /in:"$(TargetPath)" /out:"$(ProjectDir)bin\$(ConfigurationName)\Dotfuscated" copy /y "$(ProjectDir)bin\$(ConfigurationName)\Dotfuscated\$(TargetFileName)" "$(TargetPath)"
我发现我现在vs2022 路径是 C:\Program Files (x86)\Microsoft Visual Studio 10.0\PreEmptive Solutions\Dotfuscator Community Edition,替换即可。
如果项目技术复杂,混淆后部分功能可能会出现问题,大多因为是静态字符串绑定的属性或方法,运行时是通过反射来进行调用的,有以下两个方法:
1.对于不想被混淆的类型名和成员名,在类上面加上[Serializable],该类型将不会被混淆
2.加上[Serializable]并不能保证方法名不被混淆,可使用 [WebMethod] 来标记不想被混淆的方法名
以上两项也需要勾选,貌似是默认勾选的,见下图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-01-25 c++ freeimage 指定颜色透明
2021-01-25 c++ string 大小写转换
2021-01-25 opencv 裁剪图像
2021-01-25 C++合并多个静态库
2021-01-25 Base64编码
2018-01-25 java android 捕获未处理异常
2018-01-25 java 中异常处理示例并捕获完整异常内容