C#编写的winform程序脱离.net框架

C# Winform开发教程 1.创建新的Winform工程 打开VS新建窗体应用就可以了,起个名字,设置路径 创建完毕后,会有一个Program.cs的脚本文件,这里的Main为入口函数。 2.窗体编辑 单击顶条区域,右侧弹出对应的属性栏。接下来只介绍几个常用的设置,其他各位可以自行去了解。 窗口样式 -> Icon:设置工具的icon。 窗口样式 -> MainMenuStrip:关联右键菜单(右键菜单的使用后面详解)。 设计 -> Name:本工具的脚本名(Program) ... 阅读详情

C#编写的winform程序脱离.net框架的方法不外乎以下几种,今天有空,特意做了一下测试,现在简单介绍下经验。以下所有例子,本人均亲自实验,在xp,2003,vista下都是可以运行的。

本文引用于:http://hi.baidu.com/44498/blog/item/dabd37166a11bd10962b437d.html

1, .Net Linker :中国移动的飞信就利用了它的核心。飞信是使用C#在.NET上开发的。贵,最便宜的版本要1000多美金。

2,用飞信的虚拟机来引导自己开发的.NET程序。

3,使用mono来达到脱离.NET框架的效果,可以跨平台。【支持ASP.NET,以及.NET3.5】

////////////////////////////////然后我就开始了痛苦的实践过程。

例子1:先说最简单的,使用飞信虚拟机来试验吧。

先安装"飞信2008正式版",然后打开安装目录,里面有个VMDotNet文件夹,里面就是.NET虚拟环境相关文件了,找到飞信安装目录下的"VMDotNet/v2.0.50727/FetionVM.exe"来启动运行我们的.NET WinForm程序:

【可以使用命令行来传值也可以用其他方式,都是一样的】例如:

WinExec("FetionVM.exe 我的程序.exe", SW_SHOW);     //C++

为了方便,我们可以编写一个检测.net框架版本的程序作为引导程序,如果已经安装了.net框架就不用虚拟机,如果没有安装,调用虚拟器来启动程序。【请不要使用C#或者其他托管类型的语言或者框架编写这个引导程序,否则无法启动】。

很容易吧?但是有个弊端,你的.NET程序如果要操作类似于SQL SERVER2000,2005,2008 或者是MYSQL,Oracle,DB2等数据库,那就无法用飞信的这个虚拟机实现的,所以这个飞信的虚拟机只能做简单的程序应用。还有一点大家要注意,使用飞信的虚拟机,涉及到的还有版权问题。测试一下,压缩以后文件大概是6,7M左右,还行。

例子2:使用MONO来脱离框架并且跨平台。注:测试结果显示,使用MONO启动.NET程序速度是最快的。比飞信的要快最少3倍。

首先到MONO的官方网站下载源代码或者最新版本,然后安装,我用的是最新的2.2版本。打开目录,找到两个子目录,名字分别是bin,lib ,然后复制到另外一个目录里面去【因为安装的时候默认安装在C盘的】然后把你的.net开发的程序也复制到这个目录里面去;假设这个目录名字叫做VM,那么你的这个文件夹里应该有个最少三个文件,一个是bin文件夹,一个是lib文件夹,还有一个就是你写的.net程序了。

然后可以用C++编写一个引导程序用来调用你的.NET程序;贴个简单的代码吧:

int main()
{
WinExec("bin//mono.exe 你的应用程序.exe",SW_SHOWNORMAL);
return 0;
}
当然,为了方便,你可以自己在逻辑里面判断一下,机器里安装的是.NET的哪个版本?如果版本低了,就调用MONO来执行,如果匹配,就不调用MONO了。

【这个例子只是支持简单的WINFORM和数据库访问,WEBSERVICE的,在文章末尾】

如果按照我说的一路操作,肯定是可以运行的了,但是你会发现,现在你的.NET程序是一个绿色软件,但是他所在的目录下lib,或者是bin文件夹的大小是非常恐怖的。。。有300M以上的大小,这岂不是和我们的想法冲突了?当然不是;我们来精简目录吧:

