簡體   English   中英

僅在 Windows 上:net5.0-windows(或 net6.0-windows)是否允許我在 .Net 5(或 .Net 6)中重新編譯 .Net 框架?

[英]On Windows only: does net5.0-windows (or net6.0-windows) allow me to recompile .Net framework in .Net 5 ( or .Net 6)?

我有 .Net 框架應用程序,旨在僅在 Windows 上運行,現在和永遠。

我正在考慮將它們升級到 .Net 5 或 .Net 6,並將它們定位到net5.0-windows (或net6.0-windows )。 MS 網站它說

net5.0-windows 將用於公開特定於 Windows 的功能,包括 Windows 窗體、WPF 和 WinRT API。

這是否意味着我的.Net框架應用程序可以在.Net 6中重新編譯,只要我指定net-windows目標並且csproject升級和編譯成功,程序就可以運行 我只是想讓它們現在和始終在 Windows 上運行

我的應用程序還使用了大量 .Net 框架 2.0/3.5/4.6 dll(主要涉及 OpenGL 和其他圖形內容),我只能假設它們沒有通向 .Net 5 或 .Net 6 的通用端口,並且即使對我來說,源代碼也不再可用(它們來自封閉源代碼的第三方供應商)。

這是否意味着我的 .Net 框架應用程序可以在 .Net 6 中重新編譯,

是的

該程序將正常工作?

很可能會,但應該做一個完整的回歸測試來驗證。

我的應用程序也消耗了很多 .Net framework 2.0/3.5/4.6 dll

如果您無法遷移到 .Net 4.8,那么您能夠遷移到 .Net 核心的可能性就很小。

(他們大多與 OpenGL 和其他圖形相關),我只能假設沒有到 .Net 5 或 .Net 6 的通用端口

每一個都必須根據具體情況進行處理; 您可能剛剛真正回答了您自己的問題。 說晚安格蕾絲...


更好地為您服務的是創建一個 docker 容器,它將為這些應用程序的舊版本提供服務,這些應用程序具有當前可用的框架的目標版本。

不幸的是,您的問題沒有明確的答案,因為它完全取決於(不是雙關語)您的依賴項是什么。

.NET 5 旨在成為經典 .NET Framework 和 .NET Core 的統一,並且在許多情況下它會正常工作

從經驗上講,在很多情況下,在新框架中創建一個干凈的項目更容易,從舊項目中復制所有現有文件,然后重新添加 NuGet 和項目引用。 我已經成功地為控制台應用程序、測試項目,甚至是 WinForms 應用程序 15-20 項目依賴項到 .NET 4.8 項目,它已經開箱即用 - 盡管有關於 .NET 4.8 依賴項的編譯器警告。

但是,我也遇到了 4.8 和 5.0 之間至少有一個缺失/更改的 API - BeginInvoke 此處的博客文章更詳細地描述了它。 有時,NuGet 版本也存在問題。

最接近在線最終列表的是MS Doc“影響兼容性的更改” ,特別是從 .NET Framework 遷移到 .NET Core 的重大更改部分。 我不確定這是一個更好的“來自信譽良好的來源的答案”。

至於您的 .NET 2.0 / 3.5 / 4.6 dll,我認為不嘗試就不會知道。 有太多的未知數,尤其是因為它們是 3rd 方 dll。 如果我不得不猜測至少有一個不起作用,那么您是否可以找到更新版本或替代庫將包含多少工作將無法確定

至於net5.0-windows ,它基本上是一個軟糖。 雖然 .NET 5.0 以后的所有目標都是統一和跨平台的,但他們無法及時完成所有工作。 我讀了一篇關於它的 blob 帖子,我現在找不到,但基本上 WinForms 尤其與一些底層的 Windows API 密切相關。 也許.NET 7.0?

暫無
暫無

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

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