2015-10-17 166 views
3

我們有一個包含300多個組件(dll和幾個exe)的應用程序。其中一些目標爲4.0框架,一些使用2.0框架,一些使用本地C++編寫(unmanged),一些使用C++/CLI,其中一些使用ManagedExtensions for C++編寫。從.NET Framework 2.0遷移到4.5.2

現在我們的要求是遷移到.NET Framework 4.5.2。

所以我的問題是:

會不會是好,如果我只是改變所有的exe的TargetFramework版本4.5.2與出改變dll的TargetFramework版本?

它保證我所有的dll都加載並運行在4.5.2運行時? (包括所有的C++ DLL)。

我已經瀏覽了互聯網上的多篇文章,並且在C#,託管C++和非託管C++ dll混合的場景中找不到具體答案。任何幫助表示讚賞。

編輯:我們的團隊生成核心庫(一種框架)和很少的可執行文件(目標爲2.0框架),供其他各個團隊使用,以滿足客戶的特定需求。部分客戶尚未從XP遷移(XP中使用的最大.NET框架爲4.0)。所以隨着更新的操作系統,我們仍然需要支持使用XP的客戶端。

回答

3

雖然2.0項目通常可以升級到4.5.x而無需更改代碼,但是您可能遇到的.NET版本之間存在突破性差異。鑑於你的項目的規模和複雜性,我必須建議不要盲目改變TargetFramework財產,並希望最好。

儘管4.0可執行文件可以加載2.0 DLL,但由於我描述的破壞更改,因此不推薦使用它。

遇到混合C++代碼的問題。我建議你首先將你的「Managed Extensions for C++」代碼升級(或者說是重寫)到C++/CLI(你可能想在VS2015中使用VS2015中的C++ 11和C++ 14功能它)。

我建議單獨和分別升級每個項目,按照您的方式處理依賴關係鏈。如果您已經(或將要編寫)針對系統的更關鍵部分的單元測試和集成測試,它將會有所幫助。

+0

感謝您的建議。我們很快就會遷移到C++/CLI。我們通過將可執行文件更改爲目標4.5.2運行時的方法進行了一些測試,到目前爲止我們沒有發現任何問題。你有沒有任何可用的功能突破性更改列表,我會繼續搜索它們。 –

0

從2.0遷移到4.5.2只是點擊作業,而沒有gaurantee它不會破壞任何東西。最近我升級了一個web應用程序到4.5.2,並且出現了請求驗證問題,第三方工具崩潰了,什麼不是。

所以人們不能說它會無縫地工作,你必須測試它看看它是否工作。

現在將2.0與4.5.2混合可能會導致混亂,因爲在編寫代碼的時候您還需要考慮使用應用程序。

+0

這是一個很好的觀點。我們實際上也有使用XP的客戶。這意味着,在交付代碼時,我們還應該考慮到客戶可能會使用2.0或4.0框架並在兩者上測試我們的更改的事實。 –