写点什么

在 Linux 和 Mac OS X 系统上运行.NET

  • 2015-05-06
  • 本文字数:1951 字

    阅读完需:约 6 分钟

.NET Core 运行时已经看到了实现真正的跨平台的美好前景,它最终出现在 Linux 和 Mac OS X 平台上。在上周举办的 Microsoft Build 大会上,来自微软的项目经理 Habib Heydarian 为听众分析了这一举措对开发者们所带来的益处,并告诉开发者们如何开始探索这些新的机会。在名为“让.NET 实现跨平台”的一场讲座中,Heydarian 首先介绍了开发者如何进行一次全新的.NET Core 安装。

首先,所有的.NET 代码都包含在一个单独的文件夹中,而无需将它安装在某个系统级别的位置。这样,只要愿意,每个.NET 应用都可以使用一个完全不同的编译版本。并且在Windows 系统上进行编译的代码也能够在Mac OS X 和Linux 系统上运行。

要在以上系统中运行一个基于命令行的标准HelloWorld 程序,可使用以下方式:

./corerun HelloWorld.exe

// corereun 是一个原生的运行 app 的环境

// 在 Windows 上,引导.NET 应用的功能已经内建于操作系统中了

在非 Windows 平台上使用.NET,就意味着开发者们能够使用 ASP.NET 5、CoreCLR,并且从以下共享的功能中受益了:

  1. 运行时组件
  2. 64 位的 JIT 编译器与 SIMD 指令
  3. 垃圾回收器
  4. 类库
  5. 基础类库
  6. NuGet 包
  7. 编译器
  8. .NET 编译器平台(Roslyn)

如何获取.NET Core

对于 Mac OS X 开发者来说,推荐的方式是使用 Homebrew 以获取必要的组件。当安装好 Homebrew 之后,就可以通过以下命令获取.NET 组件了:

brew tap aspnet/dnx
brew update
brew install dnvm
dnx . kestrel

Linux 用户可以从该项目的网站上下载一个包含了所有必要组件的 TAR 文件,随后按照以下方式进行安装:

tar zxvf PartsUnlimited-demo-app-linux.tar.gz -C ~/
source ~/.dnx/dnvm/dnvm.sh
dnvm use 1.0.0-beta5-11624 -r coreclr -arch x64
dnx . kestrel

你一定注意到了一点,在这个两个平台上所运行的最后一条指令都是 kestrel 的执行。Kestrel 也正是“跨平台的 ASP.NET 5 web 服务器”,DNVM 则是.NET 的版本管理器。目前,该项目只支持 64 位平台的 Linux 和 Mac OS X。开发团队仍然在继续研究如何让它支持 32 位的系统。

紧随 Linux 和 Mac OS X 之后,对FreeBSD 的支持最近也加入到该项目中。对于这三个平台来说,目前还存在着一个限制,那就是从源代码编译.NET Core 的功能仅限于Windows 版本。要从源代码编译.NET,开发者需要首先编译CoreCLR,然后再编译CoreFX。

正如Windows 平台上的.NET 开发者能够利用平台调用(PInvoke)功能一样,Linux 平台上的开发者也能够使用DLL Import 这一命令:

[DllImport(“libc”)]
private static extern int printf(string format);

