1. 什么是.NET執(zhí)行環(huán)境 ?
.NET Execution Environment(DNX) 是一個SDK 和運行時環(huán)境,它包含所有的你需要創(chuàng)建和運行.net應(yīng)用程序的組件。它提供一個主機進程,CLR宿主邏輯和管理入口點。DNX是為執(zhí)行跨平臺的asp.net的Web應(yīng)用程序而創(chuàng)建的。但是它也能執(zhí)行其它類型的.net應(yīng)用程序,如控制臺應(yīng)用程序。
2. 為什么創(chuàng)建DNX ?
DNX提供一個在不同平臺開發(fā)和執(zhí)行的環(huán)境。你可以用DNX在一種平臺上面開發(fā),然后部署到另一個平臺上面去。
DNX簡化了開發(fā)跨平臺的應(yīng)用程序, 它負責的給CLR宿主,處理依賴和啟動你的應(yīng)用程序。你可以通過輕量級的json配置文件定義你的應(yīng)用程序,建立你的工具并發(fā)布它。
包的管理完全地改變了現(xiàn)在應(yīng)用的開發(fā),DNX使其很容易地創(chuàng)建和應(yīng)用包。DNX提供工具安裝、創(chuàng)建、管理NuGet包。DNX工程簡化了利用交叉編譯為不同的構(gòu)架生成不同的NuGet包。你可以直接引用NuGet包和還有依賴。你也可以創(chuàng)建和安全開發(fā)工具
DNX使其很容易與開源的工程一起工作,通過DNX你可以很容易地用源代碼替換掉一個已經(jīng)存在的依賴。讓DNX在運行時編譯,然后你可以Debug源代碼和修改它。
3. 工程
一個DNX的工程是一個含有 "descr "authors" : ["daroth"], "tags": [ "" ], "projectUrl": "", "licenseUrl": "", "frameworks":{ "net451": {}, "dotnet5.4":{ "dependencies":{ "Microsoft.CSharp": "4.0.1-beta-23516", "System.Collections": "4.0.11-beta-23516", "System.Linq": "4.0.1-beta-23516", "System.Runtime":"4.0.21-beta-23516", } } } } } 在"frameworks"屬性下面你可以聲明你需要哪個構(gòu)架來構(gòu)建你的應(yīng)用。 DNX可以交叉編譯每一個構(gòu)架創(chuàng)建相應(yīng)的lib目錄。 你可以利用 .NET Development Utility(DNU)來創(chuàng)建,打包和發(fā)布DNX工程, 生成二進制文件。打包可以生成NuGet package,然后上傳到package feed. 發(fā)布是把所有相關(guān)的組件打包到一個獨立的文件當中以便發(fā)布當前應(yīng)用。 4. 依賴 依賴在DNX由名字和版本號組成。版本號應(yīng)該遵循語義版本(主版號-次版本號-補丁). 典型的依賴參考安裝的NuGet包或者另一個DNX工程。工程的引用在當前目錄引用或者用global.json在解決方案一級: { "projects": ["src", "test"], "sdk": { "version":"1.0.0-rc1-final" } } global.json文件也定義了最小的DNX版本以用來創(chuàng)建當前的工程。 依賴是可以傳遞的,你可以只在最頂級申明你的依賴。DNX可以下載整個依賴圖用安裝的NuGet包。工程依賴生成在運行時在生成工程的時候,這樣可以使你靈活地用二進制工作或者源文件部署你的DNX應(yīng)用。 5. 包和摘要 對包的引用你首先要安裝你的包,你可以用DNU去去安裝下載新的包到目前的或者重新恢復(fù)所有的依賴。下面的命令是下載和安裝所有的在project.json里申明的所有包: dnu restore 包被重置利用配置的包文件。可以配置包的摘要用NuGet.config 6. 命令 一個命令是一個命名的.net運行的入口。你可以在project.json文件中定義命令: "commands":{ "web":"Microsoft.AspNet.Server.Kestrel", "ef":"EntityFramework.Commands" }, 你可以像下面這樣來用DNX執(zhí)行你的命令: dnx web 命令可以做為NuGet包的形式被創(chuàng)建和發(fā)布, 你可以用DNU去安裝全局的命令: dnu commands install MyCommand 7. 應(yīng)用宿主 DNX應(yīng)用程序宿主是被DNX第一個調(diào)用的管理入口,負責處理依賴,解釋project.json, 提供其它的服務(wù)和調(diào)用應(yīng)用程序的入口。 另外,你可以用直接DNX調(diào)用你的應(yīng)用程序入口。用DNX而不用DNX 應(yīng)用宿主并不是很常見。 DNX應(yīng)用宿主提供一系統(tǒng)的應(yīng)用程序依賴(如IServiceProvider, IapplicationEnvironment和ILoggerFactory).應(yīng)用程序宿主服務(wù)可以在你的主入口中被注入到構(gòu)造函數(shù)當中。 8. 編譯模塊 編譯模塊是一個可以擴展的點,可以讓你參與 到DNX編譯的過程當中。你可以通過實現(xiàn)ICompileModule接口來實現(xiàn)你自己的編譯模塊,然后放到compiler/preprocess或者compiler/postprocess當中去。 9. DNX版本管理 你可以安裝不同的DNX版本到你機器上去。你可以用.NET Version Manager(DNVM)來管理不同的DNX版本。DNVM可以讓你在你的機器上面列出不同的DNX版本, 安裝不同的版本轉(zhuǎn)換當前激活的版本。
新聞熱點
疑難解答