从项目参考中获取类型出现在intellisense中的问题

时间:2009-02-18 17:17:37

标签: vb.net visual-studio visual-studio-2008 namespaces reference

我收到编译错误,说“Acme.Business.User”没有定义。

我有一个名为“Acme.Business”的类库项目,它也有“Acme.Business”作为程序集名称和根名称空间。没有类使用“Namespace”关键字,因此它们都应存在于命名空间“Acme.Business”中。

我还有一个名为“Acme.Web”的类库项目,其项目引用为“Acme.Business”。 “Acme.Web”再次是项目名称,程序集名称和根名称空间。

这是奇怪的部分。如果我在“Acme.Web”中添加一个类,我可以输入“Imports Acme”。在顶部,看到两个名称空间出现在intellisense中,就像你期望的那样,但是如果我尝试“Dim x as New Acme.Business.User”,那么“Business”不会出现在intellisense中,我收到错误说“Acme.Business.User”未定义。

我看不出我做错了什么!请帮忙。感谢。

2 个答案:

答案 0 :(得分:1)

我认为您可能误解了项目默认命名空间的工作原理。默认命名空间是一个项目文件设置,它只是告诉Visual Studio在向项目添加新类文件时要向每个文件添加什么命名空间。如果您已从代码文件中删除了所有这些命名空间,则该命名空间中不存在您的类型。

这意味着Acme.Business程序集中的所有类型都存在于全局命名空间中,这可能不是您想要的。为了获得所需的行为,您需要将命名空间添加回代码文件,因为这是编译器使用该命名空间创建类型名称的唯一方法。

答案 1 :(得分:0)

好的,我发现我看到的行为是因为我在Acme.Web中的代码中声明了我在C#中习惯的方式,完全符合它的条件,即。 命名空间Acme.Web.UI.WebControls 。我没有意识到在VB.NET中它构建在根命名空间的指定之上。我删除了项目的“根命名空间”设置中指定的部分,它开始工作。因此,我在Acme.Web代码中的命名空间现在看起来像命名空间UI.WebControls