ASP.NET Core 1.0 中的依賴項管理¶
警告
您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnet5-dependency-management.html
提示
更新時間:2016年01月20日。
做過實際開發的都知道,我們需要引用各種各樣的類庫來幫助我們完成項目的開發。 本文將從服務器端和瀏覽器端兩個方面介紹ASP.NET Core 1.0 中的依賴項管理。
服務器端代碼使用 Nuget 作為包管理器¶
對於已經習慣使用 Visual Studio 2015 作為開發工具的碼農們應該對 Nuget 不陌生,這里不做介紹了。 但有一點需要說明,它在管理服務器端類庫的時候確實給我們提供了很大的便利,但不可否認的是它在瀏覽器端類庫的管理上還很欠缺。
注解
如果你不是在Windows平台上開發,也沒有關系,你依然能使用服務器端的包管理器,只不過沒有漂亮的UI而已。
Nuget的包引用在在項目文件 project.json
中的 dependencies
處定義。 dependencies
有兩個位置,一處是對於所有的 frameworks 均適用的,另一處是在某個framework中。 比如下面的引用中,在 dnxcore50
的位置我引用了 System.Console
,而 dnx451
本身很龐大,已經自帶了 Console 的功能,因此就無需再包含。
小技巧
dnxcore50
框架,微軟做了大幅的裁剪,只包含了最最基礎的代碼,如果你需要使用Linq或者其他你認為很常用的,都是需要像第33行一樣進行引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"tooling": {
"defaultNamespace": "basic"
},
"dependencies": {
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": {},
"dnxcore50": {
"dependencies": {
"System.Console": "4.0.0-beta-*"
}
}
}
}
|
使用 Visual Studio 2015 時,每次修改project.json文件會自動觸發還原,但在其他情況下,需要手動執行:
dnu restore
瀏覽器端代碼使用 Bower 作為包管理器¶
Bower是一個web包管理器,可以安裝和還原客戶端的依賴包,同時能自動幫我們處理依賴關系,目前已經有超過3萬個包可用。 Nuget 包管理器的依賴項定義在 project.json
中,而 Bower 的則定義在 bower.json
中。
通常情況下,我們創建一個非空的項目后,Bootstrap和jQuery這兩個包就已經安裝好了。
1 2 3 4 5 6 7 8 9 10 |
{
"name": "basic",
"private": true,
"dependencies": {
"bootstrap": "3.3.5",
"jquery": "2.1.4",
"jquery-validation": "1.14.0",
"jquery-validation-unobtrusive": "3.2.4"
}
}
|
警告
事實上,對於 Mac/Linux 平台,上述2個包的依賴關系已經在 bower.json 寫好,但兩個包的內容卻並沒有下載到本地。 網站運行的時候沒有出現問題是因為網站默認先從微軟的CDN中獲取文件,僅當CDN獲取失敗時才轉而從本地獲取。
安裝 d3 繪圖引擎¶
如果我們需要引用新的包,比如用於數據展示的 d3
, 只需要添加如下一行內容即可。
1 2 3 4 5 6 7 8 9 10 11 |
{
"name": "basic",
"private": true,
"dependencies": {
"bootstrap": "3.3.5",
"d3": "~3.5.10",
"jquery": "2.1.4",
"jquery-validation": "1.14.0",
"jquery-validation-unobtrusive": "3.2.4"
}
}
|
小技巧
使用 ~3.5.10
表示引用 3.5.x
的最新版, 也可使用 ^3.5.10
來表示引用 3.x.x
的最新版。
保存文件,Visual Studio 2015 會自動幫你下載 d3
,下載好的文件會位於 wwwroot\lib\d3
文件夾下。

注解
對於 Mac/Linux 平台,每次修改 bower.json 后,都需要手動運行 bower install
命令。
小技巧
非常不建議手動更改 wwwrootlib 文件夾下的任何內容,因為運行 bower install
便會覆蓋已有的更改。
ASP.NET Core 1.0 中的依賴項管理 由 勤奮的小孩 創作,采用 知識共享 署名-相同方式共享 4.0 國際 許可協議進行許可。
本許可協議授權之外的使用權限可以從 http://space.cnblogs.com/msg/send/qin-nz 處獲得。