如何在Mac下運(yùn)行ASP.NET Core應(yīng)用程序
通過(guò)參照.NET Core相關(guān)官方文檔,在我的Mac電腦上用Visual Studio Code創(chuàng)建了我的第一個(gè)ASP.NET應(yīng)用。
開(kāi)發(fā)環(huán)境搭建
首先要先安裝.Net Core和Visual Studio Code,并且要給Visual Studio Code安裝 C# extension,另外要到nodejs.org 安裝Node.js和npm。
利用Yeoman搭建應(yīng)用
由于我們?cè)诎惭bNode.js時(shí)自帶的npm地址是墻外,npm install有可能沒(méi)有反應(yīng)或者很卡。所以本文所有的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是一個(gè)戴帽子的男人。它其實(shí)是一個(gè)工作流,這個(gè)工作流包含了三種用來(lái)提升你構(gòu)建一個(gè)Web應(yīng)用的生產(chǎn)力和滿意度的工具: 腳手架工具(yo), 構(gòu)建工具(Gulp,Grunt等), 包管理工具(比如npm和Bower)。
使用yo aspnet來(lái)運(yùn)行ASP.NET Core generator,以生成一個(gè)Web Application基礎(chǔ)模板。
- yo aspnet
yo aspnet生成的模板都是基于大家熟悉的Visual Studio 2015上的模板,這個(gè)模板維護(hù)在ASP.NET Templates project。
然后會(huì)提示W(wǎng)hat type of application do you want to create?
這里選擇Web Application Basic [without Membership and Authorization]并回車。
接著會(huì)提示W(wǎng)hich UI framework would you like to use?
這里選擇Bootstrap (3.3.6) as the UI framework并回車。
用MyFirstApp作為應(yīng)用名稱并回車。如下圖:
此時(shí)generator會(huì)生成項(xiàng)目的基礎(chǔ)框架文件,然后提示你分別執(zhí)行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
至此,打開(kāi)本地的瀏覽器在地址欄輸入:http://localhost:5000,即可訪問(wèn)你創(chuàng)建的第一個(gè)程序。
使用Visual Studio Code開(kāi)發(fā)應(yīng)用
用Visual Studio Code打開(kāi)剛剛創(chuàng)建的項(xiàng)目,通過(guò)快捷鍵⌘⇧P輸入dot,選擇dotnet: Restore Packages來(lái)restore必要的build和debug項(xiàng)目依賴。可以在VS Code中直接運(yùn)行包括dotnet restore在內(nèi)的命令和所有在project.json文件中引用到的工具以及在.vscode/tasks.json中自定義的任務(wù)。
你還可以通過(guò)快捷鍵⌃`調(diào)出集成在VS Code里面的控制臺(tái)。
對(duì)于未被用到的using語(yǔ)句會(huì)被標(biāo)記一道綠色波浪線,鼠標(biāo)移到上面還有顯示一個(gè)黃色小燈泡,此時(shí)你可以使用⌘ .移除它們;類和方法也會(huì)顯示它們?cè)谠擁?xiàng)目中被引用的次數(shù);還可以通過(guò)⌘KC來(lái)添加代碼塊注釋,通過(guò)⌘KU來(lái)取消注釋。
點(diǎn)擊VS Code左側(cè)調(diào)試窗格中的綠色三角形的調(diào)試按鈕,可能會(huì)在頂部出現(xiàn)一個(gè)錯(cuò)誤提示信息:
根據(jù)錯(cuò)誤提示可知,我們需要配置launch.json文件里面的program為實(shí)際的可執(zhí)行文件。
配置成功后,我們可以給程序設(shè)置斷點(diǎn)、添加監(jiān)視等。
最終程序會(huì)調(diào)出本地默認(rèn)的瀏覽器程序并導(dǎo)航到http://localhost:5000,效果如下:
基于Kestrel本地運(yùn)行應(yīng)用
本示例采用Kestrel作為Web服務(wù)器,可以在project.json里看到它被作為一個(gè)依賴項(xiàng)。
KestrelHttpServer服務(wù)器是微軟推出的唯一一款基于跨平臺(tái)網(wǎng)絡(luò)庫(kù)libuv的跨平臺(tái)Web服務(wù)器。 通過(guò)代碼可以發(fā)現(xiàn)通過(guò)調(diào)用IWebHostBuilder的UseKestrel擴(kuò)展方法即可完成對(duì)KestrelHttpServer的注冊(cè)。
- 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);
- });
- }
- }
- }
【本文為51CTO專欄作者“朱成林”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】