是否可以在vb.net dll中从dll导入c#类?

时间:2012-02-16 12:13:31

标签: c# vb.net visual-studio-2010 dll reference

  • IDE:VS2010
  • Framework.net:4.0

我在Visual Studio 2010下创建了一个c#dll项目,有几个公共类,我想在另一个dll项目中使用它的类,但是用vb.net编写。

在vb.net dll项目中,我引用了构建的c#dll,但无法导入c#类。 c#dll的命名空间甚至无法识别。

我该怎么做才能看到我的c#课程? 如果可能的话。

我的c#dll(名称空间MyCSharpDll)的类示例:

namespace MyCSharpNamespace {
  public class MyCSharpClass {
    public void Test() {}
  }
}

我的vb.net dll文件中的示例:

Imports MyCSharpDll.MyCSharpNamespace

VS2010表示错误,指出MyCSharpDll未知或没有公共成员。

谢谢。

4 个答案:

答案 0 :(得分:4)

你问:“我在Visual Studio 2010下创建了一个c#dll项目,有几个公共类,我想在另一个dll项目中使用它的类,但是用vb.net编写。”

是的,你可以做到。

只需添加到该DLL引用就可以了!

答案 1 :(得分:4)

假设有问题的dll是CLS compliant并且针对相同的运行时版本进行编译,那么您应该可以毫无问题地使用它。

如果不满足这些条件中的任何一个(或两个),您将无法使用导入的DLL。

确保Import指令使用程序集元数据中定义的命名空间 - 查看C#项目属性以查看默认命名空间是什么,这就是您需要导入的内容。

答案 2 :(得分:4)

我认为你应该重写你的导入

导入MyCSharpNamespace

没有'MyCSharpDll'部分

答案 3 :(得分:1)

您需要添加对C#dll的引用。

http://msdn.microsoft.com/en-us/library/wkze6zky%28v=vs.80%29.aspx

现在您可以从VB.NET实例化一个C#类:

Dim cClass = New MyCSharpNamespace.MyCSharpClass()