Eazfuscator如何禁用sn.exe调用 解决强名称延迟签名混淆失败问题
Eazfuscator 2020 禁用自动强名称签名配置方案
针对你使用Nuget包集成、仅持有公钥snk文件做延迟签名的场景,可通过以下两种配置禁用Eazfuscator自动调用sn.exe的重签名逻辑,无需修改现有Nuget引用模式:
方式1:项目文件属性配置(推荐)
直接在对应项目的.csproj/.vbproj文件的PropertyGroup节点中加入专属配置项即可:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- 原有项目属性保持不变 --> <AssemblyName>YourProject</AssemblyName> <TargetFramework>netstandard2.0</TargetFramework> <!-- 新增下行配置,禁用Eazfuscator自动强名称签名 --> <EazfuscatorDisableStrongNameSigning>true</EazfuscatorDisableStrongNameSigning> </PropertyGroup> <!-- 原有Eazfuscator Nuget条件引用、其他节点无需修改 --> </Project>
该配置会直接阻断Eazfuscator MSBuild任务的自动签名流程,混淆后的程序集会保留延迟签名状态,可直接用于后续signtool.exe手动签名步骤。
方式2:程序集特性配置
如果不方便修改项目文件,可在项目的AssemblyInfo.cs(C#)或AssemblyInfo.vb(VB.NET)中添加如下特性:
using System.Reflection; // 新增下行特性 [assembly: Obfuscation(Feature = "disable strong name signing", Exclude = false)]
该特性为.NET原生定义,无需额外引用Eazfuscator相关程序集,Eazfuscator扫描到该标记后会自动跳过自动签名步骤。
生效验证方法
- 查看混淆构建的输出日志,无
sn.exe相关的调用记录即代表配置生效 - 混淆后的程序集可直接通过CI流程中预先配置的signtool.exe命令,使用服务器预装的证书指纹完成最终签名
内容的提问来源于stack exchange,提问作者Ar Es
相关产品推荐
相关产品推荐

