.NET Core多平臺開發體驗[2]: Mac OS X

来源:http://www.cnblogs.com/artech/archive/2017/09/04/asp-net-core-hello-world-02.html
-Advertisement-
Play Games

除了微軟自家的Windows平臺, .NET Core針對Mac OS以及各種Linux(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支持,我們先來體驗一下使用Mac來開發.NET Core應用,在這之前我們照例先得構建我們的開發環境。 ...


除了微軟自家的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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [20170904]11Gr2 查詢游標為什麼不共用腳本.txt--//參考鏈接下麵的註解腳本:https://carlos-sierra.net/2017/09/01/poors-man-script-to-summarize-reasons-why-cursors-are-not-shared/ ...
  • 目錄 · Overview · Introduction · Use cases · Manual Setup · Assumption · Configuration · Startup & test · Principle · Topic · Distribution · Producer ·  ...
  • 網上有很多很好的PPT,可惜一般作者都加了名字和主題,現在我們就來說說如何修改PPT中左下方狀態欄的主題名稱。 如下圖所示,紅色方框內就是別人設置的主題。 網上很多網友都說:點擊"視圖" --》"幻燈片母版" --》"重命名" --》"修改" ,保存即可,但事實上並不行,下麵我來說說正確的方法吧。 ...
  • 下載rpm包見:http://www.cnblogs.com/grey-wolf/p/7472680.html 1、rz上傳到伺服器,解壓縮 2、安裝rpm包 註意:如果不是全新安裝,而是之前用rpm裝過,沒裝好,又卸載的情況下安裝,可能會出現如下情況: 在執行rpm -ivh mysql-comm ...
  • 本篇以我自己的網站為例來通俗易懂的講述網站的常見漏洞,如何防止網站被入侵,如何讓網站更安全。 要想足夠安全,首先得知道其中的道理。 本文例子通俗易懂,主要講述了 各種漏洞 的原理及防護,相比網上其它的web安全入門文章來說,本文更豐富,更加具有實戰性和趣味性。 本文講解目錄大致如下,講述什麼是暴力破 ...
  • http: https: ...
  • .NET Core 2.0應用程式減小體積瘦身官方工具 IL Linker。 IL Linker 來源於mono的linker https://github.com/mono/linker,目前還是預覽版本。 在一般的情況下,鏈接器可以將應用程式的大小減少50%,大型應用程式的大小可能更有利,鏈接器 ...
  • Razor功能非常強大,但是本身並不能做到無刷新,所以需要配合ajax使用 本文就做一個簡單例子,實現Razor配合ajax做到局部刷新。 首先,我們創建一個MVC項目 讓我們創建一個簡單的Controller Book 然後對其添加一個視圖,並且添加上一些簡單的Html代碼 這裡我添加了一個<di ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...