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

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

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

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

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

从“在VB.net中调用C#类” :

我认为您要使用的C#代码必须编译为DLL。 完成后,简单地将对该项目的引用添加到VB.Net项目,导入所需的命名空间,然后就可以使用C#代码。

另请参见如何:创建和使用C#DLL (来自MSDN,适用于VS2005)

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

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

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

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

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

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

要将整个程序集标记为符合CLS,请使用以下语法

using System; [assembly:CLSCompliant(true)] 

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

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

将VB.NET和C#代码放在不同的项目中。 (我在我的开源项目中使用VB.NET和C#, http://msquant.sourceforge.net/ ,它运行良好)。

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

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

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

 Imports namespace 

要么

 using namespace 

一旦将参考添加到适当的项目中,就构建解决方案并且您很高兴。

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

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

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

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

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

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