在bin目录下,保留以下文件,其他的删除即可

然后打开lib文件夹,在2.0文件夹下保留Accessibility.dll,mscorlib.dll,mscorlib.dll.mdb,然后在GAC文件夹里面保留以下文件夹:

这样,整个目录就精简的差不多了,当然,你可以根据自己的需要定制需要的各种类库。然后打包即可,以我本人机器为例,压缩后的文件是9.8M,比.NET 2.0的框架小了很多,但是比飞信的那个虚拟机还是大了一些;换个角度来看,用mono不涉及版权问题,也可以调用各种数据库,我本机测试操作的是SQL SERVER 2005数据库,一切正常。让你的.NET程序也跨平台吧!只有MONO能做到这一点。

这个帖子是本人原创,抄袭的别太过分哦,最起码也专业点,别图片都不贴就发布,

耽误别人学习,罪过啊罪过。。。

例子3:使用.Net Linker 的一个老版本来测试的

通过命令行来提取.net环境的一些类库文件,然后模拟,不知道飞信用的是哪个版本,反正我这个老版本是不太好用,要手动精简目录的。

但是唯一的好处就是兼容性比较好,而且不限制数据库的使用。这个也涉及到版权问题,就不啰嗦了。

精简后的文件大小是8.66M,一般的应用都可以满足了,呵呵。

好了,时间不早了,睡觉了。欢迎大家留言,提出各种不同的见解。

更新:2009年3月30日

抽空拿到了.Net Linker 的破解版,用了一下还是不错的,稳定性很好,兼容多种数据库。美中不足的是有了MONO的比较,用.net linker虚拟机以后,程序启动的时候速度稍微慢了一点,和飞信的启动速度一样。。。不过这也没办法,忍了。

更新:2009年4月14日 支持web service

今天看到一个朋友咨询MONO平台上调用webservice的问题;事实上,MONO是完全支持web service的     ;我这里也做个示例吧。

新建一个项目,winform的,版本是.net2.0;然后添加一个引用,引用我们准备好的web服务。

引用的url:http://www.ayandy.com/, 这个web服务的功能是天气预报那种的,包括国内外400多个主要城市。

然后,引用好了以后呢,就调用吧,我这里例子显示的是北京当天的天气。

然后运行程序:

我的机器上有.net 3.5,当然没问题,但是我们要是在其他机器上呢?

切换到虚拟机里,虚拟机是xp sp2,没有安装.NET任何版本的框架;

把程序复制到mono的目录中,运行之。。。

可以看到,没有任何问题。。。这里用的MONO版本是2.2,支持的很好。

 

本文偶尔持续更新。。。更新时间不确定。。。感谢大家的关注。。。

有问题可以联系我。。。下一篇日志《使用托管C++【c++.net】脱离.NET框架实战》

谢谢大家的关注。

2009.04.23 更新:

关于有些朋友提出,MONO到底支持多少种数据库的问题,其实MONO支持的数据库绝对比我们想象的多,几乎是很多我们都没有用过的。。。好了,我给个清单,让大家心里有数。最近上网少,资料也没怎么查,就先拿个05年的文章参考一下吧。

Mono Supported Database Access- -
                                      

Mono has many ADO.NET Data Providers to get you connected.

Providers for Open Source databases:

PostgreSQL: Npgsql is fully managed provider for PostgreSQL and is actively maintained

SQL Lite: actively maintained. Requires sqlite library.

Firebird Interbase: fully managed provider for Firebird and is actively maintained.

MySQL: use the MySQL Connector/Net from MySQL AB which is fully managed and actively maintained by MySQL AB, but it is not included with Mono. There is the ByteFX.Data.MySqlClient provider which is not actively maintained, but it is included with Mono.


Providers for commercial databases:

IBM DB2 Universal Database Requires DB2 client software

ODBC requires ODBC software which is available for Unix and Windows

Oracle requires client software including Oracle Call Interface

