2010-02-26 134 views
23

這個問題相當老,經常問,我有類似的問題在這裏,但我的問題是更具體一點。在ASP.Net網站項目中混合使用VB.Net和C#代碼?

Q1。在ASP.Net網站中混合使用C#和VB.Net代碼是否合法?它會不會起作用?如果它的工作原理可能如何實現?任何樣品都會很好。 Q2302。如果混合C#和VB.Net代碼有任何影響,那麼請分享這些。

我有一個在VB.Net中編碼的Web項目。我正在研究項目的一個模塊。我想用C#編寫代碼。我不能將整個項目轉換爲C#,因爲我不是唯一一個在項目上工作的人。然而,我打算建立的模塊,我想有用C#構建的模塊。

我聽說在web項目的情況下,如果我們在C#中編寫代碼並且在VB.net中編寫代碼,那麼編譯項目到dll時會出現問題。真的嗎?如果是,那麼解決方案是什麼。

此外,如果我在.Net中構建動態鏈接庫,那麼我可以混合使用C#和Vb.Net代碼嗎?

回答

49

http://msdn.microsoft.com/en-us/library/t990ks23.aspx:在App_Code文件夾

多種編程語言,因爲在App_Code文件夾中的源代碼被編譯成一個單一的組件,在App_Code文件夾中的所有文件必須在相同的編程語言。例如,App_Code文件夾不能在Visual Basic和C#中包含源代碼。

但是,您可以將Web應用程序配置爲將App_Code文件夾的子文件夾視爲獨立的可編譯單元。然後每個文件夾可以包含不同編程語言的源代碼。通過在Web.config文件的編譯元素中創建codeSubDirectories元素並添加對子文件夾的引用來指定配置。下面的例子說明了如何配置名爲VBCode和CSCode子文件編譯成不同的組件:

<compilation debug="false"> 
    <codeSubDirectories> 
     <add directoryName="VBCode" /> 
     <add directoryName="CSCode" /> 
    </codeSubDirectories> 
</compilation> 

到VBCode和CSCode子文件夾的引用並不需要包括什麼編程語言,包含在子文件夾中的任何信息。與App_Code文件夾本身一樣,ASP.NET會根據子文件夾中的文件推斷編譯器的使用。

+3

+1。很好的回答... –

+7

該解決方案適用於Web SITE項目。史蒂夫問了一個web APPLICATION項目,但是,它並沒有使用app_code文件夾。 – Axeva

+0

什麼是天才.... +10000 –

0

看來你可以在同一個項目中混合使用它們,你需要做一些你需要的代碼作爲控制。因此,如果主站點在C#中,並且您要將VB部分作爲ascx控件執行,則可以在站點中拖放該部分。

我沒有意識到你可以這樣做,但是一個團隊成員在他正在做的一件工作中完成了這項工作。

8

這裏得票最多的答案只適用於網站項目,而不適用於Web應用程序項目。我認爲很多開發人員使用術語「Web應用程序」,一般忽略了這樣一個事實,即從技術上講,它在.NET中是不同的事情。微軟說:「默認情況下,Web應用程序是根據項目文件中的語言設置進行編譯的,但可以做出例外,但相對困難。」所以,我認爲唯一的方法就是在一個解決方案中有兩個獨立的項目。 (同樣,網站項目沒有解決方案或項目文件。)我不確定所有的細節。

+1

「(同樣,網站項目沒有解決方案或項目文件。)」它*可以*有一個解決方案文件,實際上(VS甚至可能會提示您保存一個),但是的,它沒有項目。 –

+0

@ user692918:+1,對標題和內容進行了更正。我確實有一個網站項目與其他幾個項目的解決方案。 –

+0

以上解決方案適用於Web應用程序項目嗎?我有多個項目的大型Web應用程序。我將在c#上添加對同一個web項目和其他類庫項目的新更改。這對我有用嗎? –

相關問題