我收到一个编译器错误,指出未定义“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/