基于.net框架3.5与4.0开发的程序无法兼容

win7自带3.5,可运行3.5,3.0,2.0版本程序集的程序
win8自带4.0,默认未安装3.5.1,而4.0却不能向下兼容。

如何才能让一个程序同时运行在普通用户的win7和win8电脑上?

一个几百K的小工具打包附带一个几百M的安装包显然不合理,win8在线安装由于某些众所周知的原因无法稳定的解决问题

阅读 10k
2 个回答

在程序的同一个目录下放置一个<程序名字>.exe.config
内容如下

<configuration>
  <startup>
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

该config文件将被.NET Runtime读取并尝试向下兼容运行

当代码中没有包含3.5到4.0版本的升级中做了变更的函数,将可以完美兼容

1.程序提供两份二进制,一份是平台为.NET 3.5,一份为 .NET 4.0,然后写个Launcher脚本或者C++的程序,判断操作系统或者.NET平台选择运行对应的程序。

2.程序以源码发布打包发布,运行安装程序,释放PowerShell脚本 检测安装了什么版本的.NET,然后,脚本自动化编译C#代码,安装。一般在C:\Windows\Microsoft.NET目录下有对应版本的csc.exe。和msbuild。

3.换C或者C++,静态编译,只以来系统API.