在同一个应用程序中使用VB.NET和C#?

时间:2009-05-14 11:01:23

标签: c# vb.net visual-studio-2005

我在MS Visual Studio 2005中开发基于GUI的应用程序,我只是想 知道是否可以在同一个项目中同时使用VB.NET和C#。或者我可以在我的VB.NET项目中包含用C#编写的模块吗?

我有一个用C#编写的类,我想在我的基于VB.NET的项目中使用它,所以如果我可以包含和调用该项目中的函数,那么我将不必再在VB.NET中编写该类。

所以请帮助我,因为我是.NET编程的新手。

7 个答案:

答案 0 :(得分:27)

  

我只想知道在同一个项目中可以同时使用VB和C#。

不,不在同一个项目中。另一方面,您可以在相同的解决方案中使用它们。

  

或者我可以在我的VB.net项目中包含用C#编写的模块。

我建议您创建一个包含两个项目的解决方案:一个在C#中,它构成了一个从VB项目中使用的库。这很简单,易于维护且易于扩展。

答案 1 :(得分:16)

我自己从未这样做过,但我知道你可以将C#代码编译成一个dll,然后加载并引用VB项目中的dll。

来自"Calling C# class in VB.net"

  

我认为您想要的C#代码   use必须编译为DLL。一旦   这样做,简单添加一个参考   到你的VB.Net的那个项目   项目,导入你的命名空间   需要,然后你可以使用C#   代码。

另见How To: Create and Use C# DLLs(来自MSDN,VS2005)

答案 2 :(得分:9)

您还希望确保C#代码符合CLS。这意味着它不会公开暴露其他.NET语言无法理解的任何功能(例如,无符号的int - VB中不存在,或者只是大小写不同的类 - 因为VB不区分大小写)。要执行此操作,您需要添加一个属性,以便在您违反任何准则时编译器将引发错误。 This article向您展示了如何执行此操作:

  

CLSCompliantAttribute可以应用于程序集,模块,   类型和成员。

     

用于将整个程序集标记为符合CLS的以下语法   使用

using System; 
[assembly:CLSCompliant(true)]
     

用于将特定方法标记为符合CLS的以下语法   使用

[CLSCompliant(true)]  
public void MyMethod()`

答案 3 :(得分:3)

将VB.NET和C#代码放在不同的项目中。 (我在我的开源项目http://msquant.sourceforge.net/中使用了VB.NET和C#,并且效果很好)。

您无需担心DLL,只需引用项目(使用“添加引用”对话框中的“项目”选项卡)。例如。如果需要在C#代码/项目中使用函数,请在VB.NET项目中添加一个引用到C#项目。

答案 4 :(得分:3)

您不能在同一个项目中使用C#文件和VB文件。但是,您可以在同一解决方案中使用VB和C#项目并引用它们。

在您的代码中,您可以使用:

Imports namespace 

using namespace

将参考文献添加到相应的项目后,构建解决方案,您就可以了。

您还可以在单​​独的解决方案中创建VB.NET库,编译它并将DLL导入C#项目,反之亦然。

答案 5 :(得分:2)

您还必须知道,如果您的VB.NET项目在同一个解决方案中有一个C#项目,其中一个项目引用了另一个项目,则引用项目中的更改将适用于重建解决方案后可供另一方使用。它就像有二进制引用,但能够在同一个解决方案上更改代码。

就个人而言,我不喜欢这样,但我总是处于这样的情况:我修改了引用项目中的代码,并且不知道为什么我的更改不在我使用它的代码中而且我想它出去,哦,我必须重建。

对于临时帮助,可以接受,但不能每天编程。

答案 6 :(得分:0)

如果您只打算在Visual Basic项目中使用该模块,那么您应该考虑将代码转换为Visual Basic。如果您需要在C#和VB.NET程序中使用该模块,我会使用上面发布的解决方案之一

您可以尝试类似* Convert C# to VB.NET的内容。它将C#转换为VB.NET代码。当我必须转换我在网上用C#编写的东西时,我专门使用这个页面。