2012-06-07 61 views
1

我得到了引用程序集'xxxxxxxxxx.GPUImage'沒有強烈的名稱錯誤,並根據How to fix "Referenced assembly does not have a strong name" error?我已糾正該問題。我也添加了正確的引用。 (我有2個其他第三方組件的問題,並簽署他們,他們正常工作。)登錄vs 2010後無法使用代碼的原因是什麼?

但我簽字後給出了以前沒有給出的新錯誤。它如下。

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提到的,我運行融合日誌,以下是日誌文件。

enter image description here

回答

1

一些集會在您的解決方案仍引用定義GPUImage.ImageFilter該組件的簽名版本。你從PublicKeyToken=null得到。

試着看看如何使用Fusion Log Viewer加載解決方案。它應該告訴你哪個程序集試圖引用未簽名的程序集。

+0

我試了一下,融合日誌查看器是空的。 – DevT

+1

以管理員身份運行融合日誌查看器(否則它爲空,沒有任何錯誤消息),並記錄所有綁定以確保其正常工作。 –

+0

但仍然空 – DevT

2

在您的硬盤上搜索未簽名程序集的所有匹配項並刪除它們 - 只保留簽名版本。然後做一個完整的重建。它可以工作,或者你會發現誰在引用舊的程序集。

+0

有沒有辦法找到那些舊的程序集引用? – DevT

+0

哦,對。只需查找具有該名稱的所有文件,並刪除所有文件,除非您確實*已簽名。 – zmbq

2

學習和使用的Process Monitor,然後你就可以從那裏你的進程嘗試加載組件看到,

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

知道所有的位置後,繼續和刪除那些未簽名的版本。通常他們可能會被單元測試套件或其他東西緩存到某處。通過刪除它們,您應該能夠解決問題。

+0

我會試試這種方式,讓你知道結果 – DevT

相關問題