Mac OS X

除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支持,我们先来体验一下使用Mac来开发.NET Core应用,在这之前我们照例先得构建我们的开发环境。

一、安装开发环境

和Windows一样,如果我们下午在Mac上进行.NET Core应用的开发,我们只需要安装 .NET Core SDK和相应的IDE就可以了。对于前者,我们可以直接从微软官方站点(https://www.microsoft.com/net/core#macos),SDK安装之后我们将拥有.NET Core针对Mac OS的运行时和相应工具,其中包含在《.NET Core多平台开发体验[1]: Windows》频繁使用的命令行工具 dotnet。.NET Core SDK安装完成之后,我们可以执行dotnet –info命令检验SDK是否被成功安装。如果SDK被成功安装之后,我们可以如下图所示的基本信息,可以看出显示的运行时环境信息是与当前安装的操作系统相匹配的。

对于Mac OS X的.NET Core应用的开发人员,他们在IDE上同样具有广泛的选择。首先,Visual Studio目前推出了Mac版本,虽然和Windows版本在功能和稳定性上还有一定的差距,但是对于习惯了Visual Studio的Mac用户来算是福音。除此之外,我们可以选择免费的Visual Studio Code,如果不太喜欢这种风格的IDE,还可以选择JetBrains的Rider。

二、利用命令行创建.NET Core程序

对于Windows和Mac用户来说,针对他们的开发体验基本上是一致的,因为.NET Core SDK提供命令行(主要是dotnet这个命令行工具)具有一致的API定义,而且他们可以选择相同的IDE(Visual Studio和Visual Studio Code)。我们先通过dotnet new这个脚手架命令行工具按照如下图所示的方式创建一个名为helloworld的控制台应用。

上图(右)所示的是脚手架命令行创建的控制台应用的项目结构,可以看出它与我们在Windows上执行相同命令创建的应用具有相同的文件结构。不仅如此,生成的文件内容也完全一致,定义项目的helloworld.csproj文件和程序文件Program.cs文件的内容如下所示。

helloworld.csproj

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
</Project>

Pprogram.cs

using System;
namespace helloworld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}

我们在无需对创建出来的应用做任何改动的情况下可以直接执行dotnet命令行来启动该控制台程序。如下面的代码片段所示,在将当前目录切换到控制台应用所在项目根目录之后,我们直接执行dotnet run命令启动该程序,随后在Main方法中输出到控制台上的“Hello World”字符串被打印出来。

三、改造成ASP.NET Core MVC应用

在《.NET Core多平台开发体验[1]: Windows》中,我们演示了如何将一个通过脚手架命令行创建的控制台应用一步步改造成ASP.NET Core MVC应用,既然.NET Core提供真正的跨平台支持,那么我们按照相同方式改造的ASP.NET Core MVC应用同样可以在Mac OS上运行,接下来我们就来验证一下。

我们首先需要安装所需的NuGet包,虽然WebHost和WebHostBuilder这两个核心的类型定义在NuGet包“Microsoft.AspNetCore.Hosting”中,但是对ASP.NET Core MVC框架提供实现的“Microsoft.AspNetCore.Mvc”依赖这个NuGet包,所以我们只需要安装后者就可以了。除此之外,我们还需要安装的就是提供了跨平台服务器KestrelHttpServer的NuGet包“Microsoft.AspNetCore.Server.Kestrel”。上面介绍的若干种NuGet包的安装方式在这里同样适用,我们现在选择命令行的方式安装方式,为此我们按照如下图所示的方式执行dotnet add package命令将上述两个NuGet包安装到当前项目上。

不论我们采用何种方式,安装的NuGet包最终会体现在定义项目的.cspoj文件中,所以打开helloworld.csproj文件,我们会看到如下的内容,我们安装的两个NuGet包体现为<ItemGroup>节点下的两个< PackageReference>元素。

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.0.0" />
</ItemGroup>
</Project>

所需的NuGet包安装完毕之后,我们选择相应的IDE或者纯文本编辑器对Program.cs进行如下的修改,那么我们的应用就变成了一个简单的ASP.NET Core MVC应用。经过上面的介绍,相信读者朋友们已经很清楚了每一行代码的含义,所以在这里我们就不在赘言介绍了。

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection; namespace helloworld
{
class Program
{
static void Main(string[] args)
{
new WebHostBuilder()
.UseKestrel()
.ConfigureServices(svcs => svcs.AddMvc())
.Configure(app => app.UseMvc())
.Build()
.Run();
}
} public class HelloController
{
[HttpGet("/hello/{name}")]
public string SayHello(string name)
{
return $"Hello, {name}";
}
}
}

