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

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

    https://qinblog.blob.core.windows.net/images/basic-project-add-d3.png

    注解

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

    小技巧

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

    声明 知识共享许可协议

    ASP.NET Core 1.0 中的依赖项管理 勤奋的小孩 创作,采用 知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
    本许可协议授权之外的使用权限可以从 http://space.cnblogs.com/msg/send/qin-nz 处获得。

  • 相关阅读:
    ElasticSearch 常用的查询过滤语句
    ElasticSearch的 Query DSL 和 Filter DSL
    photoshop CS 调整选择区域的大小
    pthread_once重塑singleton模式
    SGU536 Berland Chess
    怎样实现多线程
    [置顶] Linux下将Nutch1.3导入eclipse
    ENC28J60学习笔记——第1部分
    再看copy_on_write缩小临界区的例子
    leetcode Roman Integer
  • 原文地址:https://www.cnblogs.com/qin-nz/p/aspnet5-dependency-management.html
Copyright © 2011-2022 走看看