Printf(“Hello, //BUILD 2015!\n”);

下一步计划

Heydarian 在演讲余下的部分谈到了该团队下一步的计划,以及微软对这一项目的目标。随着 Visual Studio 不断地扩展到非 Windows 的平台上,微软希望能够改进在这些新环境中的调试功能。对于 VS2015 来说,就是要实现远程调试。而对于 VS Code 来说,首先要从实现本地调试开始。

另一个改进的方向是整体的上线预备。为了在这方面有所突破,团队打算整合 MSBuild 的支持,并消除目前对 Mono 在这方面功能的依赖。

Heydarian 表示,当.NET 在 Linux 和 Mac OS X 平台上正式发布,并成为“RTM”版本之后,微软将做出以下正式的承诺:

  1. .NET Core 应用能够在基于 Linux 的生产环境中运行,包括 Docker、本地部署和云端部署
  2. 开发者可以使用 VS Code 或其它任何喜爱的编辑器,对运行在 Mac OS X 环境中的.NET 代码进行编辑、编译与调试
  3. 全部使用无关平台特性创建的应用在 Windows 与其它平台上具有相同的行为
  4. .NET Core 将把现有.NET 云端生态系统的类库也带到 Linux 上
  5. 微软对.NET 在 Linux 上的支持、服务和维护与其它微软产品一视同仁

在你的应用中加入对 Linux 和 Mac OS X 的支持

微软将推出一套 API 可移植性工具,用于对现有的代码进行分析,找出所需的程序集和目标平台。目前为止,唯一对兼容性进行了测试的 Linux 分发平台是 Ubuntu 14.04.2 LTS。虽然没有明确地表示不支持其它的 Linux 分发平台,但无法保证在这些平台上是否能够正常运行。

Heydarian 认为目前来看,微软所提供的.NET 与 Mono 版本相比,所针对的市场方向并不相同。Haydarian 表示:“……虽然 [Mono] 在移动场合的表现优秀,但它并不是为服务器或云端生产环境的使用场景而设计的……”,而.NET Core 倾向于在具有高吞吐量、高伸缩性,以及更高的修复前平均时间(MTTF)的服务器环境中所使用。

希望通过.NET 即将提供的功能,从跨平台方式中受益的开发者可以首先从 VS2015RC 中的 ASP.NET 5 项目模板开始打造及测试应用,并且参考 GitHub 上的 ASP.NET 示例应用 Parts Unlimited 。凡是能够在 Windows 上的 ASP.NET 5 中成功运行的应用,一旦等到.NET Core RTM 之后,就能够无缝地迁移至 Linux 平台上。

查看英文原文: Running .NET on Linux and Mac OS X

2015-05-06 09:236690
用户头像

发布了 428 篇内容, 共 178.2 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

高效使用Java构建工具,Maven篇|云效工程师指北

阿里云云效

云计算 maven 阿里云 java 并发 构建工具

2022华为软件精英挑战赛复赛名单公布,快来看看都有哪些优秀赛队晋级

科技热闻

科创人·知乎CTO李大海:技术服务内容、商业化依赖内容,曾被「呵呵」难到挠头

科创人

打通产销对接,构建新型数智化农副产品供应链

数商云

产业互联网 数字化

重塑企业数字化能力,端点科技重磅发布Erda2.0

科技热闻

TiFlash 开源了

PingCAP

Kubernetes官方java客户端之三:外部应用

程序员欣宸

Kubernetes java client

【直播回顾】OpenHarmony 知识赋能第四期第四课——音频驱动开发

Anna

OpenHarmony

ICDE 2022|Apache ShardingSphere:一个功能全面和可插拔的数据分片平台

SphereEx

数据库 ShardingSphere 论文 SphereEx

Kubernetes官方java客户端之四:内部应用

程序员欣宸

Kubernetes client 4月月更

恒源云(Gpushare)_JupyterLab/TensorBoard使用问题?技巧大放送4!

恒源云

人工智能 深度学习 PyTorch

恒源云(Gpushare)_如何安装包/pip加速等?技巧大放送3!

恒源云

安装 pip Ubuntu apt

云效制品仓库 Packages,不限容量免费用

阿里云云效

云计算 maven 阿里云 npm 制品仓库

开发者手册之如何成为 OceanBase Contributor

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版

提升 Hybrid 体验:饿了么双十一 PHA 框架技术实践

阿里巴巴终端技术

App 用户体验 Hybrid PHA

【Zeekr_Tech】初谈我们共同的目标 NPDS + Agile

Zeekr_Tech

人工智能 敏捷开发 智能驾驶

恒源云(Gpushare)_没有你想要的镜像?技巧大放送5!

恒源云

镜像仓库 显卡、gpu

恒源云(Gpushare)_如何查看显卡占用的情况?技巧大放送2!

恒源云

算法 GPU服务器 显卡

百度可观测系列 | 如何构建亿级指标的高可用 TSDB 存储集群?

百度开发者中心

车载小程序快马加鞭突围车联网生态系统

FinClip

“远见者”特斯拉AI主管Karpathy|深度学习崛起十年

OneFlow

人工智能 深度学习 计算机视觉 特斯拉 openai

We are learning by contributing!访 StarRocks Committer 周康、冯浩桉

StarRocks

数据库 开发者社区 StarRocks

恒源云(Gpushare)_如何防止训练不中断?技巧大放送1!

恒源云

算法 服务器 训练

直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类

百度开发者中心

2022首场MASA技术团队黑客松大赛完美落幕!精彩集锦

MASA技术团队

C# .net 微软

衡石BI产品预置明道云数据连接器

明道云

架构标准TOGAF实践最重要的三件事

博文视点Broadview

设备资产管理系统解决方案

低代码小观

资产管理 CRM系统 企业设备管理 设备巡检管理系统 企业管理软件

产品知识在线培训的解决方案

小炮

企业知识管理

功能解读|快速上手 OceanBase 数据迁移服务

OceanBase 数据库

oceanbase OceanBase 开源

狗尾巴的故事—数智时代的第一性原理|科创人·数智未来私董会

科创人

在Linux和Mac OS X系统上运行.NET_.NET_Jeff Martin_InfoQ精选文章