.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. 运行时组件\\t

    1. 64位的JIT编译器与SIMD指令\\t\t
    2. 垃圾回收器 \\t

    \\t

  2. 类库\\t
    1. 基础类库\\t\t
    2. NuGet包 \\t

    \\t

  3. 编译器\\t
    1. .NET编译器平台(Roslyn)\\t

    \

如何获取.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!\”);

\\

下一步计划

\\

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

\\

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

\\

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

\\

  1. .NET Core应用能够在基于Linux的生产环境中运行,包括Docker、本地部署和云端部署\\t
  2. 开发者可以使用VS Code或其它任何喜爱的编辑器,对运行在Mac OS X环境中的.NET代码进行编辑、编译与调试\\t
  3. 全部使用无关平台特性创建的应用在Windows与其它平台上具有相同的行为\\t
  4. .NET Core将把现有.NET云端生态系统的类库也带到Linux上\\t
  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

在Linux和Mac OS X系统上运行.NET相关推荐

  1. Mac技巧之苹果电脑Mac OS X系统上,类似Windows画图板的软件paintbrush介绍与下载

    from:http://www.mac52ipod.cn/post/paintbrush-Mac-OS-X-Windows-HuaTu.php PC用户可能经常用Windows自带的画图板做简单的图片 ...

  2. Mac OS X系统上使用MacDown

    最近用MacDown来写文章.根据说明进行写文章,排版挺不错的,软件免费,用的挺好用的. 最后找到了这款MacDown,感觉很不错,开源免费的,作者是台北人,MacDown的很多灵感也来自于mou,具 ...

  3. iEmu:在Linux、Windows、Mac、Android系统上仿真运行iOS应用

    iOS 是一个"封闭"的系统,而Android是一个"开放"的系统,两者可谓是泾渭分明.现在,iEmu试图打破这两个操作系统之间的界限.iEmu是当年最 早破解 ...

  4. 在Linux以及Mac OS X启用F#

    随着.NET Core的推进,如今我们在Linux和Mac OS X平台上也可以和原先Windows平台之下一样运行F#程序.Microsoft的F#项目经理David Stephens先生在Buil ...

  5. 全面了解MAC OS X系统(以 Mac OS 9为例)

    全面了解MAC OS X系统-适用开发人员 Mac OS X 既是以往 Macintosh 操作系统的重大升级,也是对其的一种自然演化.它继承了 Macintosh 易于操作的传统,但其设计不只是让人 ...

  6. bcd 增加 引导linux系统 mac os x 系统,Windows 7+Windows XP+Ubuntu+Mac OS多系统引导完全解决方案...

    4个操作系统集成:Windows XP(选择原版最好 15G),Windows 7(选择原版最好 25G),Ubuntu(10G),Mac OS(iDeneb版Mac OS 才能安装到PC机上 20G ...

  7. bcd 增加 引导linux系统 mac os x 系统,系统引导维护工具 EasyBCD 2.4.0.237 中文多语免费版...

    EasyBCD 2.4 中文多语特别版由大眼仔旭(www.dayanzai.me)发布.EasyBCD 是一款免费软件,EasyBCD 能够极好地支持多种操作系统与 Windows 7.Vista 结 ...

  8. MAC OS 苹果系统如何安装FileZilla上传程序

    1.下载YummyFTP中文版软件. 下载地址如下: https://download.filezilla.cn/client/macosx/FileZilla_3.51.0_macosx-x86.a ...

  9. Mac OS X系统 HomeBrew的安装和简单使用

    本文章为菲利克斯猫(Felix.mao) 原创,原文链接地址如下: http://blog.csdn.net/maojudong/article/details/7918291 前面两篇文章已经介绍了 ...

最新文章

  1. load python txt文件_详解Python中numpy.loadtxt()读取txt文件
  2. java 枚举类型enum用法_别再说Python没有枚举类型了,好好看看
  3. jQuery快速复习
  4. css改变谷歌浏览器的滚动条样式
  5. Linux内核OOM机制的详细分析
  6. 微软提出VLMo:用“模态混合专家”进行统一的视觉语言预训练!即将开源!
  7. 什么是Python,如何安装使用Python
  8. 轻松矿工抽水多少_欧冠 皇马vs顿涅茨克矿工 矿工主力缺席 皇马主场霸气狂飙...
  9. Power BI Desktop中的分解树
  10. 特殊字符的html编码转化
  11. windows环境搭建hadoop
  12. 如何在windows10系统将用户名改为英文
  13. 摄影测量与遥感数据精度表格
  14. vscode插件开发流程
  15. web服务器硬件软件配置选择
  16. 点亮一盏灯,温暖一个梦
  17. 初学Java 从0-1创建Spring boot+Mybatis - plus+Swagger2+Mysql(代码生成器)
  18. XP系统如何连接Win10共享打印机--win10专业版
  19. 深入C++对象模型(2) -- 构造、析构函数
  20. 写简历犯这七个错,HR就不看了!

热门文章

  1. java控制面板作用_Java
  2. 密码学专题 随机数文件
  3. Python学习2 条件判断语句if,循环语句for while
  4. 上班族如何当老板 五大模式任你选
  5. 警惕开源代码库中的安全隐患
  6. 解读设计模式----简单工厂模式(SimpleFactory Pattern),你要什么我就给你什么
  7. 哈哈哈,只有程序员才懂的黑色幽默 ... ...
  8. eclipse关闭讨厌的菜单
  9. 基于Flask开发企业级REST API应用(一)
  10. leetcode 268