.net程序部署(mono方式)
某一次 我同事用了这个词 ,说这样才显得够专业 擦。把某某项目 部署到服务器上 。擦 不就是拷个文件过去运行么。月亮 还是绵羊 我搞不清楚了 咱英文不好,绵羊叫的声音?。你就叫我山寨程序猿 随意 一直就这风格。
mono 是一种基于.NET Framework的开放源代码平台。
安装文件在此地址下载
http://www.go-mono.com/mono-downloads/download.html
经证实 安装过后直接 把 moon.exe 和相关目录 直接 拷走 然后运行也是可以的,所谓的绿色软件。mono本身就是一个开放的.NET Framework平台 。就是说你可以在没安装.NET Framework框架的电脑上运行 基于.NET Framework 的程序,并且不用安装 放在U盘里直接就可以运行 只要mono放在一起。然后你引用了哪些类库 就拷贝对应目录的 dll文件 也要放在一起,说白了就是moon版本的 库文件。看下我的 程序里只用到了基本类库 然后就是winform 和gdi ,然后我只拷了这些文件过来 总共4兆的样子lib\mono\gac:
mono运行.net程序的方式是: mono.exe 加上.net程序文件名。通过以上你就明白了 ,把只要编写一个批处理命令文件 就ok了。
双击批处理文件:
看到没左上角的默认图标变成mono的了 。程序运行效果跟原来的一样。换其他电脑试试呢,刚刚不是说过吗 整个文件夹拷到U盘里 在其他电脑可以直接运行。如果在没安装.net框架的电脑上你发现不行 ,有可能出现这样的错误:
根本原因:.net的exe 是托管代码 运行时首先他要寻找mscoree.dll 由此来匹配操作系统已经安装了的.netframework版本。Mscoree.dll 存在于system32 目录下。
关于mscoree.dll深究详情请参考此文 .NET中的幕后英雄:MSCOREE.DLL :
http://blog.csdn.net/atfield/article/details/1750890
明白了噻 ,你可以把你系统的Mscoree.dll 文件也拷到U盘目录下,然后再写个批处理文件,判断没有同名文件 则从U盘拷贝一份到system32 目录。由此 看你自己需求 ,你可以把批处理 写成一个安装脚本 就像 tomcat 那样 ,这些都是可以做到的。
还有一点 通过批处理运行始终有个命令行窗口 很不爽。C#里你知道有个什么 progress 可以调用外部进程 通过参数的方式 ,其实也就跟批处理异曲同工,并且C++里也有同样的东西,这样就可去除命令行窗口。我们编写一段简单的C++代码 把.net程序作为参数 传给moon运行,原理都讲得相当明了了 。这里我就不贴图了 ,经我测试 是行得通的。
接下来我们将 介绍setupFactory的使用。
.net程序部署(setupFactory方式)