命名空间浏览在工具和导入中正常工作,但在代码窗口中无法正常工作(导入行除外)

时间:2009-07-03 16:33:17

标签: visual-studio namespaces intellisense

我发布了这个问题,仍然没有得到答案,所以我想我会链接到问题的以下视频文件...抱歉,我试图upload the video到videos.yahoo.com,但降级后的视频是不可见的。所以这是我网站上托管的direct link to the avi file

问题概要 我有一个控件项目...... GoodMins.MeetingMgr.Winforms.Controls。 它有一个项目引用GoodMins.MeetingMgr.BizObjects。 在任何GoodMins.MeetingMgr.Winforms.Control的代码文件中我都可以     *添加导入到GoodMins.MeetingMgr.BizObjects和intellisense成功浏览命名空间路径。     *在同一文件中CLASS声明中我无法再成功浏览GoodMins.MeetingMgr.BizObjects命名空间。
    *但我可以浏览MeetingMgr.BizObjects(应该是一个无效的命名空间)。它找不到你的根GoodMins名称空间。

问题在于,当我在设计器中对文件进行更改时... visual studio在设计器文件中重新生成代码,并使用正确的命名空间。但是由于Visual Studio无法识别该命名空间,因此会发生编译错误。

帮助......我今晚花了大约3个小时才无济于事。

更详细的旧问题。

问题

我刚刚注意到我的项目中出现了一些奇怪的问题,导致了一些编译时问题。如果您想了解底线问题,请阅读问题底部的粗体文字。阅读所有行为细节。

我有控制项目,在那个项目中我引用了另一个bizobjects项目。

我使用控件项目的数据源视图来创建要放到控件上的对象,并创建AttendeesBindingSource。所有这一切都很好。

在编译时虽然我在控件的DESIGNER文件中出现错误:

Me.AttendessBindingSource.DataSource = GetType(GoodMins.MeetingMgr.BizObjects.Attendees)

这在GoodMins.MeetingMgr.BizObjects.Attendees下有一个小的squiggley行,警告“类型'GoodMins.MeetingMgr.BizObjects.Attendees'未定义”

更多信息 我已经想出如何解决这个错误。

我只是删除了GoodMins。来自参考。换句话说......到VS我可以从

改变上面一行
Me.AttendessBindingSource.DataSource = GetType(GoodMins.MeetingMgr.BizObjects.Attendees)

Me.AttendessBindingSource.DataSource = GetType(MeetingMgr.BizObjects.Attendees)

我可以编译。当我对控件进行一些更改时,会恢复代码,我无法再次编译。

仅供参考数据源视图窗口显示GoodMins.MeetingMgr.BizObjects的完整命名空间作为我要添加的父级

仅供参考如果我尝试添加Imports语句(这是一个vb.net项目),Intellisense将找不到项目GoodMins.MeetingMgr.BizObjects。但它会找到项目MeetingMgr.BizObjects。

FYI对象浏览器,在“查看命名空间”模式下,显示GoodMins.MeetingMgr.BizObjects命名空间,不显示MeetingMgr.BizObjects命名空间。

最后一条信息。我在BizObject项目中执行命名空间的方法是从项目属性中删除命名空间声明,并在每个类文件周围放置一个显式的命名空间声明为“Namespace GoodMins.MeetingMgr.BizObjects”...“End Namespace”我很遗憾这样做和我有一天可能会改变它,但现在我仍然坚持它。

所以这里是我的问题的底线...为什么Visual Studio中内置的所有工具都想使用GoodMins.MeetingMrg.BizObjects的完整命名空间,但代码窗口中的intellisense无法识别完整命名空间,但会识别MeetingMgr.BizObjects的截断命名空间。

我看到了我知道的任何地方,看不出这个。

赛斯

1 个答案:

答案 0 :(得分:1)

在VB中定义命名空间有点奇怪。一切都自动成为默认命名空间的一部分(在项目属性中定义)。添加命名空间语句时,不像在C#中那样添加默认命名空间。

例如,如果您的默认命名空间是GoodMins,那么

 Namespace MeetingMgr
 End Namespace

实际上会被翻译为GoodMins.MeetingMgr。如果将名称空间定义为

 Namespace GoodMins.MeetingMgr
 End Namespace

那么这与GoodMins.GoodMins.MeetingMgr相同。