`
wenhai_zhang
  • 浏览: 187753 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

编程:Mono让C#程序脱离.net Framework运行

    博客分类:
  • C#
阅读更多

最近遇到一个问题,公司内部平台发布了一个.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目录下,保留以下文件,其他的删除即可

0993144151221

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

2

⑤将需要运行的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# 高清 pdf

    《iPhone高级编程:使用Mono Touch和.NET/C#》从基本的概念入手,全面地介绍了基于monotouch使用C#/.net进行iphone应用程序开发。从monotouch和.net开发环境到objective-c和c#开发语言,从基于monotouch进行iphone...

    MONO实现.NET程序脱离框架

    描述“MONO实现.NET程序脱离框架运行”进一步强调了Mono的核心功能,即让.NET应用在没有原生.NET Framework的环境中运行。这通常涉及到将.NET应用程序与Mono运行时一起打包,以便在目标平台上自包含地启动和执行。 ...

    C#使用飞信虚拟机脱离.net framework及win32引导程序

    标题中的"C#使用飞信虚拟机脱离.net framework及win32引导程序"是一个技术实践,旨在探讨如何在不依赖.NET Framework和传统的Win32启动程序的情况下,利用C#语言和飞信虚拟机来运行应用程序。这涉及到对C#语言深入的...

    不用.netframework运行.net程序 源码示例

    3. **运行**:这里是指执行.NET程序的过程,通常需要.NET Framework的支持,但在.NET Core或Mono环境下,可以脱离这个依赖。 4. **源码**:指的是程序的原始代码,可以被开发者阅读、理解和修改。在这个示例中,...

    C#脱离.NET环境,飞信虚拟机,.net framework 2.0

    标题中的"C#脱离.NET环境,飞信虚拟机,.net framework 2.0"暗示了我们正在探讨如何在不依赖传统的.NET Framework 2.0环境下使用C#编程语言,以及可能涉及的飞信虚拟机技术。这个话题对于理解C#语言的可移植性和.NET...

    .net C#脱离环境运行程序

    总之,.NET C#脱离环境运行程序通过Mono实现,它让C#开发者可以跨平台开发和运行应用程序,扩展了.NET生态系统的边界。对于想要在非Windows系统上部署和运行C#应用的开发者来说,Mono是一个不可或缺的工具。

    C# 2022入门(DotNetCore 版本).pdf

    * CLR(Common Language Runtime,公共语言运行库):提供了 .NET 程序运行所需要的环境。 * BCL(Base Class Library,基类库):提供了一组常用的类库,用于实现各种常用的功能。 C# 语言特点 C# 是一种现代、...

    mono2.4源码,了解.net

    Mono是一个开源的.NET框架,由Xamarin公司(现已被微软收购)开发,它实现了微软的.NET Framework的主要部分,包括C#编译器、Common Language Runtime(CLR)以及大部分的类库。Mono 2.4是该框架的一个较早版本,...

    mono脱离.NET框架实例

    Mono是一个开源的、跨平台的.NET开发环境,它允许开发者在不依赖Microsoft Windows或.NET Framework的情况下运行和构建.NET应用程序。本实例将深入探讨如何利用Mono实现脱离.NET框架的开发。 首先,我们需要理解...

    C#开发Android应用实战 使用Mono for Android和.NET C#(美)麦克卢尔

    这本书详细介绍了如何利用C#语言和Mono for Android框架进行Android应用程序的开发,是.NET开发者进军移动平台的重要指南。 1. **C#语言基础**:书中首先会介绍C#的基础知识,包括语法、类、对象、接口、继承、多态...

    基于.net framework 4.5 的postgresql 的连接api(Npgsql.dll,Mono.Security.dll)

    总的来说,使用Npgsql.dll和Mono.Security.dll(如果需要),开发者可以在.NET Framework 4.5环境中轻松地与PostgreSQL数据库进行交互,实现各种复杂的数据库操作。记得在开发过程中注意连接管理和资源释放,以保持...

    一个优秀的包含 Cassini Version For .NET Framework 3.5的源程序代码

    总的来说,Cassini Version For .NET Framework 3.5的源程序代码是一个宝贵的教育资源,它让开发者能够深入理解.NET Web服务器的工作原理,同时提供了一个方便的本地开发和调试工具。如果你正在学习或工作中涉及.NET...

    .NET Framework(4.0.30319)完整安装包

    .NET Framework是微软开发的一种软件框架,它为开发者提供了一个运行环境,使得他们可以编写和运行基于.NET技术的应用程序。此框架包含了多种关键组件,如公共语言运行时(CLR)、类库以及开发工具,旨在简化软件...

    DotNetBox不装FrameWork运行.NET程序.Net.rar

    标题 "DotNetBox不装FrameWork运行.NET程序.Net.rar" 提到的是一个使用 DotNetBox 应用程序,它允许用户在没有安装 .NET Framework 的环境下运行基于 .NET 的程序。这一特性对于那些希望在不支持或未安装 .NET ...

    C# asp.net PgSql驱动 Npgsql mono.security

    在IT行业中,C# ASP.NET是一种广泛用于构建高效、可扩展的Web应用程序的框架,而PostgreSQL(简称PgSql)则是一种开源的对象关系型数据库管理系统,以其强大的功能和稳定性受到开发者的青睐。当我们需要在ASP.NET...

    《C#开发Android应用实战 使用Mono for Android和.NET C#》

    《C#开发Android应用实战 使用Mono for Android和.NET C#》是一本专为开发者准备的指南,它详细阐述了如何利用C#语言和Mono for Android框架来构建原生的Android应用程序。这本书由(美)麦克卢尔撰写,是.NET开发者...

    C#移动开发应用实战 使用Mono for Android和.NET C# 中文版

    《C#移动开发应用实战:使用Mono for Android和.NET C#》是一本专注于利用C#语言进行Android应用程序开发的专业书籍。这本书主要针对那些已经熟悉C#编程语言,并希望将其技能扩展到移动平台的开发者。通过学习,读者...

    mono脫離.net framework 運行的框架示例,

    这几天看了很多关于脱离框架运行C#程序的文章,千篇一律,都是讲飞信方案的,此方案涉及一些法律问题,只能自己研究一下,后来用google美国网站搜了一把,看了些文章,无意中发现mono,又用mono关键字到google中国搜...

Global site tag (gtag.js) - Google Analytics