.NET Core 系列5 :使用 Nuget打包类库。.NET Core 系列5 :使用 Nuget打包类库。

by admin on 2018年10月13日
NuGet是单开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等档次,.NET Core项目完全采用Nuget 管理组件之间的依赖关系,Nuget已经化为.NET 生态系统中必不可少的一个零部件,从品种角度,将品种蒙各种零部件的援统统付给NuGet,添加组件/删除组件/以及创新组件即可一键好,大大提升工作效率,减少非必要之援报错。从运维角度,可在不影响一直版本的情事下发表新本子,可统一保管公司各个品种遭到组件版本不同和顺序版本组件的用状况,减少故障发生为并让项目稳定运行。

旧时开nuget包我们一般还是用命令执行,要么用nuget的图形化界面去做,但是有操作比较麻烦.比如引入命名空间,引入第三着nuget包。这些当.NET
Core项目里也十分粗略,只需要使用命令行dotnet pack,在.NET Core系列 :
1、.NET Core
环境多建筑及下令行CLI入门
做了大概介绍,下面我们来详细介绍下者令。

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

NuGet是单开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等品种,.NET Core项目完全使用Nuget 管理组件之间的负关系,Nuget已经变成.NET 生态系统中必不可少的一个零部件,从品种角度,将项目受到各种零部件的援统统付给NuGet,添加组件/删除组件/以及更新组件即可一键好,大大升级工作效率,减少非必要的援报错。从运维角度,可每当未影响一直版本的状况下发布新本子,可统一管理企业相继项目中组件版本不同和顺序版本组件的运用状况,减少故障发生因并使项目稳定运行。

早年举行nuget包我们一般要用命令执行,要么用nuget的图形化界面去开,但是一些操作比较麻烦.比如引入命名空间,引入第三正在nuget包。这些在.NET
Core项目里可死简短,只需要以命令行dotnet pack,在.NET Core系列 :
1、.NET Core
环境多建筑与指令行CLI入门
做了简约介绍,下面我们来详细介绍下之令。

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

概要

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

概要

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

描述

dotnet pack 命令生成项目并创立 NuGet 包。这个操作的结果是零星个 nupkg
扩展名的管教。一个暗含代码,另一个涵盖调试符号。

该项目让据之 NuGet 包装为补加到 nuspec
文件,因此,他们能在安包时得到化解。
默认情况下,项目到项目中的援是勿由包到花色中的。如果您想那么做,你需要在您的依靠中援得种之
type 节点设置为 “build” ,设置就如下的例证:

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

默认情况下,dotnet pack 首先生成为项目。如果你想避免这样,传递
--no-build
选项。这当频频集成(CI)构建场景,正而你所知代码仅仅是预生成的示范,是很有因此之。

描述

dotnet pack 命令生成项目并创 NuGet 包。这个操作的结果是简单个 nupkg
扩展名的保证。一个富含代码,另一个暗含调试符号。

拖欠型给依的 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”。

选项

[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系列 :3
、使用多独品类
创建的类库项目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目录下生成了2独公文DotnetNewLib.1.0.0.nupkg
和DotnetNewLib.1.0.0.symbols.nupkg, 这些就是是nuget
包,很简短吧,版本号信息来自于project.json文件:

{
  “version”: “1.0.0-*”,
  “buildOptions”: {
    “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目录下 生成了2独文本DotnetNewLib.1.0.0.nupkg
和DotnetNewLib.1.0.0.symbols.nupkg,第一个公文就是咱们怀念如果的nuget包。我们来拘禁下Nuget
包里之具体内容,我们可为此

 NuGet Package
Explorer
工具打开DotnetNewLib.1.0.0.nupkg:

亚洲必赢手机入口 1

内仅来一个 lib 文件 netstandard1.6 目标安排文件。这代表,我们 NuGet
包特适用于.Net Core 应用程序 针对 NetStandard1.6 (和将要来到的
4.6.3),文章 拥抱.NET Core,如何支付一个跨平台类库
(1)

本着Nuget包做了老大好的证实了,推荐大家看,
园子里还来雷同篇《因而命令行工具创建 NuGet
程序包》对Nuget
的详尽内容做了讲课。

例子

dotnet pack

包当前项目。

dotnet pack ~/projects/app1/project.json

打包 app1 项目。

dotnet pack --output nupkgs

包裹当前底应用程序,并将扭转的保管放置到指定的文书夹着。

dotnet pack --no-build --output nupkgs

装进当前底类型及指定的文件夹着,并跨越了弯步骤

 

回我们于.NET Core系列 :3
、使用多个档次
创建的类库项目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目录下生成了2个公文DotnetNewLib.1.0.0.nupkg
和DotnetNewLib.1.0.0.symbols.nupkg, 这些就是是nuget
包,很简短吧,版本号信息来自于project.json文件:

{
  “version”: “1.0.0-*”,
  “buildOptions”: {
    “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目录下 生成了2个文本DotnetNewLib.1.0.0.nupkg
和DotnetNewLib.1.0.0.symbols.nupkg,第一单公文就是我们纪念要之nuget包。我们来拘禁下Nuget
包里之具体内容,我们可以用

 NuGet Package
Explorer
工具打开DotnetNewLib.1.0.0.nupkg:

亚洲必赢手机入口 2

里面只有发生一个 lib 文件 netstandard1.6 目标安排文件。这意味,我们 NuGet
包就适用于.Net Core 应用程序 针对 NetStandard1.6 (和将到之
4.6.3),文章 拥抱.NET Core,如何开发一个跨平台类库
(1)

本着Nuget包做了深好的印证了,推荐大家看,
园子里还生一样首《于是命令行工具创建 NuGet
程序包》对Nuget
的详细内容做了讲学。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图