求助:Strong Name验证失败引发FileLoadException问题
解决System.IO.FileLoadException(强名称验证失败0x8013141A)
问题详情
未知模块中发生未处理的System.IO.FileLoadException异常。无法加载文件或程序集ServiceName, Version=0.0.0.0, Culture=neutral, PublicKeyToken=5bfb54a682cb6e6d或其依赖项。强名称验证失败。(HRESULT异常: 0x8013141A)
已尝试的无效方法:
- 执行命令:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\x64\sn.exe" -Vr C:\Code\cfc\bin\ServiceName.dll - 添加注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\ServiceName,5bfb54a682cb6e6d] - 在VS命令提示符执行:
Sn -Vr *
可行解决方案
1. 验证程序集的公钥令牌匹配性
执行以下命令确认程序集的公钥令牌是否与异常中一致:
sn -T "C:\Code\cfc\bin\ServiceName.dll"
如果输出的公钥令牌不是5bfb54a682cb6e6d,说明程序集未用正确的密钥签名,需重新签名程序集。
2. 适配32位/64位环境
- 若目标程序是32位,使用x86版本的
sn.exe执行验证跳过命令:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\sn.exe" -Vr C:\Code\cfc\bin\ServiceName.dll
- 同时检查32位注册表路径是否添加了验证项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\ServiceName,5bfb54a682cb6e6d]
3. 清空强名称缓存
执行命令清空强名称验证缓存,再重新注册:
sn -Sc sn -Vr C:\Code\cfc\bin\ServiceName.dll
4. 检查并清理GAC中的冲突程序集
查看GAC中是否存在同名程序集:
gacutil /l ServiceName
若存在,执行以下命令删除:
gacutil /u ServiceName
5. 以管理员权限执行命令
右键VS命令提示符选择以管理员身份运行,再执行sn -Vr命令,确保权限足够修改注册表。
6. 排查依赖项问题
使用程序集绑定日志查看器(fuslogvw.exe)获取详细绑定失败日志:
- 打开VS命令提示符,执行
fuslogvw.exe - 配置日志路径,启用“绑定失败的日志记录”
- 重现异常,查看日志中具体是哪个程序集或依赖项导致验证失败,针对性解决签名问题。
内容的提问来源于stack exchange,提问作者Chanikya
相关产品推荐
相关产品推荐

