C#如何生成本地化的非托管代码(不再依赖CLR的应用程序)高人请指教,谢谢!

青蛙王子 2005-12-09 05:15:24
C#的Win32应用程序,发布Release版本后
希望能得到标准Win32应用程序,不依赖.Net Framework的支持,



不知道可不可以?
谢谢大家!
...全文
2858 116 打赏 收藏 转发到动态 举报
写回复
用AI写文章
116 条回复
切换为时间正序
请发表友善的回复…
发表回复
salecn 2010-06-22
  • 打赏
  • 举报
回复
来学习学习,先感谢前辈了!
清风道禅 2010-06-22
  • 打赏
  • 举报
回复
现在暂时.NET没集成到系统里去··你闹得慌·等WIN7普及了·什么问题就解决了·
doubleu2005 2010-06-22
  • 打赏
  • 举报
回复
.net的所有程序都要先编译为MSIL,再用JIT即使编译,因此从根本上不能脱离framework,还是用C++吧
nolande 2010-06-22
  • 打赏
  • 举报
回复
偶是新手,我来看看,于是被弄晕了
mck477 2010-06-22
  • 打赏
  • 举报
回复
虽然我只是新手,不过看到上面一系列的回答,我只想说一句,事实胜于雄辩,
你认为做的出来,而别人认为做不出来,那你就做出来来证明是可以做出来的,
不然就举出个真实的例子出来来证明,这样才能让别人信服
leon9090 2010-06-21
  • 打赏
  • 举报
回复
学习,学习。
zcfzxh1 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 leiwenbin 的回复:]
管它什么 .net frame work, JTT, CLR, 保护模式,实模式,虚拟机... 等等概念, 都是软件嘛, 最终都变成0,1 嘛, 即然可以装操作系统, 为什么不能装 虚拟机,.net frk?, 也许有一天, 在 .net frmawwork 上还会再加一个层, 这次不是为了要 '跨平台 ', ……
[/Quote]

你说的我完全同意,但问题是现在很多机器上没有装.net。而90%以上的机器装的windows,而windows100%带windows API。你的设想需等到90%以上机器都装.net就不存在问题了。请问我要用c#(主要是看到C#语法简单)写一个能在所有windows机器上运行的程序该怎么办。
gxlam 2006-04-15
  • 打赏
  • 举报
回复
to coolksj(Jason.NET(请看,问题的背后是什么))
XenoCode 打包后的执行文件比Thinstall打包后的执行文件性能要好。非常期待你的Framework Linker 早日发布!
coolksj 2006-04-14
  • 打赏
  • 举报
回复
我做个总结吧。

首先,.NET 目前运行必须要 Framework 的支持。

第二,MS 决对可以花大精力将 Framework 本地化,并使C#或VB.net写出来的东西本地化,不过必须牺牲一些。NET的特性。但从目前战策层看,这种事情几乎不可能发生

第三,Framework 不一定非要安装。Dotnet 让我非常苦恼一点的就是必须要在安装了 Framework 的机器上运行,但这样,我写的程序copy到 U盘上,就不能随意运行了。但事实上,已经早有工具可以将 Framework 和 Dotnet 程序打包在一起,使其可以在不需要 Framework 环境的机器上也可以运行

这样的工具有:Thinstall , Remosoft links
而我也正在开发这样的工具,做为我 MaxtoCode 的一种辅助工具免费提供给大家使用。
我命名它为 Framework Linker ,核心问题基本解决,不过近来较忙,所以暂近了开发。
可以关注官方网站:Http://www.maxtocode.com.cn

基本上,如果要想做一个小的应用程序,如果会其它的非中间语言,建议不要使用 Dotnet。不过如果你没有选择(技术上,后期维护上,UI上),那么就接受以上的事实吧。
Samen168 2006-04-14
  • 打赏
  • 举报
回复
呵呵,楼上的说的是
tiaoci 2006-04-14
  • 打赏
  • 举报
回复
考,这帖子怎么还在啊?

我就没见过 zhouhongyun(春天的十七个瞬间) 这么积极歪歪的了

首先这个问题的答案是“不能”脱离 .Net Framework

但是你可以找个工具把.Net Framework的东西剥离出来和你成程序打成一个包

这样用户就不需要安装.NET, 但是这个对于MS来说没有任何的利益

而且还会导致.NET失去原本的意义,所以MS不会这么做

而且就算你剥离出来后,因为.NET运行本身会需要一堆的后台支持

所以剥离出的文件还是非常大,可能也有个10几M,和安装没有区别

另外一个办法就是你可以使用Mono,其中自带了一个Mini版本

