2011-11-01 92 views
0

爲什麼我的Visual Studio顯示錯誤:爲什麼visual studio在程序集已經在項目中引用時無法找到名稱空間?

The type or namespace name 'Compatibility' does not exist in the namespace 'Microsoft.VisualBasic' (are you missing an assembly reference?)

當我有添加引用對話框中的.NET選項卡下已經引用Microsoft.VisualBasic.Compatibility組件。

我的.net知識處於非常基礎的水平。我沒有谷歌的問題,但找不到相關的解決方案。任何幫助,暗示,建議,鏈接將不勝感激。

編輯

該項目實際上是一個Outlook 2003加載在C#中。

+0

您是否也引用了Microsoft.VisualBasic程序集? – Jaymz

+0

是的,我也有參考。 – craftsman

+0

這真的是一個C#問題或VB.NET問題嗎? – neontapir

回答

2

您沒有顯示導致錯誤的代碼。但是,Microsoft.VisualBasic.Compatibility程序集僅包含一個名稱空間Microsoft.VisualBasic.Compatibility.VB6。我的猜測是,你需要包括這種說法在你的代碼,你.NET的知識是一個非常基本的水平

using Microsoft.VisualBasic.Compatibility.VB6; 

幽州所以讓我嘗試澄清一點。

在您的項目中添加對程序集的引用允許您實例化在該程序集中定義的類型並執行屬於這些類型的代碼。有些東西可以簡化,你可以將程序集名稱視爲帶有不帶DLL擴展名的代碼的文件名。在這種情況下,程序集的名稱是Microsoft.VisualBasic.Compatibility

爲了避免標識符衝突.NET具有名稱空間的概念。名稱空間與Internet域名一樣具有層次性。名稱空間Microsoft.VisualBasic.Compatibility.VB6位於具有三個從屬名稱空間的頂級Microsoft名稱空間中。

要引用一種類型,您需要使用命名空間對其進行限定,例如ScaleMode枚舉的全限定名稱爲Microsoft.VisualBasic.Compatibility.VB6.ScaleMode。但是,您很快就會厭倦這樣做,並且大多數情況下,您將通過在源文件的開始處放置using聲明來導入名稱空間中的所有類型,如上所示。然後,您可以簡單地參考代碼中的ScaleMode枚舉。

這裏令人困惑的部分是程序集名稱與您需要的名稱空間幾乎相同。

+0

我後來意識到我的問題是錯誤的,但我很感謝你的回答。 – craftsman

2

你是否有機會瞄準.NET 4客戶端框架,並改變它到完整的框架修復它?

+0

我後來意識到我的問題是錯誤的,但我很感謝你的回答。 – craftsman

1

不是很清楚,但它似乎是在另一個程序集中定義的代碼中引用,並且VS報告有錯誤,即使該程序集定期鏈接到主項目。 考慮到您在討論Outlook 2003加載項,最常見的情況是該程序集/項目不在相應的.NET運行時版本中。例如,您的主項目具有.NET Framework 4.0版本,程序集/項目具有2.0版本。
希望這會有所幫助。

+0

我後來意識到我的問題是錯誤的,但我很感謝你的回答。 – craftsman

相關問題