1

我得到“引用的程序集'xxxxxxxxxx.GPUImage'没有强名称错误”,根据如何修复“引用的程序集没有强名称”错误,我已经纠正了这个问题。我也添加了正确的引用。(我在其他两个第三方程序集上遇到了这个问题,并且在签署它们后它们可以正常工作。)

但是在我签名之后,它给出了一个之前没有给出的新错误。如下。

Error    2    The type 'xxxxxxxxxx.GPUImage.ImageFilter' is defined in an assembly
that is not referenced. You must add a reference to assembly 'xxxxxxxxxx.GPUImage',
Version=2.0.0.0, Culture=neutral, 'PublicKeyToken=null'.

这是什么原因?.dll 可以与签名中的未分配 .dll 组成吗?

正如@eric 所提到的,我运行 fusion log,以下是日志文件。

在此处输入图像描述

4

3 回答 3

2

在硬盘上搜索所有出现的未签名程序集,然后删除它们 - 只保留签名版本。然后进行完整的重建。它要么工作,要么你会发现谁在引用旧程序集。

于 2012-06-07T05:49:00.227 回答
2

学习和使用 Process Monitor,然后你可以看到你的进程尝试从哪里加载程序集,

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

知道所有位置后,继续删除那些未签名的版本。通常它们可能会被您的单元测试套件或其他东西缓存在某个地方。通过删除它们,您应该能够解决问题。

于 2012-06-07T06:22:57.993 回答
1

解决方案中的某些程序集仍在引用定义 GPUImage.ImageFilter 的程序集的未签名版本。你从PublicKeyToken=null.

尝试使用Fusion Log Viewer 查看加载是如何解决的。它应该告诉您哪个程序集试图引用未签名的程序集。

于 2012-06-07T05:09:52.493 回答