2011-07-18 102 views
1

我的.NET應用程序運行作爲一個插件到C++ MFC桌面應用,其提供一個.NET SDK。主要的應用程序負責在加載任何插件之前加載.NET。我編譯我的項目對.NET 3.5,下面的測試代碼工作得很好:在.NET 2.0上使用.NET 3.5功能....它正在工作嗎?

MainApp.WriteLine("MyPlugin running on .NET {0}.{1}", _ 
         System.Environment.Version.Major, _ 
         System.Environment.Version.Minor) 

    Dim data As Int32() = New Int32() {1, 1, 1, 1, 4, 4, 4, 4, 12, 12, 12, 12} 
    For Each distinctValue As Int32 In data.Distinct() 
     MainApp.Write(distinctValue.ToString() & ", ") 
    Next 

這是Linq的代碼只能在.NET 3.5的權利運行?然而,當它打印版本的消息也稱,「在.NET 2.0上運行爲myplugin」

爲什麼/這是怎麼工作,我可以依靠它來總是工作,只要.NET 3.5已經安裝?

回答

2

在猜測,這是報告的.NET,這是2.0的核心版本。這並沒有更新unti lversion 4.0,因爲核心代碼是相同的。

+0

AHHHH,所以我怎麼測試的/實際/版本? –

+2

其中*實際*版本? .NET運行時的*實際版本是2.0。更高版本的.NET(3.0和3.5,包括Service Pack)不是運行時環境的新版本,只是新庫和一些編譯器技巧。如果您關心,請嘗試使用僅限於.NET 3.5庫中定義的類型,如果它不可用,則會拋出異常。 – Bevan

+0

我想* *實際*版本是由用戶下載和安裝的版本。 2.0,3.0,3.5或4.0。這是我的客戶的想法,因爲這是他們在微軟網頁上看到的版本。因此,如果有人只* *安裝了,我必須要閱讀的消息「2.0」,2.0如果有人只* *已經安裝了3.5我需要的信息爲「3.5」。如果某人已經安裝了,我想知道兩者中的哪一個實際上被加載。如果需要,我會使用您的解決方案,但很難相信這些信息不會在沒有拋出異常的情況下得到。 –

相關問題