[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.0</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
相关文章
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- mac os x安装教程_OS X EI Capitan
- .Net Core3.1 SignalR for WPF Asp.net
- Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000794500000, 576716800, 0)详解编程语言
- 升级Mac OS升级:最新版本火热发布(macos版本最新)
- 数据库使用.NET连接MySQL数据库(net连接mysql)
- 『Linux查看OS版本:解答一步到位』(linux查看os版本)
- .net安装 Linux 上的 ASP.NET 环境(linux安装asp)
- os中南大学:Linux OS的不断发展(中南大学linux)
- 如果我实现了自己的OS,我算开发者中的精英吗?
- 2017 年 Windows 将被苹果 iOS/OS X 超越,沦为第三大操作系统
- Matchstick和Mozilla合作推出Firefox OS开源电视棒
- 三星也要放弃安卓了?Fuchsia OS进入1.0阶段
- Collapse OS:为世界末日创建的操作系统
- VB.NET构建多层数据库应用:使用MSSQL(vb.net mssql)
- Net不再压着 MSSql,语音变得前景无限(net mssql语音)
- 基于NET技术的Oracle信息服务(.net用oracle)
- Net访问Oracle数据库的简易方法(.net访问oracle)
- 数据库NET开发者操作Oracle数据库的全攻略(net操作oracle)
- 快速搭建 NET 项目,用 MySQL 配置环境(.net 配置mysql)
- Oracle 操作系统上的使用体验(oracle使用os)
- 久等了!elementary OS 6 “Odin” 正式发布,带来令人激动的新变化
- asp.net(C#)动态添加非ASP的标准html控件(如添加Script标签)
- 答你所问.NET小常识方便学习asp.net的朋友
- 浅析ASP.NET安全性分析(加强asp.net1.1/2.0安全性)
- .Net中导出数据到Excel(asp.net和winform程序中)