C#/WPF/.NET 第三方ddl强签名解决(xxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)

报错

FileLoadException: 
未能加载文件或程序集“CircularGauge, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”
或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044)

原因,报错信息里面有 CircularGauge,这是项目里面引用的一个第三dll。
在这里插入图片描述

报错原因

项目使用了签名,这个dll没有使用签名,就像报错信息描述的PublicKeyToken=null

解决办法

  • 给这个dll 进行签名

准备步骤

  1. 找到dll的位置
  2. 找到项目签名文件的位置
  3. 使用系统自带的工具进行签名

实施过程

VS中鼠标右键dll查看属性,复制路径备用
C:\CustomData\PC\Aowising-wincc\wincc\dll\CircularGauge.dll

在这里插入图片描述

打开命令窗(以管理员身份运行)

在这里插入图片描述

进行反编译签名,再编译为dll

第一步:输入反编译指令
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe" C:\CustomData\PC\Aowising-wincc\wincc\dll\CircularGauge.dll /output=D:\DapperExtensions.StrongName.il

反编译工具:"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe"
目标dll位置:C:\CustomData\PC\Aowising-wincc\wincc\dll\CircularGauge.dll(请替换为你自己的)
输出路径:/output=D:\
输出文件名:DapperExtensions.StrongName.il

第二步:输入签名命令
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe" D:\DapperExtensions.StrongName.il /dll /out=D:\DapperExtensions.StrongName.dll /key=C:\CustomData\PC\Aowising-wincc\key.snk /resource=D:\DapperExtensions.StrongName.res 

签名工具:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe"
签名文件:D:\DapperExtensions.StrongName.il
签名后生成文件类型:/dll
签名后输出路径:/out=D:\
前后后输出文件名称:DapperExtensions.StrongName.dll
签名过程使用的签名密钥:/key=C:\CustomData\PC\Aowising-wincc\key.snk(请替换为你自己的)
待签名的文件资源:/resource=D:\DapperExtensions.StrongName.res

第三步将生成的dll改名为CircularGauge.dll

在这里插入图片描述

第四步 替换未签名的项目CircularGauge.dll

先删除引用,再删除未签名的dll,再使用已签名的dll

项目成功运行

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误通常发生在WPF应用程序中,当应用程序无法找到所需的Windows公共控件库时会出现。这个库通常被称为"Common Controls",它包含了许多常用的UI控件。 解决这个问题的一种方法是确保您的系统已正确安装了所需的公共控件库。您可以尝试以下步骤来解决问题: 1. 确认您的操作系统已经安装了最新的.NET Framework版本。您可以通过在命令提示符中运行 "regedit" 命令,然后导航到"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP" 注册表路径来检查已安装的.NET Framework版本。 2. 如果您的操作系统缺少所需的公共控件库,可以尝试手动安装它们。您可以从Microsoft官方网站下载并安装Windows SDK或Microsoft Visual C++ Redistributable Package来获取这些库。 3. 如果您正在使用的是64位操作系统,但应用程序是32位应用程序,那么您可能需要将应用程序配置为在32位模式下运行。您可以在Visual Studio中的项目属性中进行此配置更改。 4. 检查您的WPF项目引用是否正确,并且引用的版本与您的目标框架版本一致。如果引用出现问题,可以尝试删除并重新添加引用。 5. 如果问题仍然存在,可以尝试在项目的App.config文件中添加以下代码来指定使用的公共控件库版本: ```xml <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Windows.Common-Controls" publicKeyToken="6595b64144ccf1df" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> ``` 这些步骤中的一种或多种方法可能会解决您遇到的问题。如果问题仍然存在,请提供更多的上下文信息,以便我能够更好地帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全面解读

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值