只需要三个dll一个exe,加上你的一个程序就可以跑了,

压缩后不到一张小盘的容量,应当说非常Mini了,

如果你做个人软件的分发,那时相当好的

(你甚至可以继续把不需要的东西剥离,因为存在源代码)

但是我们为什么用.NET?还不是因为强大的底层功能支持,

如果所有的功能都没有了,没有了xml,没有了数据库访问

没有了网络访问的能力,那还用什么.NET?

所以个人觉得没有必要刻意去精简.NET的底层支持库,

装就装吧,Windows都装了,Office都装了,还在乎20几M的.NET?

强烈建议斑竹把这个答案加入FAQ :)
wjlsmail 2006-04-14
  • 打赏
  • 举报
回复
只要被托管就需要 Framework 吧

跟随微软,享受便利的同时必然丧失对底层的控制

wcmj 2006-04-14
  • 打赏
  • 举报
回复
好贴!

我只问一句,要是不要fm那何必要用C#来写,我用C#就图方便!没了运行时C#还玩什么
cdonsun 2005-12-16
  • 打赏
  • 举报
回复
为了平息这里的战火,我专门作了一个圣诞贺卡
各位消消火

圣诞快乐!

http://www.aoch.com/dl/XGame_Release.rar
emp 2005-12-16
  • 打赏
  • 举报
回复
内核全部用vb是不可能的事情
cdonsun 2005-12-16
  • 打赏
  • 举报
回复
关于VB写windows核心的问题

如果说是操作系统的核心不要说VB,就连VC也占不到边。如果说使用VB写一些OS之上的Windows的核心组件是完全可能的,比如Terminal Services等服务组建算不算是win32核心服务组建呢?
chaircat 2005-12-16
  • 打赏
  • 举报
回复
讨论了那么多...我也来两句...
在调试C#程序的时候不是有个反汇编的选项吗?这可是真正的汇编代码,不是IL,也就是说,C#的代码被编译成汇编代码进而编译成本机代码是有可能的,但是别忘了C#程序靠什么工作?简单的Hello world也要System.Writeln()函数支持,即是说,不管怎样C#程序都是要拖上一个庞大的.NET类库的,即使你的程序完全用Windows API(P/Invoke)来写,也要拖上P/Invoke的命名空间(忘记叫什么了:-P)
所以就算C#可以编译成本机代码,成本也太大了(还要编译整个类库),而且类似的类库在VC++里早就有了,就是MFC,同样强大而不失方便~~~
qw_zr 2005-12-16
  • 打赏
  • 举报
回复
很热闹,我也来看看。
cdonsun 2005-12-16
  • 打赏
  • 举报
回复
讨论技术没有什么错的
最不喜欢有人带有侮辱性的言论
关于技术或是学术,每个人都有盲点,不可能面面俱到
可能我问的这个问题是一个引发争议的噱头

希望大家不要互相攻击,贬低别人的同时你也在贬低自己

谢谢
cdonsun 2005-12-16
  • 打赏
  • 举报
回复
各位不准骂人或带有侮辱性的称谓,我鄙视这样的人。


关于你问的这个问题我估计你来我徒弟都做不了。
引用编译原理中的一段给你说明问题吧,
程序分配内存分为三种:
1全局静态内存,包括全局变量,静态变量,常量等,编译时确定长度,退出后系统回收
2栈内存,包括局部变量,形式参数等,运行时确定长度,离开作用域后栈指针复原自动释放
3堆内存,包括对象,通过new操作符申请的散片内存空间,由操作系统分配,无人监管,
无限制使用,执行释放操作有操作系统完成,性能比较低。

我们所说的GC回收的是第3种内存,因为以上两种不用回收,属于不可变资源,编译器可以控制这
部分资源。首先堆内存不受编译器监控,因为是动态的,加之操作系统只有在程序退出时才能强制回收这个程序所引用的所有内存执行释放操作,在程序运行时是不可以知道内存的引用情况的,所以GC不可能托付给OS。

我不相信你是C/C++程序员,最起码的知识都这么含糊,更难以相信你是驱动程序的开发人员告诉你,既然对内存是OS分配的,那么OS在内存空间的管理上通过一个类似于FAT的一个内存分配表来
实现的(实际中他的效率比FAT高的多,机制也不同,但是原理是一样的)当你new了一段空间时,OS分配连续内存空间(当然只是寻址空间上的连续)会给你一个指针指向这个空间的首地址,而OS通过这个映射表确定一分配空间地址范围,当执行free时OS清除这个表项,空间自然变成可分配的了。
csdn发不了图片,不然给你画个图
加载更多回复(96)

111,119

社区成员

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

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

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