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 命令生成项目并创设 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”。

例子

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
的事无巨细内容做了教学。

相关文章

网站地图xml地图