zoukankan      html  css  js  c++  java
  • ASP.NET Core 中的依赖项管理

    ASP.NET Core   中的依赖项管理

    提示

    更新时间: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 ,下载好的文件会位于 wwwrootlibd3 文件夹下。

    注解

    对于 Mac/Linux 平台,每次修改 bower.json 后,都需要手动运行 bower install 命令。

    小技巧

    非常不建议手动更改 wwwrootlib 文件夹下的任何内容,因为运行 bower install 便会覆盖已有的更改。

    原文地址:http://www.cnblogs.com/qin-nz/p/aspnet5-dependency-management.html


  • 相关阅读:
    jmeter(46) redis
    jmeter(45) tcp/ip协议
    Codeforces Round #538 (Div. 2)D(区间DP,思维)
    Codeforces Global Round 1D(DP,思维)
    Educational Codeforces Round 57D(DP,思维)
    UPC11073(DP,思维)
    Yahoo Progamming Contest 2019D(DP,思维)
    Atcoder Beginner Contest 118D(DP,完全背包,贪心)
    Xuzhou Winter Camp 1C(模拟)
    Educational Codeforces Round 57 (Rated for Div. 2)D(动态规划)
  • 原文地址:https://www.cnblogs.com/xiaoch/p/13417952.html
Copyright © 2011-2022 走看看