在Mac下運行ASP.NET Core應用程序


在Mac下運行ASP.NET Core應用程序

通過參照.NET Core相關官方文檔,在我的Mac電腦上用Visual Studio Code創建了我的第一個ASP.NET應用。

開發環境搭建

首先要先安裝.Net CoreVisual Studio Code,並且要給Visual Studio Code安裝
C# extension,另外要到nodejs.org
安裝Node.js和npm。

利用Yeoman搭建應用

由於我們在安裝Node.js時自帶的npm地址是牆外,npm install有可能沒有反應或者很卡。所以本文所有的npm安裝都使用了淘寶NPM鏡像:

npm install cnpm -g --registry=https://registry.npm.taobao.org

使用npm安裝必要的yeoman generators和bower。

sudo cnpm install -g yo generator-aspnet bower

Yeoman的logo是一個戴帽子的男人。它其實是一個工作流,這個工作流包含了三種用來提升你構建一個Web應用的生產力和滿意度的工具:
腳手架工具(yo), 構建工具(Gulp,Grunt等), 包管理工具(比如npm和Bower)。

使用yo aspnet來運行ASP.NET Core generator,以生成一個Web Application基礎模板。

yo aspnet

yo aspnet生成的模板都是基於大家熟悉的Visual Studio 2015上的模板,這個模板維護在ASP.NET Templates project

然后會提示What type of application do you want to create?

這里選擇Web Application Basic [without Membership and Authorization]並回車。

接着會提示Which UI framework would you like to use?

這里選擇Bootstrap (3.3.6) as the UI framework並回車。

MyFirstApp作為應用名稱並回車。如下圖:


此時generator會生成項目的基礎框架文件,然后提示你分別執行restore,build,run命令。

Your project is now created, you can use the following commands to get going
    cd "MyFirstApp"
    dotnet restore
    dotnet build (optional, build will also happen with it‘s run)
    dotnet run




至此,打開本地的瀏覽器在地址欄輸入:http://localhost:5000,即可訪問你創建的第一個程序。

使用Visual Studio Code開發應用

用Visual Studio Code打開剛剛創建的項目,通過快捷鍵⌘⇧P輸入dot,選擇dotnet: Restore Packagesrestore必要的build和debug項目依賴。可以在VS Code中直接運行包括dotnet restore在內的命令和所有在project.json文件中引用到的工具以及在.vscode/tasks.json中自定義的任務。

你還可以通過快捷鍵⌃`調出集成在VS Code里面的控制台。

對於未被用到的using語句會被標記一道綠色波浪線,鼠標移到上面還有顯示一個黃色小燈泡,此時你可以使用⌘ .移除它們;類和方法也會顯示它們在該項目中被引用的次數;還可以通過⌘KC來添加代碼塊注釋,通過⌘KU來取消注釋。

點擊VS Code左側調試窗格中的綠色三角形的調試按鈕,可能會在頂部出現一個錯誤提示信息:

根據錯誤提示可知,我們需要配置launch.json文件里面的program為實際的可執行文件。

配置成功后,我們可以給程序設置斷點、添加監視等。

最終程序會調出本地默認的瀏覽器程序並導航到http://localhost:5000,效果如下:

基於Kestrel本地運行應用

本示例采用Kestrel作為Web服務器,可以在project.json里看到它被作為一個依賴項。

KestrelHttpServer服務器是微軟推出的唯一一款基於跨平台網絡庫libuv的跨平台Web服務器。
通過代碼可以發現通過調用IWebHostBuilder的UseKestrel擴展方法即可完成對KestrelHttpServer的注冊。

namespace Microsoft.AspNetCore.Hosting
{
    public static class WebHostBuilderKestrelExtensions
    {
        public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder)
        {
            return hostBuilder.ConfigureServices(services =>
            {
                services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
                services.AddSingleton<IServer, KestrelServer>();
            });
        }

        public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder,
                                                Action<KestrelServerOptions> options)
        {
            return hostBuilder.UseKestrel().ConfigureServices(services =>
            {
                services.Configure(options);
            });
        }
    }
}

參考資源

個人博客

我的個人博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM