Nuget打包类库

NuGet是个开源项目,项目包含 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等体系,.NET Core项目完全接纳Nuget 管理组件之间的依附关系,Nuget已经变为.NET 生态系统中不可缺少的1个零件,从类型角度,将品种中各个零件的引用统统付给NuGet,增加组件/删除组件/以及立异组件就能够1键完了,大大进步工效,减弱不要求的引用报错。从运转角度,可在不影响老版本的情状下宣布新本子,可统1保管公司种种档期的顺序中组件版本分歧和各样版本组件的应用景况,裁减故障产生以并使得项目稳固运行。

在此以前做nuget包大家一般如故用命令行,要么用nuget的图形化分界面去做,可是有的操作相比麻烦.比如引入命名空间,引进第一方nuget包。这几个在.NET
Core项目里却一点也不细略,只须求使用命令行dotnet pack,在.NET Core类别 :
壹、.NET Core
碰到搭建和命令行CLI入门

做了简介,上面大家来详细介绍下那些命令。

dotnet-pack – 将代码打包成 NuGet 包

概要

dotnet pack [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix] [<project>]

描述

dotnet pack 命令生成项目并创设 NuGet 包。那些操作的结果是七个 nupkg
增添名的包。3个饱含代码,另一个分包调节和测试符号。

该项目被依赖的 NuGet 包装被增加到 nuspec
文件,由此,他们能够在装置包时获得化解。
默许情况下,项目到花色里面包车型大巴引用是不打包到项目中的。即使你想那样做,你须要在您的注重性中引用须求项目的
type 节点设置为 “build” ,设置就像上边包车型大巴例子:

{
    "version": "1.0.0-*",
    "dependencies": {
        "ProjectA": {
            "target": "project",
            "type": "build"
        }
    }
}

暗中认可情形下,dotnet pack 首先生成项目。假诺您想幸免那样,传递
--no-build
选项。那在时时刻刻集成(CI)创设场景,正如您所通晓代码仅仅是预生成的言传身教,是很有用的。

选项

[project]

装进的等级次序。它还足以是叁个 project.json
文件的门路或然是目录。假使大意,它将暗中同意为当前目录。

-o, --output [DIR]

点名生成的目录。

--no-build

卷入进度中跳过生成阶段。

--build-base-path

点名一时半刻转移产物的目录。暗中同意情况下,它们在当前目录的 obj 目录。

-c, --configuration [Debug|Release]

当生成项目时使用的配置。假若没有点名,将默以为 “Debug”。

例子

dotnet pack

装进当前项目。

dotnet pack ~/projects/app1/project.json

打包 app1 项目。

dotnet pack --output nupkgs

包装当前的应用程序,并将转变的包放置到钦命的文本夹中。

dotnet pack --no-build --output nupkgs

包裹当前的花色到钦命的文本夹中,并跳过生成步骤

 

回去大家在.NET Core种类 :三、使用几个类型
创造的类库项目DotnetNewLib,切换成DotnetNewLib 目录下实行 dotnet
pack命令:

[root@Mono DotnetNewLib]# dotnet pack
Project DotnetNewLib (.NETStandard,Version=v1.6) was previously
compiled. Skipping compilation.
Producing nuget package “DotnetNewLib.1.0.0” for DotnetNewLib
DotnetNewLib ->
/root/DotnetNewLib/bin/Debug/DotnetNewLib.1.0.0.nupkg
Producing nuget package “DotnetNewLib.1.0.0.symbols” for DotnetNewLib
DotnetNewLib ->
/root/DotnetNewLib/bin/Debug/DotnetNewLib.1.0.0.symbols.nupkg

 

目录结构如下:

DotnetNewLib

|– Library.cs

|– project.json

|– project.lock.json

+—bin

     +—Debug

              |– DotnetNewLib.1.0.0.nupkg

              |– DotnetNewLib.1.0.0.symbols.nupkg

              +– netstandard1.6

                          |– DotnetNewLib.deps.json

                          |– DotnetNewLib.dll

                          +– DotnetNewLib.pdb

 

上边包车型大巴构造里小编把obj目录拿掉了,大家看看在Debug目录下生成了三个文件DotnetNewLib.一.0.0.nupkg
和DotnetNewLib.1.0.0.symbols.nupkg, 这个正是nuget
包,很简短吗,版本号音讯来源于project.json文件:

{
  “version”: “1.0.0-*”,
  “buildOptions”: {
亚洲必赢bwin696.com,    “debugType”: “portable”
  },
  “dependencies”: {},
  “frameworks”: {
    “netstandard1.6”: {
      “dependencies”: {
        “NETStandard.Library”: “1.6.0”
      }
    }
  }
}

而是自个儿生成的是Debug,大家生成Release 版本:

dotnet pack -c Release

[root@Mono DotnetNewLib]# dotnet pack -c Release
Project DotnetNewLib (.NETStandard,Version=v1.6) will be compiled
because expected outputs are missing
Compiling DotnetNewLib for .NETStandard,Version=v1.6

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:03.4976986

Producing nuget package “DotnetNewLib.1.0.0” for DotnetNewLib
DotnetNewLib ->
/root/DotnetNewLib/bin/Release/DotnetNewLib.1.0.0.nupkg
Producing nuget package “DotnetNewLib.1.0.0.symbols” for DotnetNewLib
DotnetNewLib ->
/root/DotnetNewLib/bin/Release/DotnetNewLib.1.0.0.symbols.nupkg

生成了Release目录

DotnetNewLib

|– Library.cs

|– project.json

|– project.lock.json

+—bin

     +—Debug

              |– DotnetNewLib.1.0.0.nupkg

              |– DotnetNewLib.1.0.0.symbols.nupkg

              +– netstandard1.6

                          |– DotnetNewLib.deps.json

                          |– DotnetNewLib.dll

                          +– DotnetNewLib.pdb

     +—Release

              |– DotnetNewLib.1.0.0.nupkg

              |– DotnetNewLib.1.0.0.symbols.nupkg

              +– netstandard1.6

                          |– DotnetNewLib.deps.json

                          |– DotnetNewLib.dll

                          +– DotnetNewLib.pdb

在Release目录下 生成了二个文本DotnetNewLib.1.0.0.nupkg
和DotnetNewLib.1.0.0.symbols.nupkg,第多少个公文正是我们想要的nuget包。我们来看下Nuget
包里的具体内容,我们得以用

 NuGet Package
Explorer

工具张开DotnetNewLib.1.0.0.nupkg:

亚洲必赢bwin696.com 1

里面仅有2个 lib 文件 netstandard壹.陆 目的安顿文件。那意味,我们 NuGet
包只适用于.Net Core 应用程序 针对 NetStandard一.陆 (和就要到来的
肆.陆.三),作品 拥抱.NET Core,怎么样支付3个跨平台类库
(1)

对Nuget包做了很好的求证了,推荐我们阅读,
园子里还有一篇《用命令行工具创立 NuGet
程序包
》对Nuget
的详细内容做了讲学。

相关文章