.NET Core多平台开发体验[2]: 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被成功安装之后,我们可以如下图所示的基本信息,可以看出显示的运行时环境信息是与当前安装的操作系统相匹配的。

1-17

对于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的控制台应用。

1-18

上图(右)所示的是脚手架命令行创建的控制台应用的项目结构,可以看出它与我们在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”字符串被打印出来。

1-19

三、改造成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包安装到当前项目上。

1-20

不论我们采用何种方式,安装的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所示的输出结果。

1-21

.NET Core多平台开发体验

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


作者:蒋金楠
微信公众账号:大内老A
微博:www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文链接

目录
打赏
0
0
0
0
16429
分享
相关文章
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
121 13
.NET 平台 SM2 国密算法 License 证书生成深度解析
Harmony OS开发-ArkTS三
本文介绍了ArkTS的基础语法,包括常量、命名规则、数组及其常用函数,以及函数的定义与使用,涵盖匿名函数和箭头函数的区别。通过具体示例,帮助读者快速掌握ArkTS编程技巧,踏上Harmony OS开发之旅。君志所向,一往无前!
51 1
Harmony OS开发-ArkTS三
优化管理与服务:操作系统控制平台的订阅功能解析
本文介绍了如何通过操作系统控制平台提升系统效率,优化资源利用。首先,通过阿里云官方平台开通服务并安装SysOM组件,体验操作系统控制平台的功能。接着,详细讲解了订阅管理功能,包括创建订阅、查看和管理ECS实例的私有YUM仓库权限。订阅私有YUM仓库能够集中管理软件包版本、提升安全性,并提供灵活的配置选项。最后总结指出,使用阿里云的订阅和私有YUM仓库功能,可以提高系统可靠性和运维效率,确保业务顺畅运行。
Intel 平台新特性助力龙蜥 OS 云计算 | 龙蜥大讲堂101期
本次分享的主题是Intel平台新特性助力龙蜥OS云计算。内容涵盖英特尔第四代和第五代至强处理器的新特性,如性能提升、内置加速器等,并详细介绍TDX、SGX、AMX等技术原理及其在虚拟化环境中的支持情况,旨在帮助云用户充分利用英特尔新平台的优势。
基于操作系统控制平台-深入剖析CPUGPU Tracing分析
基于操作系统控制平台-深入剖析CPUGPU Tracing分析
基于操作系统控制平台-深入剖析CPUGPU Tracing分析
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
58 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
134 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
75 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
75 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等