全文字数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#跨平台开发环境
运行时引擎,在
W
indows
中为
.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