背景

  • 编程环境:Win10家庭中文版
  • IDE:Visual Studio2017
  • 运行环境 
  • Win10下:正常运行
  • Xp sp3下:报错,无法打开

解决办法

通常情况下,程序无法在低版本计算机上运行的原因是程序是以x64方式生成的,而低版本计算机受操作系统和硬件的限制,仅支持x86的运行方式,即32位。所以要做的第一步就是在IDE中将生成程序的平台目标改为x86,达到更好的兼容性 

打开解决方案后,双击解决方案管理器中的程序文件,直到Visual Studio中间出现了程序编辑部分(即中间部分不再是一片空白),再依次点菜单栏中的 项目>(程序名称)属性 ,会打开这样一个页面: 

XP 不支持JAVA 软件不支持xp系统_解决方案

 

点击 生成,在平台目标里选择x86。 

至此,生成平台目标已经设置完毕,有的读者可注意到原本的平台目标设定的是Any CPU,且下方的“首选32位”复选框也是选上的,按理来说原先的设定已经考虑了对32位系统的兼容,但笔者未做测试,因此在这里手动设置为以32位系统为目标,64位系统依旧可以运行32位的程序。笔者在遇到这个问题时也在网上寻求解决办法,大多数回答的是设置成x86就好了,但经过实际测试,设置完毕之后仍然无法在xp系统上运行。此时便要将注意点放到目标框架上去。 

目标框架查看如图所示: 

XP 不支持JAVA 软件不支持xp系统_解决方案_02

 

笔者使用的Win10系统,如今主流的高版本操作系统基本上都是.net4.0以上的框架,如图所示,笔者现在的目标框架设定为.net4.5.2,这意味着系统中安装的.net框架比这个版本低的话就很有可能无法正常运行程序。 

xp等旧式操作系统如果没有安装适合本身的最新.net框架的话,便会导致运行不正常。因此我们需要把目标框架版本调低,以达到更好的兼容性需求。 

点开列表框,笔者直接粗暴的把目标框架改成了.NET Framework 2.0,此时再启动生成,会发现无法生成解决方案,出现报错。原来是在新建项目时visual studio自动配置的using System.Linq;和using System.Threading.Tasks;并不受到旧版本的框架支持。好在笔者编写的程序中没有使用到相关内容,因此只要简单的注释掉就行啦。注释掉之后虽然有可能还有警告,但没有错误了就可以暂时不理会它。 

再点击生成按钮,程序成功运行。

通过上面的设置,再把程序在xp系统上打开,成功运行。