Windows 7,Windows 8.1和Windows 10之间的通用.Net Framework

问题描述

我正在开发C#Windows窗体应用程序。这是一个“ Hello World”应用程序,不需要任何特殊的库,因此我不强制使用任何特殊的.Net Framework版本。但是对我来说最重要的是,无需安装或激活.Net Framework,就可以在所有Windows版本上运行该应用程序。我想在Windows 10,Windows 8.1和Windows 7上运行此应用程序。 在此类Windows上是否有任何常见的预安装.Net框架版本?例如,肯定已在Windows 10上预安装了.Net Framework 4.6,但未在Windows 7上预安装。或者,在Windows 7上预安装了.Net Framework 3.5,但在Windows 10上未预安装。我的应用程序使用.Net Framework 4.5

解决方法

AFAIK您有两个选择。两者都有问题。

选项1

This article指出.NET Framework 4.5和更高版本与所有以前的版本都向后兼容,但是有一个问题:

实际上,.NET Framework中似乎无关紧要的更改和编程技术的更改可能会破坏这种兼容性。例如,.NET Framework 4.5中的性能改进可以暴露早期版本中没有出现的竞争条件。同样,使用到.NET Framework程序集的硬编码路径,与.NET Framework的特定版本进行相等性比较以及通过使用反射来获取私有字段的值也不是向后兼容的做法。此外,每个版本的.NET Framework均包含错误修复和与安全相关的更改,这些更改可能会影响某些应用程序和组件的兼容性。

杂乱的东西。

如果您选择这种方法,我建议您在要安装到的所有Windows(主要-7、8、8.1、10)版本的全新安装上测试应用程序。您必须为每个发行版执行此操作,并确保手动进行测试所有功能。如果您要做的不仅仅是尝试“ Hello World”应用程序,我不建议您使用这种方法。

选项2

从3.0版开始,Windows窗体已移植到.NET Core,但是Windows窗体设计器不是fully implemented yet

使用.NET Core 3.x,您可以部署一个自包含的应用程序as described here,该应用程序可以在所有Windows版本上运行。