最近遇到一个问题,公司内部平台发布了一个.net的https webservices,由于项目使用的是Java,在进行安全验证时,非常麻烦,所以就采取了一个简单的措施,就是用c#做了一个console程序,打包成exe,然后由java的runtime来执行本地命令的方式做,事情就简单了很多。
可在部署时遇到问题了,c#进行程序运行时需要.net framework框架,在一些电脑上,虽然最终部署的都是windows机器,可是还是存在部分环境未安装.net framework的情况,甚至部分机器安装了.net framework,但是版本太低,还是无法运行。但是每台机器单独再安装环境又太麻烦了。
于是就在想,C#程序有没有可以像jar包一样,通过工具把jre一起打包成单独的exe,可在未安装jre或jdk的机器上也能正常运行的呢?
咨询了一下公司一些C#程序员,得到的答案都是不可行,C#需要.net framework的CLR来执行C#代码,那既然CLR就类似于java的JVM,那道理应该是一样的啊。于是再Google了一下,发现了一篇帖子“编程:Mono让C#程序脱离.net Framework运行”,虽然现在还没有尝试是否能够成功,现记录一下。有空自己试验一下。
让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行)
http://blog.csdn.net/haiyabtx/article/details/7996895
原帖地址:http://ichemistry.blog.163.com/blog/static/1719971272011310105039927/
1、mono项目简介
Mono是一个由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器、一个CLR的运行时和一组类库,并实现了 ADO.NET和ASP.NET,能够使得开发人员在Linux用C#开发程序。)主持的项目。该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Net 工具,包括C #编译器和共同语言(CL 即 Common Language)执行平台。与微软的.Net不同, Mono项目不仅可以运行于Windows系统内,还可以运行于Linux、 FreeBSD、 Unix、 Mac OS X和Solaris。
最新2.8版主要的新特性:完整支持C# 4.0语言(Mono 2.6提供了初步支持);新的更高效的垃圾收集实现;整合了微软发布的多个开源.NET库——包括Dynamic Language Runtime和Managed Extensibility Framework;向前时间(AOT)编译支持x86,AOT编译能在编译时将.NET中间媒介代码直接转换为本地代码;另一个引入注目的特性是支持LLVM。
现在专门为Android提供的MONO也推出了,允许开发者在Android和Windows Mobile以及iOS所有平台共享代码,这将为开发者们节省更多的开发时间,让他们为游戏的移植不再忧心,而是更能关注游戏的品质了。
Android版Mono包括:
* Core Mono Runtime (核心Mono运行时)
* Bindings for native Android APIs (原生Android应用程序接口绑定)
* Visual Studio 2010 plugin (Visual Studio 2010 插件)
* An SDK containing relevant tools to build, debug and deploy your applications (包含有建立、调试及部署应用相关工具的SDK)
项目地址:http://www.mono-project.com/
2、让C#脱离框架运行
C#程序脱离框架运行,即让用C#语言写的托管代码,运行起来不需要.net Framework的支持。
这样就可以不用安装庞大的.net framework(主要是Windows XP系统),其实就是换mono的公共语言运行时来使用。这样做的好处是体积小,发布免安装。
首先,您需要下载mono的最新版(下载)并安装。
①用Visual Studio创建一个Windows应用程序,假设叫做WinApp,并添加一个按钮。
②编译此项目,得到一个WinApp.exe文件。
③自己建立一个文件夹WinApp。
④将mono安装文件夹中的bin和lib子文件夹中需要的文件拷贝至刚才建立的那两个文件夹。
在bin目录下,保留以下文件,其他的删除即可
然后打开lib文件夹,在2.0文件夹下保留Accessibility.dll,mscorlib.dll,mscorlib.dll.mdb,然后在GAC文件夹里面保留以下文件夹:
⑤将需要运行的exe文件放入WinApp文件夹。
⑥使用bat批处理来调用:
bin\mono.exe WinApp.exe
或者用VC++写一个引导程序:
int main()
{
WinExec("bin\mono.exe WinApp.exe",SW_SHOWNORMAL);
return 0;
}
相关推荐
《iPhone高级编程:使用Mono Touch和.NET/C#》从基本的概念入手,全面地介绍了基于monotouch使用C#/.net进行iphone应用程序开发。从monotouch和.net开发环境到objective-c和c#开发语言,从基于monotouch进行iphone...
MONO实现.NET程序脱离框架运行
基于.net framework 4.5 的postgresql 的连接api(Npgsql.dll,Mono.Security.dll)
C#移动开发应用实战 使用Mono for Android和.NET C# 中文版
这几天看了很多关于脱离框架运行C#程序的文章,千篇一律,都是讲飞信方案的,此方案涉及一些法律问题,只能自己研究一下,后来用google美国网站搜了一把,看了些文章,无意中发现mono,又用mono关键字到google中国搜...
C#开发Android应用实战 使用Mono for Android和.NET C#(美)麦克卢尔 清华大学出版社出版
.net C#脱离环境运行程序,mono制作,只有3个资源分,交朋友而已,如有疑问,联系我42117267@qq.com
C# Android 《C#开发Android应用实战 使用Mono for Android和.NET C#》
一个用mono脱离.NET框架实例。。。。。。。。。
Professional Android™ Programming with Mono® for Android and .NET/C# John Wiley & Sons, Inc.
.NET Framework,Mono,.NET Core和Xamarin产品的易于使用的许可库。 该项目派生自库。 此派生的目的是添加对更多.NET平台的支持,尤其是.NET Standard和.NET Core。 还有一个计划与Bouncy Castle库分离,并为现代...
尽管.NET Framework的Microsoft版本运行在Windows操作系统上,但以后将推出运行在其他操作系统上的版本,例如Mono,它是.NET Framework的开发源代码版本(包含一个C#编译器),该版本可以运行在几个操作系统上,包括...
2.用于该平台下开发人员的技术框架体系(.NET Framework、.NET Core、Mono、UWP等), 1.定义了通用类型系统,庞大的CTS体系 2.用于支撑.NET下的语言运行时的环境:CLR 3..NET体系技术的框架库FCL 3.用于支持开发...
mono2.4源码,不知道怎么看ms.net源码,但mono是个不错的选择
While the .NET Framework was in initial development, Miguel de Icaza, who worked for Ximian, created his own C# compiler, and from that the Mono framework was born. In 2003, Novell purchased Ximian. ...
使用Mono for Android和.Net/C#开发Android 应用程序,环境搭建(开发环境配置和环境变量配置) 1、安装JDK 2、安装Android SDK 3、安装Visual Studio 2010及SP1补丁包(参见...
[分卷2]C#开发Android应用实战 使用Mono for Android和.NET C# 解压的时候,也要把第一卷给下载下来,在我的资源中就存在,而且都是免费的。希望大家多多支持!
《C#开发Android应用实战 使用Mono for Android和.NET C#》源码
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是...