C语言MONO 怎么样打包 .NET程序独立运转(winform篇)

.NET程序独立运转是指运行.NET的微处理器上,不需要安装.NET框架。

.NET程序集“独立运行”并非真的的单身,它是运行在mono运行时基础之上的。由于那个运行时可以独自存在,所以,我们不需要在对象机上安装.NET框架。

C语言 1

 

 

如上图:

 

一,嵌入或未嵌入.NET程序集的用C/C++语言写的主程序,那些主程序负责对mono运行时举办操作。同时还可配合.NET完成其它的天职(比如提供函数供.NET使用);

 

二,mono的.NET运行时,这是一个动态库文件(mono同时提供了静态库),是.NET程序集运行的首要条件。

 

三,MONO运行时的部署文件或文件夹(并不一定需要)。

 

四,外部的程序集并未内置到C程序中的其它的相关.NET程序集。

“独立运行”的长河是:

C语言通过mono提供的周转时api,调用mono运行时有关函数,通过mono运行时加载并运行.NET程序。

 

即:

C语言程序(your.exe)
–à mono的.NET运行时(libmonosgen-2.0.dll) –à .NET程序集

 

libmonosgen-2.0.dll,即是.NET程序集的运行条件,也是.NET程序集与C程序之间数据交换、函数互调的大桥。

好了,有了上述的理论知识,下面大家就先河履行一下吧

 

1.运用Xbuid命令编译

C语言 2

 

2.把编译后的net 运行文件 写入到一个 char[]变量中,并记下这么些程序集的名称,大小

mkpack H:\Csharp\Mono\Test\TestBuild\TestBuild\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe

会生成3个文件

C语言 3

data.c 是.NET程序集的二进制内容

data_.c 是为着文件用户调用的对准data.c的函数和变量

data.h  是data_.c的头文件,是用户c源码必须的。

 

3.将编译data.c编译为目的文件data.o

gcc -c -o data.o data.c

 

4.将编译data_.c编译为对象文件data_.o

gcc -c -o data_.o data_.c -IC:/mono-3.2.3/include/mono-2.0

 

5.将data.o和data_.o 合成为一个单纯的静态库:data.a

ar rcs data.a data_.o data.o

 

6.编译test.c和连接data.a,生成 test.exe

gcc -o output\test.exe test.c data.a %GCC_OPT% -lmonosgen-2.0

 

末尾的收获如下

C语言 4

 

winform 最基本的 lib 有以下多少个,添加到lib\mono\gac目录下。

C语言 5

 

运行试试,没有问题

C语言 6

 

那么最关切的事体来了。

这么些文件打包了mono的.net 运行时,size有多大吗?

C语言 7

 

缩减一下

C语言 8

 

相比较传统的打包.net 运行时 这应当是一个不行惬意的尝试吗,结束!

 

C语言 9

编译后的顺序:C语言 10

 

 

假设我们觉得有亟待,下篇著作我会写什么的部署 打包环境。