Vb.net 如何将vb类添加到类库中?

Vb.net 如何将vb类添加到类库中?,vb.net,dll,visual-studio-2005,class-library,Vb.net,Dll,Visual Studio 2005,Class Library,我做了一个新的VS2005类库项目,并在其中添加了几个VB.NET类。但是,当我编译项目并将dll导入其他项目时,我看不到我的类 我做错了什么,我应该怎么做才能在编译中添加呢?您是否在类库中的类上使用了显式访问修饰符(Public或Friend)?如果没有,它将默认为Friend。这意味着您的类仅在该程序集中可见(类库) 因此,您可能希望将类库中的某些特定类设置为公共类: Public Class MyClass ... End Class 编辑:正如Steven Doggart指出的

我做了一个新的VS2005类库项目,并在其中添加了几个VB.NET类。但是,当我编译项目并将dll导入其他项目时,我看不到我的类


我做错了什么,我应该怎么做才能在编译中添加呢?

您是否在类库中的类上使用了显式访问修饰符(
Public
Friend
)?如果没有,它将默认为
Friend
。这意味着您的类仅在该程序集中可见(类库)

因此,您可能希望将类库中的某些特定类设置为公共类:

Public Class MyClass
    ...
End Class

编辑:正如Steven Doggart指出的,VB.NET类在默认情况下是公共的。因此,除非您明确使用了另一个访问修饰符,否则这可能不会成为问题。

出现这种情况的原因有多种,因此如果没有更多信息,就无法确定原因,但我想到的最可能的原因是:

  • 类库中的类不能声明为
    Public
    。如果它们被声明为
    Friend
    (如果它们是嵌套类型,则声明为
    Private
    ),则使用该库的其他项目将看不到它们。类应该这样声明:
    公共类MyClass
  • 使用代码未指定命名空间。除非类库中声明类的命名空间与试图调用它的代码相同,否则使用代码需要导入类库的命名空间,或者在使用类库时需要完全限定类名。要导入名称空间,请在使用该类的代码文件的顶部添加以下行:
    Imports MyClassLibraryNamespace
    (但使用实际名称空间)。要完全限定内联类名,可以这样做:
    Dim myVariable As New MyClassLibraryNamespace.MyClass

它们是否确实包含在项目中,并且具有允许跨项目使用的访问修饰符?我使用Add->Existing Item添加了它们。我是否应该以不同的方式添加@朋友你说进口是什么意思?引用了正确的术语,这还不够。您还需要将Import yournamespace语句用于要使用classes@Steve我使用ign Add Reference命令->Browse添加了dll。您所说的默认可访问性是不真实的。在C#中,类的默认可访问性是
internal
(相当于
Friend
),而在VB中,类的默认可访问性是
Public
。很抱歉。我还没有检查这些默认值。在过去几年中,我经常在混合解决方案中使用VB.NET和C#,因此我总是使用显式访问修饰符来避免此类错误。无论如何,谢谢你的更正。