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] 来标记不想被混淆的方法名
以上两项也需要勾选,貌似是默认勾选的,见下图:

 

posted on   空明流光  阅读(1128)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 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 中异常处理示例并捕获完整异常内容

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示