2011-11-01 90 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

相关问题