簡體   English   中英

是否可以在同一進程中加載​​兩個版本的.NET運行時?

[英]Is it possible to load two versions of the .NET runtime in the same process?

我需要澄清兩種情況:

  1. 使用.NET 3.5編譯的可執行文件需要使用使用.NET 1.1編譯的庫,並且庫必須在1.1運行時運行。

  2. 使用.NET 1.1編譯的可執行文件需要使用使用.NET 3.5編譯的庫。

我找不到一個可靠的來源,說明無法加載兩個版本的.NET運行時,而且微軟的文檔在這個問題上非常模糊。

否 - 您無法將CLR加載到同一進程中兩次。 請參閱CLR Hosting的文檔

與早期版本的運行時一樣,CorBindToRuntimeEx函數初始化運行時。 您可以選擇要加載的運行時版本,但進程只能 托管一個版本

.NET 4承諾通過In-Process Side-Side在同一進程中托管不同的CLR版本。

對於情況#1,是否有任何特殊原因(例如,重大變化)需要將庫托管在1.1運行時? 是否可以通過1.1編譯的Web服務公開庫,並將可執行文件指向Web服務? (或者其他一些遠程處理技術,讓庫在自己的進程中?)

對於情況#2,是否可以在2.0 / 3.5下重新編譯1.1應用程序,以便它可以駐留在同一個進程中?

無論如何,Rob Walker是對的(我贊成) - 你根本無法在同一個進程中托管2個版本的運行時。 所以你需要以某種方式解決它。 我想,在這兩種情況下,源都必須可用,因此應該重新編譯和重新測試。

暫無
暫無

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

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