请教一下各位在C#程序开发过程中如何处理兼容问题

年轻的程序员小唐 2019-11-15 12:03:25
我是菜鸡程序员,不会处理程序兼容问题
比如说这个软件在部分电脑上可以用,在其他电脑上就不行。
有时候可能是系统兼容问题XP\WIN7\WIN10系统上自带的.net版本不同,比如只有.net3.5那肯定不兼容.net4以上版本的程序
只有.net4以上版本就不会兼容.net3.5以下版本的程序
但是有时候帮其安装了对应版本的.net也无法解决问题。我一般按着提示的错误去百度,可能是缺了各种程序包什么的,有时候在都安装之后还是无法解决。那最后问题肯定还是要落在我的程序上,可是我确实也不懂咋回事啊
被客户回一句为什么别人的软件能用你的软件不能用的时候我也很绝望啊
求教各位有什么好的通用的解决兼容问题的方法和技巧,InstallShield制作安装包时把运行环境一起打包的方法技巧也行
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 HerryDong 的回复:
复制一个答案给你:建议用.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,无需再装,直接运行。


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

那个CPU设置为any是不是图中的这个呢
  • 打赏
  • 举报
回复
引用 4 楼 exception92 的回复:
在可运行的电脑上编译exe,之后使用工具分析exe文件,这个pe文件,查找这个exe头部的元数据中都引用了那些必须的dll,。net中的dll,有的也许是系统环境中的dll。其它的电脑系统中也许就没有某些dll文件,把这些缺失的dll都拷贝到输入目录运行。 至于分析pe工具,网上搜一下。

可以,我去弄个PE工具研究研究
  • 打赏
  • 举报
回复
引用 3 楼 u014480075 的回复:
基本都是环境配置问题吧,我是没有办法,基本都是见招拆招,现在客户机子乱七八糟的。

是啊我也都是看着问题然后去百度回来解决的,最好还是先把运行环境一起打包了
最怕的就是按着百度搞了还解决不掉。。。
  • 打赏
  • 举报
回复
基本都是.net 版本造成的问题吧
HerryDong 2019-11-15
  • 打赏
  • 举报
回复
复制一个答案给你:建议用.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,无需再装,直接运行。
exception92 2019-11-15
  • 打赏
  • 举报
回复
在可运行的电脑上编译exe,之后使用工具分析exe文件,这个pe文件,查找这个exe头部的元数据中都引用了那些必须的dll,。net中的dll,有的也许是系统环境中的dll。其它的电脑系统中也许就没有某些dll文件,把这些缺失的dll都拷贝到输入目录运行。 至于分析pe工具,网上搜一下。
u014480075 2019-11-15
  • 打赏
  • 举报
回复
基本都是环境配置问题吧,我是没有办法,基本都是见招拆招,现在客户机子乱七八糟的。
  • 打赏
  • 举报
回复
引用 1 楼 wilson1966 的回复:
还在用XP?
那只能用vs2005 写 code 了
写出的程序应可向上兼容

会有人用XP的,我用的2010一般都是生成的.net2.0版本,之前有一个客户是WIN7系统的居然也不能运行我的软件,给他各种修复升级安装.net和程序包都不行我也很懵逼还差点把他电脑搞坏
然后我这边也没有条件去做各个系统的试验,所以也很无奈
wilson1966 2019-11-15
  • 打赏
  • 举报
回复
还在用XP? 那只能用vs2005 写 code 了 写出的程序应可向上兼容

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