{"无法加载文件或程序集 'AssemblyName, PublicKeyToken=null' 或其某个依赖项。 找到的程序集清单定义与程序集引用不匹配。 (HRESULT 的异常: 0x80131040)":"AssemblyName,PublicKeyToken = null"}
当我尝试在签名未签名的第三方程序集后调试我的应用程序时,我会将上述消息作为InnerException.Message。 奇怪的是,我已经签署了消息中显示的程序集,但该程序集无法加载。
这里可能出现什么问题? 我该如何解决?
编辑
提供有关我所做的更多信息:
- 签署了项目正在引用的所有未签名的第三方程序集。 - 反汇编这些程序集以查看它们是否在内部引用任何外部未签名程序集(它们没有)。 - 从项目的引用列表中删除旧的未签名程序集,并重新添加新签名的程序集。 - 卸载项目并通过添加缺少的程序集引用的PublicKeyToken来编辑.sln XML样式文件中无法加载的程序集的引用。
这个抛出异常的程序集(顺便说一下,该项目构建没有问题,我在该程序集的
当我尝试在签名未签名的第三方程序集后调试我的应用程序时,我会将上述消息作为InnerException.Message。 奇怪的是,我已经签署了消息中显示的程序集,但该程序集无法加载。
这里可能出现什么问题? 我该如何解决?
编辑
提供有关我所做的更多信息:
- 签署了项目正在引用的所有未签名的第三方程序集。 - 反汇编这些程序集以查看它们是否在内部引用任何外部未签名程序集(它们没有)。 - 从项目的引用列表中删除旧的未签名程序集,并重新添加新签名的程序集。 - 卸载项目并通过添加缺少的程序集引用的PublicKeyToken来编辑.sln XML样式文件中无法加载的程序集的引用。
这个抛出异常的程序集(顺便说一下,该项目构建没有问题,我在该程序集的
InitializeComponent()
中获取到了一个运行时异常),是一个带有WPF控件的开源组件(MahApps.Metro)。我找到了一个类似的问题,但那里的答案都没有解决这个问题。
<Reference Include="MahApps.Metro"> <HintPath>..\Signed Third-Party Assemblies\MahApps.Metro\MahApps.Metro.dll</HintPath> </Reference>
我刚刚注意到,签名后程序集的PublicKeyToken和版本都丢失了。这就是为什么我在.csproj文件中手动添加了PublicKeyToken
。我使用Sn.exe来签名我的程序集,首先我用ildasm反汇编它们,然后再通过包含我的公钥/私钥对它们进行重新组装。 - Pantelisilasm /dll /key=strongNameKeyPair.snk /MahApps.Metro.il
。我将开始一个新的较小项目并尝试重现异常,然后再次发布问题。感谢您的时间。 - Pantelis