閱讀目錄:
如果一兩個月不去關注 .NET 跨平臺的一些東西,再次進行學習就會很吃力,而且有很多新的變化,是你不知道的,比如命名的變化等。之前有嘗試過 asp.net 5 在 Windows 環境中的部署,包括在 IIS 或非 IIS 環境中,但應用程序創建的非常簡單,就是使用 Visual Studio 2015 創建 ASP.NET 5 應用程序,之后你就不需要關心 ASP.NET 5 的運行環境該怎么搭建,Visual Studio 2015 會幫你自動生成,然后你把這一坨文件(包含代碼和程序包)拷貝到 Windows 服務器就可以了,最后敲一下 k run
或 k web
的命令,瀏覽器輸入 PRoject.json 中配置的服務器地址,就這么簡單。
但如果自己搭建 .NET 運行環境,會是怎樣的一種情況呢?就像 dudu 把所有 .NET 跨平臺的項目,在各個平臺 build 一遍,這個就不像上面敲幾個命令這么簡單了。今天在嘗試之前,對于技術小白的我來說,有幾個不知所措的地方(我相信你也是),記錄一下:
是不是有點迷茫呢?還好通過萬能的 Google,找到了這樣一篇文章:It is very easy to get started with .NET Core on your platform of choice.,文章很簡單,就是幾個命令行代碼,我喜歡簡單的東西,所以我決定按照上面的指示嘗試下,首先是最簡單的 Windows 平臺。
對于上面的幾個問題,可以通過實際操作的過程中,進行深入體會。
DNVM 是什么?DNVM 的前身是 KVM(K Version Manager),KVM 又是什么?KVM 是 KRE 的版本管理器,KRE 又又是什么?KRE 是 ASP.NET 5 應用程序的運行時,也就是 DNX 的程序包管理器,也就是 .NET 的程序包管理器,難道統一了?不知道。
安裝命令(PowerShell):
PS > &{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}
操作截圖:
不是應該要安裝 CoreCLR 嗎?為什么要按照 DNX?DNX 是什么?從上面的簡單解釋中,可以看到 DNX = .NET Core Execution Environment,注意 Execution,意為執行,.NET Core Execution Environment(DNX) = .NET Core runtime(CoreCLR) 嗎?很顯然,這兩個不是一個概念,一個是運行時,一個是執行環境,我個人理解,執行環境包含運行時,并且執行環境基于運行時,也就是 DNX base on CoreCLR,我之前一直以為 DNX 是 ASP.NET 5 應用程序的執行環境(GitHub 項目在 aspnet 下),但現在顯然不是,它應該是整個 .NET 應用程序的執行環境,下面我們創建一個控制臺程序就可以證明,廢話有點多,我們先安裝一下 DNX。
安裝命令(PowerShell):
PS > dnvm install -r coreclr latest -u
但是報下面的錯誤:
轉到安裝 DNX 的目錄,并再次執行命名:
根據提示,把 dnvm 改為 ./dnvm:
解決“因為在此系統中禁止執行腳本”問題,執行 set-ExecutionPolicy RemoteSigned
命令:
再次執行安裝 DNX 命令:
安裝成功:
為了增加工作量,我們不使用 Visual Studio 2015 創建應用程序,可以進行手寫,也可以使用 generator 進行快速創建,我們先按照文章的代碼進行編寫。
HelloWorld.cs:
using System; public class Program { public static void Main(string[] args){ Console.WriteLine("Hello World from Core CLR!"); } }
project.json:
{ "version": "1.0.0-*", "dependencies": { }, "frameworks" : { "dnx451" : { }, "dnxcore50" : { "dependencies": { "System.Console": "4.0.0-beta-*" } } } }
在上面我們創建了兩個文件:HelloWorld.cs 和 project.json,這是一個簡單不能再簡單的控制臺應用程序。
首先,轉到這個目錄下:
PS > cd C:/Users/Administrator/.dnx/application_test
然后執行恢復程序包命令:
PS > dnu restore
但是卻出現下面的錯誤:
很明顯,nuget 鏈接不上,從昨天下午到昨天晚上,一直在搞這個,抱著僥幸的心理,希望它有那么一瞬間是好的,但事與愿違,這個服務器是按時按量的,當時買的時候,想買美國的,但是阿里云說已經售罄,沒辦法,只能買的深圳的,今天早上又試了下,還是不行,轉到美國服務器購買頁面上,發現包年包月是可以買的(太無恥了),然后又買了一個月最低配,把深圳那個給釋放掉了。
在美國服務器上,重新運行命令(成功):
運行應用程序:
PS > dnu . run
運行結果:
這篇文章很簡單,但是個開始,也是我最近真正第一次嘗試跨平臺,上面的應用程序是簡單的控制臺,下面計劃用 generator 創建 ASP.NET 5 應用程序試試,然后再在 linux 和 Mac OS X 上搞搞。
就到這!
新聞熱點
疑難解答