美文网首页
初尝 macOS Sierra 下的 .NET Core

初尝 macOS Sierra 下的 .NET Core

作者: 缺水的海豚 | 来源:发表于2017-03-18 03:49 被阅读0次

    .NET Core 闹得风生水起的,什么性能甩XX几条街啊等等。恰逢 Visual Studio 2017 正式版又发布了(不过,macOS 下的 Visual Studio 2017 正式版还没有发布),就用 Visual Studio Code 测试了一下(网上看了一大堆的内容,都是用之前 .NET Core 测试版写的,看起来牛头不对马嘴,难受,这里记录一下)。

    本文基于 macOS Sierra + Visual Studio Code 进行实验!

    环境

    整体步骤

    1. 在 macOS 上安装 Visual Studio Code
    2. 在 macOS 上安装 .NET Core(安装步骤跟着官网走就可以了,关了上面的网页的同学,可以看这里
    3. 用 Visual Studio Code 建立解决方案和项目(MVC 和 Business)

    多说一句,MVC 引用 Business 把人快整疯了,结果很简单,还是命令不熟悉的原因啊……

    划重点:网上很多文章都说,要引用项目,就修改 project.json 吧啦吧啦的,我可以很负责任的告诉你:最新版本(v1.1)的 .NET Core 的项目结构已经改了,你绝对找不到该文件了!!!

    下面正式开始

    假设已经全部安装好了。安装好之后,各项组件如下:

    • OpenSSL 1.0.2k 26 Jan 2017
    • git version 2.12.0

    安装好后,上面的组件都可用,只是版本不一定和这里一致,本人有强迫症,把各个组件都升级了。

    打开 Visual Studio Code,然后按快捷键:ctrl + `(注意:ctrl 的组合键是数字键 1 前面那个波浪符号的键,不是单引号键,和 MySQL 中表名限制符一样),打开 Vusual Studio Code 的内置终端。

    记住几个常用的终端命令:

    • mkdir 新建目录(文件夹)
    • rm 删除目录(文件夹)
    • cd 进入目录(文件夹)
    • cd .. 返回上级目录(文件夹)
    • cd \ 返回根目录(文件夹)

    1、用 mkdir 命令,建立项目文件夹,并用 cd 命令进入该目录(这里以 TestMVC 文件夹为例)。

    mkdir TestMVC
    cd TestMVC
    

    2、开始建立解决方案和项目

    记住几个重要的 .NET Core 的命令:

    • 所有的指令,都是以 dotnet 开始的
    • dotnet new 新建内容,可以输入这个命令,后面不加任何内容,直接回车,可看到帮助说明,就知道了。
    • dotnet new sln 新建解决方案
    • dotnet new mvc 新建 MVC 项目(含项目结构和实例文件)
    • dotnet new classlib 新建类库(即:Business 项目,其它项目以此类推)
    • 在命令后面添加 -o 参数,表示:新建的内容指定在哪个目录下(即:Output 的意思)

    2.1 进入TestMVC 目录后,新建解决方案

    // 后面无参的话,该命令会生成和当前目录名称同名的解决方案
    // 如果需要了解各个参数,请详阅官方文档
    dotnet new sln
    

    2.2 新建 TestMVC.Web 项目,并将其添加到解决方案中

    dotnet new mvc -o TestMVC.Web
    
    dotnet sln add TestMVC.Web/TestMVC.Web.csproj
    

    注意:MVC 项目建立好之后,默认框架为:netcoreapp1.1。

    2.3 新建 TestMVC.Business 项目,并将其项目添加到解决方案中

    dotnet new classlib -o TestMVC.Business
    
    dotnet sln add TestMVC.Business/TestMVC.Business.csproj
    

    注意:Lib 项目建立好之后,默认框架为:netstandard1.4。

    2.4 在 TestMVC.Web 项目中添加 TestMVC.Business 的引用(这一步,目前网上很多内容都是老版本的方式,v1.1之后,改动很大,已经删除了 project.json 这个文件,MS 的意思是直接修改 csproj 文件。这也从侧面说明 .NET Core 目前还不能说完全稳定了。)

    // 方法一:使用 dotnet 命令自动添加
    dotnet add TestMVC.Web/TestMVC.Web.csproj reference TestMVC.Business/TestMVC.Business.csproj
    
    // 方法二:手动修改配置文件添加
    // 打开 TestMVC.Web.csproj 文件,添加以下 xml 内容:
    <ItemGroup>
        <ProjectReference Include="..\TestMVC.Business\TestMVC.Business.csproj" />
    </ItemGroup>
    

    2.5 释放整个项目的“包”,并起飞~~~

    dotnet restore   // 释放包
    
    // 由于 run 命令已经包含了编译动作,所以,就不用单独 build 命令了
    // 这里写出来,以备不时之需
    // dotnet build
    
    dotnet run   // 运行
    
    // 如果需要发布,可用 publish 命令
    // dotnet publish
    

    2.6 打开浏览器,输入:http://localhost:5000,即可看到!

    写在最后

    • .NET Core 在 macOS 上是基于 Mono 的(估计非 Windows 平台的都是基于此的),微软估计会参与优化甚至重写这个底层,毕竟已经成立了 .NET 基金了。
    • .NET Core 引入了 Package(包)的概念,彻底从原来臃肿的大而全的束缚中,解脱出来了,不得不说这是个壮举!赞一个!
    • 正因为解脱出来了,加之新推出的 Web 服务器核心:Kestrel!运行性能等各方面的负担都要小得多了,速度不谓不快!
    • 从原来的引用 DLL 变为现在的引用 Package,才有了上面 2.5 步骤中我称之为“释放包”的步骤。
    • IIS 在 .NET Core 体系中的角色,已经变为了反向代理(需要安装:.NET Core Windows Server Hosting 软件包)的服务器了。所以,在 IIS 中,建立网站选择应用程序池的时候,不再选择托管代码

    最后的最后

    .NET 整体框架,貌似还没完全统一。目前,这些概念貌似还有点容易混淆:

    • .NET Stardand(我理解为以后 .NET 框架的最底层)
    • .NET Framework(我理解为现行的这个Windows平台的分发包)
    • .NET Core(我理解为跨平台的分发包)
    • XAMARIN(目前本人暂无涉及)

    以上这几个的理解,就是导致了新建的 MVC 和 Lib 的默认框架不一致的原因。

    大致结构如下所示(来自官网):

    各版本对应关系图(来自官网):

    相关文章

      网友评论

          本文标题:初尝 macOS Sierra 下的 .NET Core

          本文链接:https://www.haomeiwen.com/subject/ykxunttx.html