1. 程式人生 > >ASP.NET Core 中的依賴項管理

ASP.NET Core 中的依賴項管理

伺服器端程式碼使用 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