添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

全文字数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