2015-06-19 247 views
0

我們有一個針對.net framework 1.1構建的VB.net Winform應用程序,它使用.net 1.1 GAC位置引用的程序集(類庫)並正常工作。.NET Framework兼容性問題

但後來我們只將引用的程序集文件遷移到.net 4.0,並在應用程序可執行文件的本地文件夾中部署了這些文件。

主要應用是在.NET 1.1已引用的程序集在.NET 4.0 Framewok

而這個應用程序完美的作品,如果我們安裝.NET Framework 1.1客戶機上和但

所以現在清單文件如果我刪除.net framewok 1.1然後應用程序崩潰,同時從引用程序集中獲取數據。

客戶端機器安裝了.Net Framewok 4.0並且.net運行時支持向後兼容性,以便爲什麼應用程序在刪除.NET 1.1框架後崩潰。

請解釋一下這個問題。謝謝。

+0

CLR v4將自動替換.NET 2.0+程序集的框架程序集請求,替換程序集的4.0版本。因爲它們的4.0版本與2.0版本高度兼容,並且微軟徹底測試過它。但降壓停止在某處,它不會自動爲1.x請求執行此操作。太舊了,沒有測試過。你必須使用你自己的來強制這個。很難猜測「獲取數據」可能意味着什麼(爲什麼我們必須猜測?),但是在.resx文件中聞起來像是一種資源。響鈴,我不是已經告訴過你了嗎? –

+0

謝謝@HansPassant ..我在生產環境中測試這個,並且沒有在該環境中安裝VS ...還檢查了另一個環境中的.resx文件(源代碼),但引用程序集中使用的所有資源都是.Net 4.0組裝版本.. – prawin

回答

0

首先,.NET向後兼容性不保證正確的行爲。這意味着更高版本的運行時(4.0)可以運行早期版本(1.1)的程序集。由於無法保證正確的行爲,因此4.0運行時不會隱式地運行爲較早版本的運行時構建的程序集。要啓用此功能,您必須在程序集的配置文件中明確指定<supportedRuntime>元素,以激活向後兼容性。但是,如果你這樣做,你可能不得不再次測試你的應用程序。強烈建議您針對4.0運行時構建1.1組件,而不是使用<supportedRuntime>