admin管理员组

文章数量:1531660

如今多数电脑已经用上了Win7以及更高版本的操作系统,但在编写实用程序时,为了让程序能够在更多的计算机上顺利运行,还是要充分考虑兼容性的需求。比如仍有人“顽固地”使用早已被微软抛弃的XP系统。本文就是笔者分享的解决C#编写的程序无法在xp上运行的一个办法。

背景

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

解决办法

通常情况下,程序无法在低版本计算机上运行的原因是程序是以x64方式生成的,而低版本计算机受操作系统和硬件的限制,仅支持x86的运行方式,即32位。所以要做的第一步就是在IDE中将生成程序的平台目标改为x86,达到更好的兼容性
打开解决方案后,双击解决方案管理器中的程序文件,直到Visual Studio中间出现了程序编辑部分(即中间部分不再是一片空白),再依次点菜单栏中的 项目>(程序名称)属性 ,会打开这样一个页面:

点击 生成,在平台目标里选择x86。
至此,生成平台目标已经设置完毕,有的读者可注意到原本的平台目标设定的是Any CPU,且下方的“首选32位”复选框也是选上的,按理来说原先的设定已经考虑了对32位系统的兼容,但笔者未做测试,因此在这里手动设置为以32位系统为目标,64位系统依旧可以运行32位的程序。

笔者在遇到这个问题时也在网上寻求解决办法,大多数回答的是设置成x86就好了,但经过实际测试,设置完毕之后仍然无法在xp系统上运行。此时便要将注意点放到目标框架上去。
目标框架查看如图所示:

笔者使用的Win10系统,如今主流的高版本操作系统基本上都是4.0以上的框架,如图所示,笔者现在的目标框架设定为4.5.2,这意味着系统中安装的框架比这个版本低的话就很有可能无法正常运行程序。
xp等旧式操作系统如果没有安装适合本身的最新框架的话,便会导致运行不正常。因此我们需要把目标框架版本调低,以达到更好的兼容性需求。
点开列表框,笔者直接粗暴的把目标框架改成了.NET Framework 2.0,此时再启动生成,会发现无法生成解决方案,出现报错。原来是在新建项目时visual studio自动配置的using System.Linq;和using System.Threading.Tasks;并不受到旧版本的框架支持。好在笔者编写的程序中没有使用到相关内容,因此只要简单的注释掉就行啦。注释掉之后虽然有可能还有警告,但没有错误了就可以暂时不理会它。
再点击生成按钮,程序成功运行。

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

本文标签: 程序系统XP