簡體   English   中英

在同一個應用程序中使用VB.NET和C#?

[英]Use VB.NET and C# in the same application?

我在MS Visual Studio 2005中開發基於GUI的應用程序,我只想知道是否可以在同一個項目中同時使用VB.NET和C#。 或者我可以在我的VB.NET項目中包含用C#編寫的模塊嗎?

我有一個用C#編寫的類,我想在我的基於VB.NET的項目中使用它,所以如果我可以包含和調用該項目中的函數,那么我將不必再在VB.NET中編寫該類。

所以請幫助我,因為我是.NET編程的新手。

我只想知道在同一個項目中可以同時使用VB和C#。

不,不在同一個項目中 另一方面,您可以在同一解決方案中使用它們。

或者我可以在我的VB.net項目中包含用C#編寫的模塊。

我建議您創建一個包含兩個項目的解決方案:一個在C#中,它構成了一個從VB項目中使用的庫。 這很簡單,易於維護且易於擴展。

我自己從來沒有這樣做,但我知道你可以將C#代碼編譯成一個dll,然后加載並引用你的VB項目中的dll。

“在VB.net中調用C#類”

我認為您要使用的C#代碼必須編譯為DLL。 完成后,簡單地將對該項目的引用添加到VB.Net項目,導入所需的命名空間,然后就可以使用C#代碼。

另請參見如何:創建和使用C#DLL (來自MSDN,適用於VS2005)

您還希望確保C#代碼符合CLS。 這意味着它不會公開暴露其他.NET語言無法理解的任何功能(例如,無符號的int - 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#編寫的東西時,我專門使用這個頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM