C_Sharp 板


LINE

※ 引述《banana2014 (香蕉共和国)》之铭言: : 大家好, : 我是C#初学者,最近老师教了视窗程式执行档,但是当我把编译出来的exe档放到我的 : Windows XP的系统执行时,它跳出一个错误视窗「应用程式正常初始(0xc0000135)失败。 : 请按一下[确定]终止应用程式。」,上网查了一下原来是我的电脑没有安装NET Framework : 可转散发套件,所以我就装了。但是我一直在思考两个问题: 今年是2016年 WindowsXP是2001年8月24日发布的 距今快15年 是时候升级了 : (1) 该怎样让我的程式能在没有安装NET Framework的电脑里也能执行我的视窗程式,我看 : 很多exe视窗程式都不用安装套件即可正常运行了,为什麽用Visual C#编译出来的exe视窗 : 程式就要安装额外的套件才能执行呢? 用Visual Studio所写的C#程式依赖於.NET Framework 所以一定要有.NET Framework才能 执行 : (2) 或者是说有没有一种方法可以把NET Framework包在一个压缩包(像InstallShield之类 : 的)里头,当使用者安装我的软件时就可以顺便安装NET Framework了。 : 请各位两个问题都帮我解决一下,因为我还是初学者,所以对这方面还不是很懂 : 谢谢。 关键字是 InstallShield 或 Visual Studio installer project 或 ClickOnce 这些方法都有办法在安装时一并装上.NET Framework ==== 要让自己的C#可以在大部分的环境上执行 一个可行的选择是使用系统内建就有的版本 内建版本 XP 没有 (安装光碟有附1.0 最高能安装4.0) Vista 2.0/3.0 (更新後会有3.5与4.5.2 最高安装4.6) 7 3.5 (自动更新会安装4.5.2) 8 4.5 (windows 8之後3.5要到控制台启动) 8.1 4.5.1 10 10240 4.6 10 10586 4.6.1 http://msdn.microsoft.com/en-us/library/bb822049.aspx 不建议为了相容性而只选3.5来做学习 因为3.5>4.0>4.5都是大改良 而且微软也已经不支援4.5.2以前的版本(有bug漏洞不会修的意思) https://blogs.msdn.microsoft.com/msdntaiwan /2014/10/20/net-net-3-5-sp1-4-5-1-25/ http://tinyurl.com/zy3mc2j 没有包袱的话 直接使用最新的比较好 .net各个版本可以说是独立 也可以说有向下相容 一个系统内是可以安装各种不同版本的.net的 而.net版本 CLR版本 C#版本 Visual Studio版本(C#编译器版本) 是不同的概念 http://tinyurl.com/hh24opk 你可以在vs2015中使用C#6的语法 目标.net 2.0 build出来的程式跑在只有安装.net 4.0没有3.5(只有CLR4.0没有CLR2.0)的环境 .net 1.0 1.1 是两个不同版本 1.1号称相容1.0 但这两个版本是黑历史了 Vista之後的通常不会安装 如果真遇到程式要1.X 就用下面讲的改config 使其在新版执行 .net 2.0 3.0 3.5 都是CLR 2.0 装3.5就包含2.0 3.0 3.5 .net 4.0 4.5 4.5.1 4.5.2 4.6 4.6.1 都是CLR 4.0 装最新的会包含之前的版本(不含CLR2.0) 通常会遇到问题的大部分是 3.5以前的要在win8之後上执行 这时要嘛去控制台打开3.5 或是改config 如果要使用不同版本的相容性 做法是将config内的 <supportedRuntime version="vX.0" sku=".NETFramework,Version=vX.X.X" /> 给移除 这是因为.net在选择使用哪个版本来执行的策略为: 如果config档内有设supportedRuntime 则依照supportedRuntime所设定的版本执行 有多个 则依序寻找 第一个没安装就用第二个 依此类推 没有找到 就跳错误 如果config档内没有设supportedRuntime 则使用build所使用的版本(专案属性>应用程式>目标Framework) 没有安装 就使用系统内安装的最新版本 将supportedRuntime给移除之後 好处是 只要系统有安装.net会尝试执行 不会因为没有安装特定版本就不执行 坏处是 程式可能还是会错误 这是因为使用到了新版才有的功能就会出错 像是2.0才有泛型 3.5才有LINQ 4.0的Task dynamic 旧版程式在新版系统上比较没有问题 除非有遇到有修改的部分 新版程式在旧版系统上除非完全没有用到新功能 不然就是出错 还有的限制像CLR 2.0没有办法载入CLR 4.0的组件 .net 4.5之後使用了新版本的PE格式 XP 2003 根本无法执行 等等 : 那想请问一下那些不用安装任何套件即可执行的exe视窗程式(像MadEdit、AutoStitch…) : 是用什麽编译器或软体做出来的? 微软的技术中 Visual C++ 静态连结 就算是Visual C++也一样依赖於Visual C++ runtime library 很多程式在安装时 会一并安装visual c++ redistributable packages就是这个原因 因为系统只内建到VC6的crt版本 使用新版的VC 要不使用静态连结(可以想成把lib直接跟exe绑一起) 或是用动态连结(使用系统的lib 系统必须要安装 redist) 静态连结的大概问题是 1.程式变大 2.记忆体无法共用 3.除非重新建置 不然无法更新crt 1 2以现在的电脑来说不是问题 但3. 如果crt有bug(像是安全性漏洞之类的) 静态连结的程式无法靠windows update就使用到新版 一定得重新建置 重新布署 才行 当然也可以新版VC + 动态连结系统内建crt 不过这是undocumented的作法 而且这样做 C++的支援几乎是残废(VC6等级) 或者使用上古时代的VC6或VB6(XP到win10 都有内建VB6 runtime)来写程式 不过完全不建议 今年是2016了 1998年的工具放在历史就好了 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.141.232
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1458936465.A.23A.html
1F:推 erspicu: 推认真... 03/26 14:41
2F:推 banana2014: 谢谢您,厉害!用心! 03/26 23:51







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP