在 linux 和 mac os x 系统上运行 .net-mile米乐体育

.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. 运行时组件
    • 64 位的 jit 编译器与 simd 指令
    • 垃圾回收器
  2. 类库
    • 基础类库
    • nuget 包
  3. 编译器
    • .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 平台上。

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图