为什么visual studio在项目中已经引用了程序集时找不到命名空间?

时间:2011-11-01 16:28:39

标签: c# .net

为什么我的Visual Studio会显示错误:

  

名称空间“Microsoft.VisualBasic”中不存在类型或命名空间名称“兼容性”(您是否缺少程序集引用?)

当我在“添加引用”对话框的“.NET”选项卡下已经引用了Microsoft.VisualBasic.Compatibility组件时。

我的.net知识处于非常基础的水平。我确实谷歌这个问题,但找不到相关的解决方案。任何帮助,提示,建议,链接将不胜感激。

修改

该项目实际上是C#中的Outlook 2003加载项。

3 个答案:

答案 0 :(得分:2)

您是否有机会瞄准.NET 4客户端框架,并将其更改为完整框架进行修复吗?

答案 1 :(得分:2)

您没有显示导致错误的代码。但是,Microsoft.VisualBasic.Compatibility程序集仅包含一个名称空间Microsoft.VisualBasic.Compatibility.VB6。我的猜测是你需要在你的代码中包含这个语句

using Microsoft.VisualBasic.Compatibility.VB6;

您声明您的.NET知识处于非常基本的水平,所以让我试着澄清一下。

在项目中添加对程序集的引用允许您实例化该程序集中定义的类型并执行属于这些类型的代码。稍微简化一下你可以将程序集名称视为带有没有DLL扩展的代码的文件名。在这种情况下,程序集的名称为Microsoft.VisualBasic.Compatibility

为了避免识别器冲突,.NET具有命名空间的概念。命名空间本质上是分层的,就像互联网域名一样。 Microsoft.VisualBasic.Compatibility.VB6命名空间位于顶级Microsoft命名空间中,具有三个从属命名空间。

要引用您需要使用命名空间限定它的类型,例如ScaleMode枚举的完全限定名称为Microsoft.VisualBasic.Compatibility.VB6.ScaleMode。但是,您很快就会厌倦这样做,并且大部分时间您将通过在源文件的开头放置using语句从命名空间导入所有类型,如上所示。然后,您只需在代码中引用ScaleMode枚举。

这里令人困惑的部分是程序集名称与您需要的命名空间几乎相同。

答案 2 :(得分:1)

不是很清楚,但似乎您在另一个程序集中定义的代码中引用并且VS报告错误,即使该程序集经常链接到主项目。 考虑到您在中讨论 Outlook 2003加载项,最常见的情况是该程序集/项目不在相应的.NET运行时版本中。例如,您的主项目具有.NET Framework 4.0版本,程序集/项目具有2.0版本 希望这会有所帮助。