2012-02-27 72 views
0

我在VB.NET模塊中創建了幾個擴展方法。我把它們放在一個類中,構建它並獲得DLL。 從另一個程序中我引用了該DLL,並使用Imports將其導入。 擴展方法出現在智能感知中,它可以正常工作,但在錯誤控制檯中會出現警告,說明:擴展方法到DLL

無法解析此引用。找不到程序集「nK0deExtendedMethods」。檢查以確保程序集存在於磁盤上。

有誰知道爲什麼會出現這個錯誤,即使我已經引用了DLL?

這是我把模塊與擴展方法放在一起的類。

Imports System.Runtime.CompilerServices 
Imports System.Drawing 

Namespace nK0deExtendedMethods 

    Public Module ExtMethods 

     <Extension()> 
     Public Function Merge(ByVal img1 As Image, ByVal img2 As Image) As Image 

      Dim bmp As New Bitmap(Math.Max(img1.Width, img2.Width), img1.Height + img2.Height) 
      Dim g As Graphics = Graphics.FromImage(bmp) 

      g.DrawImage(img1, 0, 0, img1.Width, img1.Height) 
      g.DrawImage(img2, 0, img1.Height, img2.Width, img2.Width) 
      g.Dispose() 

      Return bmp 

     End Function 

    'Public Class NewImageMethods 

    'End Class 

End Namespace 

我還有一個疑問。在Imports聲明中,我必須提及該DLL的名稱以及Namespace名稱。像這樣,

Imports ExtendedMethods.nK0deExtendedMethods 

通常你只需要導入命名空間的名字,對不對?爲什麼會這樣呢?

非常感謝大家。

+0

您是否嘗試清理並重建您的解決方案? – 2012-02-27 08:27:18

+0

@AmenAyach是的,但沒有任何改變。 – Isuru 2012-02-27 08:34:36

+0

在這些不好的情況下,我使用進程監視器(http://technet.microsoft.com/fr-fr/sysinternals/hh205949)來檢查DLL加載失敗的位置。祝你好運。 – remio 2012-02-27 09:02:37

回答

0

我剛剛創建了一個新的Class,去掉了Namespace並構建它。這工作得很好。

0

VB'Module'類型很特別。

您可以使用:

Imports ExtendedMethods 

但你必須引用這樣的代碼:

nK0deExtendedMethods.ExtMethods.Merge(Nothing, Nothing) 
+0

我整理出來了。我創建了一個新類,刪除了類名和'Namespace'並插入了模塊。解決了這兩個問題。感謝您的答覆。欣賞它:) – Isuru 2012-02-29 14:00:46