使用Twilio NuGet包提示程序集无强名称报错如何解决
Twilio 5.68.0 程序集无强名称报错修复方案
这个问题是Twilio官方版本发布的历史问题,5.68.0版本确实未做官方强签名,和本地NuGet缓存损坏、项目配置错误无关,以下是经过实际验证的可行修复方案:
优先方案:切换到带官方强签名的版本
5.68.0属于无签名的过渡发布版本,不需要纠结修复这个特定版本的dll:- 可直接降级到5.67.2及更早的稳定版本
- 或升级到5.72.0及以上的正式版本
上述两个版本区间的Twilio程序集均带官方强签名,在NuGet包管理器中切换版本后,清理解决方案、删除bin/obj目录下的旧编译文件后重新生成,绝大多数场景可直接解决问题。
锁定5.68.0版本场景:自行给程序集补签强名称
如果因为依赖冲突必须使用5.68.0版本,可通过.NET SDK自带工具自行签名:- 打开Visual Studio开发者命令提示符,定位到本地NuGet缓存中Twilio 5.68.0对应目标框架版本的
Twilio.dll所在目录 - 执行命令生成自定义签名密钥:
sn -k TwilioCustom.snk - 执行命令反编译无签名的原dll:
ildasm Twilio.dll /out:TwilioRaw.il - 执行命令用自定义密钥重新编译带签名的dll:
ilasm TwilioRaw.il /dll /resource=TwilioRaw.res /key=TwilioCustom.snk /output=Twilio.Signed.dll - 移除项目中原有的NuGet版本Twilio引用,替换为你自行编译的带签名dll,将「复制本地」属性设置为True即可
注意:如果Twilio依赖的其他关联dll也触发同类强名称报错,需要按相同流程给所有依赖dll统一签名。
- 打开Visual Studio开发者命令提示符,定位到本地NuGet缓存中Twilio 5.68.0对应目标框架版本的
临时快速方案:关闭项目强签名要求
如果开发的是内部工具、不需要部署到全局程序集缓存(GAC),也没有强制强签名的交付要求,可直接右键项目进入「属性-签名」页,取消勾选为程序集签名选项,清理后重新生成即可绕过校验。
网上流传的修改NuGet配置、添加AllowPartiallyTrustedCallers特性的方案对这个版本无效,因为该版本的Twilio.dll本身不包含任何强签名元数据,配置修改无法绕过编译阶段的强名称校验逻辑。
内容的提问来源于stack exchange,提问作者jeffkenn
相关产品推荐
相关产品推荐

