繁体   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