编译.net 4.0.3程序使其支持window xp

windows xp系统所支持的最高.net framework版本是 .net 4.0.3,然而在 VS2012或更高版本的visual studio中设置该目标,编译生成exe执行程序后,该执行程序并不能在xp系统上运行,将提示“不是有效的应用程序”。

参见 MSDN相关问题

此问题有如下几个值得注意的特点:

  1. 只影响带有入口的可执行程序,动态链接库的执行不受影响;
  2. 只有4.0.3版本受到影响,基于.net 4的应用在VS2013中生成运行于xp系统并无问题;
  3. 必须指定目标CPU平台为x86之后,才能在xp运行;
  4. 对于WPF程序,指定非启动窗体的 icon 属性将引发不明原因的异常,导致程序进程直接结束。

使用VS 2010编译相同的可执行项目(winform/wpf/console),即可运行于xp系统。同时考虑以上提到的几点,即可在非win xp系统上使用VS编译.net403程序。

然而,本文并未给出导致此兼容性问题的原因,笔者猜测是由于特定编译链接过程导致的执行程序头部标记缺失,毕竟在微软产品的各新版本中都放弃了对xp的支持。

发表评论

电子邮件地址不会被公开。 必填项已用*标注


2 + 一 =