【问题标题】:Use VB.NET and C# in the same application?在同一个应用程序中使用 VB.NET 和 C#?
【发布时间】:2009-05-14 11:01:23
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢您的及时回复...我认为您告诉我的内容与 Jared 相同,但更容易做到,所以我会采用 Jared 的解决方案...
    【解决方案2】:

    我自己从未做过,但我知道您可以将 C# 代码编译成 dll,然后在您的 VB 项目中加载和引用该 dll。

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

    我认为你想要的 C# 代码 使用必须编译为 DLL。一次 大功告成,简单添加引用 到那个项目到你的 VB.Net 项目,导入你的命名空间 需要,然后你可以使用C# 代码。

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

    【讨论】:

      【解决方案3】:

      您还希望确保您的 C# 代码符合 CLS。这意味着它不会公开其他 .NET 语言无法理解的任何功能(例如,无符号整数 - 在 VB 中不存在,或者仅按大小写区分类 - 因为 VB 不区分大小写)。为此,您需要添加一个属性,以便在您违反任何准则时编译器会引发错误。 This article 告诉你如何做到这一点:

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

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

      using System; 
      [assembly:CLSCompliant(true)]
      

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

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

      【讨论】:

      • @Martin - 自 VB8 (2005) 起,VB 支持无符号整数。
      • 啊,我错了——我不是 VB 程序员。尽管它们仍然不符合 CLS,因此即使我猜您在这种特定情况下可以忽略它,仍然会标记错误。
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        Imports namespace 
        

        using namespace
        

        将引用添加到适当的项目后,构建解决方案,您就可以开始了。

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

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

            您可以尝试 *Convert C# to VB.NET 之类的方法。它将 C# 转换为 VB.NET 代码。当我必须转换我在网上找到的用 C# 编写的东西时,我只使用这个页面。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-12-17
              • 2015-01-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-02-25
              • 2014-10-01
              相关资源
              最近更新 更多