到目前为止,所有的编程工作都已经结束,我们只需要按照我们熟悉的方式执行dotnet run命令就可以启动这个程序。程序启动之后利用浏览器访问地址“http://localhost:5000/hello/foobar”,我们会得到如图1-21所示的输出结果。

.NET Core多平台开发体验

.NET Core多平台开发体验[1]: Windows
.NET Core多平台开发体验[2]: Mac OS X
.NET Core多平台开发体验[3]: Linux
.NET Core多平台开发体验[4]: Docker

Mac OS X的更多相关文章

  1. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  2. Mac OS 使用 Vagrant 管理虚拟机(VirtualBox)

    Vagrant(官网.github)是一款构建虚拟开发环境的工具,支持 Window,Linux,Mac OS,Vagrant 中的 Boxes 概念类似于 Docker(实质是不同的),你可以把它看 ...

  3. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  4. 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。

    写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...

  5. Atitit mac os 版本 新特性 attilax大总结

    Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0)  1984年2 2.2. Mac OS 7. ...

  6. 【转】[fix] Wireshark error: There are no interfaces on which a capture can be done. on Mac OS X

    I got the following error message when trying to open a network interface for capture using Wireshar ...

  7. Mac OS使用brew安装Nginx、MySQL、PHP-FPM的LAMP开发环境

    准备工作 新版的 Mac OS 内置了Apache 和 PHP,我的系统版本是OS X 10.9.3,可以通过以下命令查看Apache和PHP的版本号: httpd -v Server version ...

  8. 【转】windows环境下安装win8.1+Mac OS X 10.10双系统教程

    先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区的 ...

  9. win10 Vmware12装mac os X10.11虚拟机教程

    1.下载安装VMware 12,具体教程在网上都能看见. 2.下载mac os的镜像,最好下载cdr格式的. 3.在导入虚拟机的时候,到选择客户机操作系统的时候,没有网上出现的Mac os,如下图所示 ...

  10. Virtualbox 上调整 Mac OS 分辨率 最简单方法

    Mac OS 分辨率:VBoxManage setextradata "Mac OS X 10.10" VBoxInternal2/EfiGopMode 3       ----代 ...

随机推荐

  1. python学习笔记:第五天( 列表、元组)

    Python3 列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见 ...

  2. IntelliJ IDEA 的 project 和 module 区别与关系

    在IDEA 创建一个project,目录结构是这样的:在project下创建一个module之后目录结构是这样的: 简单的概括如下: IntelliJ系中的 Project  相当于Eclipse系中 ...

  3. AtCoder Beginner Contest 106 2018/08/18

    A - Garden Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement There is a ...

  4. python+selenium自动化测试环境搭建

    selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: *  免费,也不用再为破解QTP而大伤脑筋 *  小巧,对于不同的语 ...

  5. poj1456Supermarket——并查集压缩查找

    题目:http://poj.org/problem?id=1456 排序+贪心,每次选利润最大的,放在可能的最靠后的日期卖出,利用并查集快速找到下一个符合的日期. 代码如下: #include< ...

  6. android自动连接指定wifi

    public class WifiAutoConnectManager { private static final String TAG = WifiAutoConnectManager.class ...

  7. centos6.5安装gtk开发环境

    0.说明 由于 centos 默认的桌面是 gnome 的,我们知道gnome 的依赖库就是 gtk,而 gtk 各个版本的差异性还是很大的,所以我们需要根据 centos 的不同版本选择和 cent ...

  8. Flutter汇总贴

    Fluuter常遇到的问题 Flutter从入门到进阶实战携程网App_汇总贴 Flutter教程网 http://www.flutterj.com/ 第三季:https://jspang.com/p ...

  9. go开发环境搭建及开发工具简介

    go语言包的下载地址:https://www.golangtc.com/download 这里以window10的操作系统环境为例 go的开发工具下载地址:https://www.golangtc.c ...

  10. Post 提交用户名和密码, 用户自动登录,无需手动登录

    public void AutoPost(string url,string domain, string userName) { AlipayProxy.UserReg.UserReg userRe ...