[ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS
除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux Distribution(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支持。我们先来体验一下使用Mac来开发.NET Core应用,在这之前我们照例先得在Mac OS上构建我们的开发环境。
一、安装开发环境
和Windows一样,如果我们希望在Mac上进行.NET Core应用的开发,我们只需要安装 .NET Core SDK和相应的IDE就可以了。 .NET Core SDK可以直接从微软官方站点下载,安装之后我们将拥有.NET Core针对Mac OS的运行时和相应工具,其中包含在前面频繁使用的命令行工具 dotnet。顺便说一下,虽然老版本的Mac OS(比如10.12 Sierra)可以安装.NET Core 3.0 SDK,但是只有在10.13 High Sierra或者更高版本的Mac OS才能编译和运行.NET Core 3.0应用程序。
对于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这个命令行工具)在各个平台具有一致性的定义,在IDE(Visual Studio和Visual Studio Code)层面也具有相同的选择。我们先来体验一下用于创建初始 .NET Core项目的脚手架命令行在Mac OS上的应用,为此我们按照下图所示的方式执行“dotnet new console”命令在当前目录下创建了一个控制台应用程序。

上图右侧所示的是执行脚手架命令行创建的控制台应用的项目结构,可以看出它与我们在Windows上执行相同命令创建的应用具有相同的文件结构。不仅如此,生成的文件内容也完全一致,如下所示的是项目文件helloworld.csproj和程序文件Program.cs的内容。
helloworld.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
</Project>
Program.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应用
在《跨平台开发体验: Windows[下篇]》中,我们演示了如何将一个通过脚手架命令行创建的控制台应用一步步改造成ASP.NET Core MVC应用,既然.NET Core提供真正的跨平台支持,那么我们按照相同方式改造的ASP.NET Core MVC应用同样可以在Mac OS上运行。接下来我们就来验证一下。我们首先直接编辑项目文件helloworld.csproj将SDK改成“Microsoft.NET.Sdk.Web”,并将表示输出类型的属性节点(<OutputType>Exe</OutputType>)移除。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.</TargetFramework>
</PropertyGroup>
</Project>
我们选择相应的IDE或者纯文本编辑器对Program.cs进行如下的修改,那么我们的应用就变成了一个简单的ASP.NET Core MVC应用。经过前面的介绍,相信读者朋友们已经理解了每一行代码的含义,所以在这里我们就不再赘言说明了。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; namespace helloworld
{
class Program
{
static void Main()
{
Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(webHostBuilder => webHostBuilder
.ConfigureServices(servicecs => servicecs
.AddRouting()
.AddControllersWithViews())
.Configure(app => app
.UseRouting()
.UseEndpoints(endpoints => endpoints.MapControllers())))
.Build()
.Run();
}
}
}
public class HelloController
{
[HttpGet("/hello")]
public string SayHello() => "Hello World!";
}
到目前为止,所有的编程工作都已经结束,我们只需要按照我们熟悉的方式执行dotnet run命令就可以启动这个程序。程序启动之后利用浏览器访问地址“http://localhost:5000/hello/foobar”,我们会得到如下图所示的输出结果。

[ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS的更多相关文章
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
对于一个 .NET Core开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux
如果想体验Linux环境下开发.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- 《ASP.NET Core 3框架揭秘》博文汇总
在过去一段时间内,写了一系列关于ASP.NET Core 3相关的文章,其中绝大部分来源于即将出版的<ASP.NET Core 3框架揭秘>(博文只能算是"初稿",与书 ...
随机推荐
- 【故障公告】数据库服务器 CPU 近 100% 引发的故障
抱歉,今天上午 10:48 ~ 10:33 期间,我们所使用的数据库服务(阿里云 RDS 实例 SQL Server 2016 标准版)又出现了 CPU 近 100% 问题,由此给您带来麻烦,请您谅解 ...
- 使用Query Store监控性能
Query Store是SQL Server 2016中引入的语句性能监控和调优工具,它不仅自动捕获查询.执行计划和运行时统计信息的历史记录,而且还可以识别出由于执行计划更改而导致的性能差异,简化了性 ...
- wincap linux部署
1.4.1 linux下安装Winpcap a) 下载Winpcap的源码:https://www.winpcap.org/devel.htm b) 上传源码包“WpcapSrc_4_1_3.zip” ...
- Android分包MultiDex源码分析
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52845661 本文出自: [HansChen的博客] 概述 Android开发者应该 ...
- C语言I博客作业10
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10095 我在这个课程的 ...
- Django中间件详解
Django中间件详解 中间件位置 WSGI 主要负责的就是负责和浏览器和应用之家沟通的桥梁 浏览器发送过来一个http请求,WSGI负责解包,并封装成能够给APP使用的environ,当app数据返 ...
- OC中ARC forbids explicit message send of release错误
在ios编程中,如果成员变量为对象,我们需要对成员变量内存管理,否则,会造成内存泄露.即我们要对成员变量进行手动的内存释放. 很显然,是ARC的问题. 错误原因:在创建工程的时候点选了“Use Aut ...
- ThinkPHP5——route(路由)的详解
路由在框架中的作用打个比方的话,路由好比是WEB应用的总调度室,对于访问的URL地址,路由可以拒绝或者接受某个URL请求,并进行分发调度,而且还有一个副作用是因为路由规则可以随意定义,因此可以让你的U ...
- CSS自定义默认样式
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, ...
- 【我的物联网成长记8】超速入门AT指令集【华为云技术分享】
[摘要] 在物联网中,AT命令集可用于控制&调测设备.通信模块入网等.本文为您介绍NB-IoT常用的AT命令集及其调测工具. 什么是AT指令集 AT命令,用来控制TE(Terminal Equ ...