OLE DB Requires libgda (http://www.gnome-db.org/) System.Data.OleDb is not actively maintained plus it only works on Linux with GNOME 2.x

Microsoft SQL Server fully managed provider which is actively maintained for Microsoft SQL Server 7.0/2000/2005 databases

Sybase fully managed provider for Sybase 12.x databases and is actively maintained

Older Microsoft SQL Server and Sybase databases Not actively maintained.


Alternative to ADO.NET is GdaSharp (Gnome Data Access)

Gnome Data Access (http://www.gnome-db.org/) GdaSharp is C# bindings to GDA (GNOME Data Access) and is included with GtkSharp (http://www.mono-project.com/GtkSharp), but it requires libgda be installed. Works only on Linux with GNOME 2.x installed.

External Projects that have created ADO.NET Providers that work on Mono:

MySQL Connector/Net from MySQL AB (http://dev.mysql.com/downloads/connector/net/) is the .NET and Mono data provider for MySQL

ByteFX.Data.MySqlClient (http://sourceforge.net/projects/mysqlnet/) is a MySQL Managed data provider. ByteFX.Data is no longer actively developed, but it is included with Mono. Please use the MySQL Connector/Net provider from MySQL AB instead.

NPgsql (http://gborg.postgresql.org/project/npgsql/projdisplay.php) is a fully managed provider for PostgreSQL and is included with Mono.

Firebird (http://sourceforge.net/projects/firebird/) fully managed provider for Firebird databases and is included with Mono.

Advanced Data Provider (http://advanced-ado.sourceforge.net/) ADP, is a transparent factory for ADO.NET which loads providers dynamically.

Other Projects

DB40 (http://www.mono-project.com/DB4O) Open source object database for C#

开源推荐榜【Winform也可以跨平台运行linux和Mac,来看看实现方案】 C#桌面应用程序跨平台(windows、linux、macos)界面开发组件,基于GTK组件开发,该组件的核心优势是使用C#的原生winform表单控件窗体设计器,相同的属性方法,C#原生开发即可,无需学习。一次编译,跨平台运行。 阅读详情

相关推荐

C#脱离平台,.NET(DonNet脱离框架

<br />今天来叫大家如果用linker(连接器)提取框架的类库实现脱离平台,你可以到百度下载Linker,<br />可以到我这里下载地址:Linker_C#脱离框架_DonNet(.Net)脱离框架  点击下载<br />很简单的打开你下载的linker文件夹里面有个批处理文件打开<br />      第一步:打开<br />   图1:<br /><br /><br />   第二步:处理掉出现的错误,不能有中文的路径,图2错误的,图3对的<br />    图2<br />  <br />  <

Happiness DouDou 2883

C#程序脱离.net框架的多种方法与应用一步之遥

C#程序脱离.net框架的多种方法与应用一步之遥

WinForm程序脱离.NET框架方法

WinForm程序脱离.NET Framework的方法有以下几种: ­ ( 1 ) .Net Linker :飞信就利用了它的核心。飞信是使用C#.NET上开发的。.Net Linker比较贵,最便宜的版本要1000多美金,不过倒版的就例外了。 ­ ( 2 ) 用飞信的虚拟机来引导自己开发的.NET程序。 ­ ( 3 ) 使用MONO实现.NET框架脱离,还可实现跨平台。(开源免费,速度

u010561359的专栏 2673

C#理论 —— Windows 窗体应用WinForm

文章目录1. WinForm - Windows窗体应用程序1.1 WinForm工程创建1.2 工具箱1.3 窗体属性1.3.1 实例:创建一个新窗体1.4 窗体事件1.4.1 实例:通过窗体的不同事件改变窗体的背景颜色1.5 窗体方法1.5.1 实例:窗体方法使用1.6 消息框MessageBox1.6.1 实例:Message的应用1.7 控件 1. WinForm - Windows窗体应用程序 WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户

- 2万+

快速入门:【c#Winform开发】

一文讲解和快速入门c#winform开发!

Carson's Blog 6786

【转贴】C#编写winform程序脱离.net框架的方法

   C#程序脱离.net框架的多种方法与应用本文介绍的是C#编写winform程序脱离.net框架的方法。【也支持VB.NET和C++.NET】本文地址:http://hi.baidu.com/44498/blog/item/dabd37166a11bd10962b437d.html转载请说明。------------------------------很多朋友会问,为何选择C#   ?其实原因很简单,因为它具有其他任何语言都不具备的生产力。软件工程的发展,主要目的也就是提高生产力,这个核心不变,我们的

小小猪的专栏 1437

C#程序脱离.net框架的多种方法与应用

本文介绍的是C#编写winform程序脱离.net框架的方法。【也支持VB.NET和C++.NET】 本文地址:http://hi.baidu.com/44498/blog/item/dabd37166a11bd10962b437d.html 转载请说明。 ------------------------------ 很多朋友会问,为何选择C# ?其实原...

aiyinzhi8916的博客 289

C# 创建Windows窗体应用程序WinForm程序

1)WinForm?Windows窗体应用程序 WinForm 是 Windows Form 的简称,是基于 .NETFramework 平台的客户端(PC软件)开发技术,一般使用C#编程。 C# WinForm 编程需要创建「Windows窗体应用程序」项目。 .NET 提供了大量 Windows 风格的控件和事件,我们...

zs1342084776的博客 4万+

C# 编写 WinForm 窗体应用程序(第一期)

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。

生产队的刘同学 8297

C#程序不用安装.NET环境运行(让C#

Xenocode  http://www.cnblogs.com/hsapphire/archive/2009/12/28/1634327.html 把exe 打包 .net 框架   2009-08-27 09:56 C#程序不用安装.NET环境运行(让C#程序脱离.net框架)   通常情况下,运行C#程序,需要系统安装.NET 框架,但是如果为了运行一个100K的C#程序,而安装100M

3553

C#+Winform开发窗体程序

学习笔记 第一章:winform基础 一、概述 1、Windows Form(简称WinForm) 是微软.NET平台下用于开发"图形界面"应用程序的组件。 2、C/S架构 客户机(Client)/服务器(Server),是软件系统体系结构。 通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统...

weixin_30667301的博客 3526

C# WinForm记事本程序实战教程

C#(读作“看”),是由微软公司设计开发的一种面向对象的、类型安全的编程语言。自从2000年推出以来,它一直是.NET平台上的首选语言。C#设计时融入了C++的强大和Java的简易性,旨在帮助开发者通过使用.NET框架快速创建类型安全的、面向对象的应用程序WinForm.NET Framework中的一个用于创建Windows桌面应用程序的用户界面框架。它从.NET的1.0版本开始推出,并随着后续版本不断更新,逐渐演化成为开发Windows应用程序的主流工具之一。

weixin_32480007的博客 1121

GTK#框架C# Winform程序跨平台运行

在软件开发领域,跨平台能力是一个重要的考量因素。对于C#开发者来说,Winform是构建桌面应用的强大工具,但原生Winform只支持Windows平台。幸运的是,GTK#框架的出现让C# Winform程序跨平台运行成为可能。本文将详细介绍如何使用GTK#框架C# Winform程序在Windows、Linux和macOS上运行,并提供实例代码展示。1. GTK#框架简介GTK#是基于GTK+...

zls365365的博客 2152

C# WinForm程序开发实战教程

C#(发音为“看”)是一种简单、现代、面向对象和类型的编程语言,由微软开发,作为.NET框架的一部分。它由Anders Hejlsberg领导的团队设计,并首次在2002年发布,随着.NET平台的演进,C#也不断进化。C#的设计哲学强调类型安全、模块化和版本兼容性,它被广泛用于开发Windows桌面应用程序、服务器端软件、游戏、Web应用程序、云服务以及移动应用程序。在C#中,几乎一切都是对象,它支持多种编程范式,包括过程化、面向对象以及泛型编程。

weixin_42163404的博客 1413
上一篇: 深入理解com+和mts,dcom,msmq,remoting
下一篇: DoNet数据持久层框架的集大成者--Nhibernate收藏
enginetanmary
博客等级 码龄19年 34粉丝 22原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值