约束
最近有一个winform项目,要求:
(1)程序能够运行在winxp, win7, win8, win10中
(2)安装尽可能简单,尽量不要安装.net framework。即使要安装也要尽可以地小。
为了达成这些要求的,考虑以下因素:
(1)操作系统自带的.net framework版本
以下是各个windows版本自带的.net framework:
windows版本 |
.net framework版本 |
winxp |
无 |
win7 |
.net 3.5(包含.net3.0 .net2.0) |
win8 |
.net 4.5 |
win10 |
.net 4.5 |
(2)各种操作系统的使用率
以下是2016-2017年百度统计中的操作系统占比
可以看到win7占有率最高,其次是winxp。
综合以上两上因素,决定程序的目标框架选择.net 2.0。这样一来,只有winxp需要安装.net framework 2.0,且.net framework 2.0仅20M。
问题
本来以为程序应当可以在各个操作系统上正常运行的。
但是在测试的时候,发现在win8和win10下会出现以下错误:
选择在线安装的话,速度慢得无法接受;
离线采用添加应用程序组件安装的话,需要系统光盘,很麻烦,用户无法接受;
离线安装dotnetfx2.0.exe或者dotnetfx35.exe也会出现上图的提示。
解决方法
在查看了msdn上的文档之后,找到了解决方法。添加一个app.config文件,加入以下配置:
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <configuration> 4 5 <startup> 6 7 <supportedRuntime version="v4.0"/> 8 9 <supportedRuntime version="v2.0.50727"/> 10 11 </startup> 12 13 </configuration>
配置的意思是:当发现.net4.x时,使用.net4.x,当没有.net4.x的时候,使用.net2.0
参考资料
How to: Configure an App to Support .NET Framework 4 or 4.5