vb.net - 从项目引用中获取类型出现在智能感知中的问题

标签 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”。在顶部,看到两个命名空间都像您期望的那样出现在智能感知中,但是如果我尝试执行“Dim x as New Acme.Business.User”,那么智能感知中不会显示“业务”,并且我收到一条错误消息“Acme.Business.User”未定义。

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

最佳答案

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

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

关于vb.net - 从项目引用中获取类型出现在智能感知中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562027/

相关文章:

c# - 在 Visual Studio 中为 C# 项目管理多个配置文件

c++ - 函数声明和未解析的外部

vb.net - 如何从 VB.NET 中的数组中删除项目?

sql-server - 从 TFS 和 Visual Studio 数据库项目生成更改脚本

vb.net - 如何使 32 位 VB6 应用程序适应 64 位 Office?

c++ - Visual Studio : user depended defines

c++ - 链接器错误 - 未解析的外部符号

c - 如何确定两个相似函数的效率更高

c# - _Application 和 Application 有什么区别

vb.net - 如何防止用户调整表单大小?