名称空间和基 class 无法识别 - 为什么?

Namespace and base class not recognized - Why?

所以我正在做别人给我的项目。

在项目中,有一个main Namespace,姑且称之为“Program”。 在该命名空间中有几个不同的 classes.

现在我必须从命名空间 Devices 中的 class 派生。 已经有另一个 class 派生自对象 Device。 所以我继续前进,创建了我的 class,将其包含在 Devices 命名空间中,从 Device 派生并完成了我的工作。

但不久之后,我无法使用任何基本变量、方法等。整个智能感知不适用于 class。 更糟糕的是,它似乎没有包含在程序集中。

如何让我的 class 被 Intellisense、程序集等识别?我做了一个测试 class 只有这样:

Namespace Devices
    Class Testcle
        ' ... Nothing
    End Class
End Namespace 

而且效果非常好。它被包含在程序集中,Intellisense 工作等

文件夹结构看起来有点像这样:

[Project]
↳ [-] Devices (Folder and Namespace)
    [-] AlreadyExistingClassDerivedFromDevice (Folder)
        ↳ AlreadyExistingClassDerivedFromDevice.vb
    [-] MyClassDerivedFromDevice (Folder)
        ↳ MyClassDerivedFromDevice.vb
↳ [+] Other (Folder)
↳ Testcle.vb
↳ Device.vb

我有什么遗漏的吗?比如有没有我必须激活的隐藏设置?


编辑: 声明看起来有点像这样(但在不同的文件中):

Device.vb

Namespace Devices
    Public MustInherit Class Device
    ' ...
    End Class
End Namespace

这个有效:

AlreadyExistingClassDerivedFromDevice.vb

Namespace Devices
   Public NotInheritable Class AlreadyExistingClassDerivedFromDevice
        Inherits Device
   ' ...
   End Class
End Namespace

这不起作用:

MyClassDerivedFromDevice.vb

Namespace Devices
   Public NotInheritable Class MyClassDerivedFromDevice
        Inherits Device
   ' ...
   End Class
End Namespace

与继承 classes 完全没有区别。只有内部运作。但是那些不应该影响 ctor 或 Intellisense 或其他东西的可访问性,对吧?

我写这个作为答案是因为它解决了我的问题。但是,我不知道是什么原因造成的,也不知道以 'proper' 方式实际解决问题的确切步骤。

我做的是:

我将文件 MyClassDerivedFromDevice.vb 重命名为 MyClassDerivedFromDevice_Old.vb,创建了一个名为 MyClassDerivedFromDevice.vb 的新 class 并在添加命名空间并确保 Intellisense 和一切正常后,我刚刚从 MyClassDerivedFromDevice_Old.vb 复制代码(在 Namespace DevicesEnd Namespace 行之后复制到 MyClassDerivedFromDevice.vb.

问题解决了。


短版:

1) 将 NotWorkingClass.vb 重命名为 NotWorkingClass_Old.vb

2) 添加名称为 NotWorkingClass.vb 的新 class。

3) 添加命名空间到 NotWorkingClass.vb.

4) 检查是否一切正常(Intellisense 等)并被 Visual Studio 识别。

5) 复制从 Namespace X 之后开始到 End Namespace 之前的所有代码,从 NotWorkingClass_Old.vbNotWorkingClass.vb(现在应该可以工作)。