2011-04-21 283 views
2

我們有2個在.NET 3.5和.NET 4.0上編寫的桌面主機應用程序。 我們有3個用.NET 3.5編寫的加載項。 一個加載項寫在.NET 4上 - 「NET4APP」。從.NET 3.5應用程序運行.NET 4.0應用程序

我們希望使用.NET 3.5主機應用程序爲所有加載項集成主機應用程序和加載項。

它們可以與MSI包捆綁在一起。

我們不想讓客戶使用.NET 4,如果他們沒有它並且不使用NET4APP。

有什麼辦法可以將.NET 4應用程序(或.NET 4運行時)加載到.NET 3.5應用程序中?

+4

我不明白。如果客戶沒有.NET4,那麼您如何期望加載.NET4運行時? – 2011-04-21 14:02:14

+0

如果客戶不想使用NET4APP,我們不應該讓他安裝.NET 4.0。但是使用NET4APP的客戶應該爲.NET 3.5應用程序提供集成/統一的體驗。 – 2011-04-21 16:18:53

回答

2

使用.NET4的客戶,您可以簡單地在.NET4下運行整個事情。如果你提供了兩個設置(一個是NET4APP,另一個沒有),每個人都會很高興。

+0

看來我們寫的C++ loader在啓動時加載了CLR 4或2。我們的.NET 3.5加載項在CLR 4.0存在時運行。只有CLR 2時才加載需要CLR 4.0的加載項。 – 2011-05-05 20:12:58

3

否;但是,您應該在.NET 3.5中編譯.NET 4.0應用程序並查看會發生什麼。你可能沒有使用特定於4.0的任何東西,只能將它編譯成3.5。

1

如果客戶(或機器)沒有安裝它,您是否嘗試在.Net 3.5下構建.Net 4應用程序,則無法加載.Net 4運行時?有可能您沒有使用特定於.Net 4的組件。

4

無法在.net 3.5運行時(實際上是.net 2.0運行時)下運行.net 4.0應用程序。如果它是.net 3.5應用程序,則可以在2.0運行時運行它,因爲.net 3.5應用程序在.net 2.0運行時運行。但會有問題,這種方式很危險。如果你想運行.net 4.0應用程序,你必須使用.net 4.0運行時,沒有選擇。或者您必須將其重寫爲.net 3.5。

我們必須將我們項目的某些部分從.net 3.5重寫爲.net 2.0 RTM,因爲我們的一些客戶端沒有安裝.net 3.5,其中一些事件沒有安裝2.0 SP1,所以我們將我們的產品重新編寫爲符合.net 2.0 RTM標準。我們仍然使用.net 3.5的一些功能,將一些.net 3.5程序集分發給我們的產品。其實這不是問題,因爲我們仍然可以使用擴展方法lambda,linq-to-objects。我敢肯定,你將退回到.net 3.5運行時沒有任何問題。從.net 3.5退到.net 2.0更加痛苦:)

相關問題