全文字数1484 | 阅读需要4分钟
关键词:C#、跨平台、mono、.NET Core、MonoDevelop、VisualStudio
导读
C#是一种安全、稳定、简单、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性,并综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为很多程序员的首选语言。C#作为一种编程语言,早在2003年就成为ISO的标准之一,在Linux平台mono的支持下,C#可以方便地实现跨平台运行【1】。
什么是跨平台
跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合开发高度抽象的模型系统。诸如C#、java、delphi和易语言,都已做到了跨平台。它们将可以在多种系统下开发、运行和维护【2】。
跨平台开发环境
.NET技术是一个跨平台发展的技术,从windows、苹果mac系统到本身开源的Linux系统都有对应的软件工具产品和策略支持,如图1所示。
图 1 C#跨平台开发环境
运行时引擎,在Windows中为.NET Framework【5】和.NET Core【3】,在Linux和MAC中为mono和.NET Core【6】。图形化的开发环境,在Windows中,可使用Visual Studio或MonoDevelop【4】;在Linux中使用MonoDevelop;MAC中使用Visual Studio for MAC或者MonoDevelop。
mono是一个由Xamarin公司所主持的自由开放源代码项目。它包含了一个C#语言的编译器,一个CLR的运行时和一组类库,实现了ADO NET和ASP NET。能够使得开发人员在Linux用C#开发程序。该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.NET工具,包括C#编译器和共同语言CL(即Common Language)执行平台(Platform).与微软的.NET不同,mono项目不仅可以运行于Windows系统内,还可以运行于Linux、FreeBSD、Unix、Mac OS X和Solaris等系统平台【3】。
跨平台实例
在mono/.NET Core和MonoDevelop的支持下,在Windows中用VS开发的C#程序,大多数情况下都可以直接放到Linux中用MonoDevelop编译和调试,甚至可以直接运行在VS中编译好的可执行文件。以下将给出一个无缝跨平台开发的实例。
首先在VS中创建一个Windows Form的Project(具体创建过程这里不详述)。然后,加入简仪科技的GUI库SeeSharpTools.JY.GUI.dll的引用,并添加其中的EasyChart和EasyButton两个控件到界面上,并双击Button生成其单击的事件函数,添加如下代码:
var sinWaveform = new double[10000];
for (int i = 0; i < sinWaveform.Length; i++)
{
sinWaveform[i] = Math.Sin(2 * Math.PI * 10 * i / sinWaveform.Length);
}
easyChart1.Plot(sinWaveform);
以上代码的作用是生成10000点,共10个周期的正弦波,然后生成并运行Project,得到的运行界面如图2所示。
图 2 Windows中运行实例界面
接下来直接拷贝整个工程文件(包括我们引用的SeeSharpTools.JY.GUI.dll库)到Linux(以ubuntu16.04为例),可以使用mono exe文件名直接运行在Windows中已生成的可执行文件。或者用MonoDevelop打开解决方案,可以编译、运行或调试。运行结果如图3所示。
图 3 Linux(Ubuntu)中运行实例界面
参考
【1】《基于C#跨平台的测试测量初探》 来源:《国外电子测量技术》2017年第06期
【2】跨平台 百度百科:https://baike.baidu.com/item/%E8%B7%A8%E5%B9%B3%E5%8F%B0
【3】mono 百度百科:https://baike.baidu.com/item/mono/60423
【4】MonoDevelop 百度百科:https://baike.baidu.com/item/MonoDevelop
【5】Microsoft .NET Framework 百度百科:https://baike.baidu.com/item/Microsoft%20.NET%20Framework
【6】Microsoft .NET Core 百度百科:https://baike.baidu.com/item/.net%20core
Copyright © 2016-2024 JYTEK All Rights Reserved.