我是菜鸡程序员,不会处理程序兼容问题
比如说这个软件在部分电脑上可以用,在其他电脑上就不行。
有时候可能是系统兼容问题XP\WIN7\WIN10系统上自带的.net版本不同,比如只有.net3.5那肯定不兼容.net4以上版本的程序
只有.net4以上版本就不会兼容.net3.5以下版本的程序
但是有时候帮其安装了对应版本的.net也无法解决问题。我一般按着提示的错误去百度,可能是缺了各种程序包什么的,有时候在都安装之后还是无法解决。那最后问题肯定还是要落在我的程序上,可是我确实也不懂咋回事啊
被客户回一句为什么别人的软件能用你的软件不能用的时候我也很绝望啊
求教各位有什么好的通用的解决兼容问题的方法和技巧,InstallShield制作安装包时把运行环境一起打包的方法技巧也行

解决方案 »

  1.   

    还在用XP?
    那只能用vs2005 写 code 了
    写出的程序应可向上兼容
      

  2.   

    会有人用XP的,我用的2010一般都是生成的.net2.0版本,之前有一个客户是WIN7系统的居然也不能运行我的软件,给他各种修复升级安装.net和程序包都不行我也很懵逼还差点把他电脑搞坏
    然后我这边也没有条件去做各个系统的试验,所以也很无奈
      

  3.   

    在可运行的电脑上编译exe,之后使用工具分析exe文件,这个pe文件,查找这个exe头部的元数据中都引用了那些必须的dll,。net中的dll,有的也许是系统环境中的dll。其它的电脑系统中也许就没有某些dll文件,把这些缺失的dll都拷贝到输入目录运行。 至于分析pe工具,网上搜一下。
      

  4.   

    复制一个答案给你:建议用.net framework 3.5作为生成目标,CPU设置为any来开发,然后在app.config文件里加上<?xml version="1.0"?>
    <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
    </configuration>这样开发出来的程序既可以在.net 3.5上面运行,也可以在.net 4.x下运行。xp系统本身不带任何.net,用户装一个3.5或4.0后可运行。win7自带3.5,无需再装,直接运行。win8自带4.5,无需再装,直接运行。win8.1自带4.5.1,无需再装,直接运行。win10自带4.6,无需再装,直接运行。
      

  5.   

    基本都是.net 版本造成的问题吧
      

  6.   


    能否解释一下这一段代码的含义和这样做的原理呢,就是为啥3.5的生成就能在3和4下运行呢。4不是不兼容3吗
    系统带的哪些.net版本这个我倒是有了解。那个CPU设置为any是不是图中的这个呢