2011-09-01 53 views
1

如果我創建可以在運行時安裝.NET Framework 3.5或.NET Framework 4.0的庫,我想知道需要記住的內容。 我想要一些像企業庫一樣的向後兼容性(但在3.5之前沒有)。我看到他們已經編譯了3.5的庫,但能夠在4.0應用上運行。我希望同樣的效果,希望MINIMAL項目維護工作。 我希望我的問題很清楚。如果不是,請通過評論讓我知道。在Framework 4.0運行時加載Framework 3.5庫

編輯: 我發現如果我設置app.config識別2.0和4.0運行時,我的EXE實際上運行正常運行時。我通過分別卸載.NET 3.5和4.0來測試它是否可以單獨運行它。可能有一些事情需要考慮使用每個框架,但對於小型工具類型的應用程序和庫,我認爲它應該沒問題。任何人不同意?

由於

回答

1

運行時間向後兼容。所以4.0運行時可以運行一個基於3.5和2.0的程序集,但並不是相反。如果您嘗試在2.0運行時運行4.0程序集,則會出現BadImageFormatException,因爲2.0運行時無法加載4.0程序集。並行執行也是另一種選擇,但適用於更高版本的運行時(我相信4.0+),最後我聽說微軟仍在爲將來可以隔離的運行時版本而努力。你不應該編譯你的程序集的多個版本,但你需要記住應用程序所需的最小運行時版本。例如,如果您有一個需要.NET 3.5的模塊,那麼它應該是整個應用程序所需的最低運行時間。

+0

嗨大衛。我發現,如果我第一次嘗試編譯爲3.5,我會檢查它是否在運行時3.5(或技術上2.0和4.0)上兼容之前調用它。我真的很高興它能以這種方式工作。它會讓我的生活更輕鬆。感謝您的回覆。 –

+0

很高興我能幫上忙。如果有什麼你想知道的,打我,我會寫博客。 –

1

MS對這種http://msdn.microsoft.com/en-us/library/ms171868.aspx

的製品在進程並排端執行 此功能使一個應用程序在同一進程中加載​​和啓動.NET Framework的多個版本。例如,您可以運行基於.NET Framework 2.0 SP1的加載項(或組件)和基於.NET Framework 4的加載項的應用程序,該加載項位於同一進程中。較舊的組件繼續使用較舊的.NET Framework版本,並且新組件使用新的.NET Framework版本。有關更多信息,請參閱進程內並行執行。

+0

好吧,我現在明白了一點。所以如果我想創建一個需要兼容.NET 3.5和4.0的應用程序,我必須編譯它的兩個不同版本才能正確工作,正確嗎?不過,我已經讀過,您可以將3.5庫加載到4.0運行庫中,並在相同的運行時間內執行。 –

+0

恩,這不是上面說的。我看到大衛已經爲你更清楚了。 – kmcc049