nuget nuspec清单描述

创建NuGet包

在创建一个NuGet包之前我们应该先创建一个以.nuspec为后缀的xml清单文件,这个清单文件描述了包的内容,在安装NuGet包的过程中这个清单文件扮演者很重要的角色。实际上它的作用就像app.config一样,并且是不可或缺的一部分,因此在了解如何创建一个NuGet包之前很有必要了解一下什么是nuspec清单文件。

什么是.nuspec清单文件

nuspec文件是一个xml格式的清单文件,它用于描述包的内容和驱动包的生成过程。下面是一个典型的nuspec文件定义:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <!-- 包的id,在托管库内必须唯一 -->
    <id>xxx.xxx.xxx</id>

    <!-- 解析依赖项时使用的包版本号 -->
    <version>1.0.0.1</version>

    <!-- 在库中显示的作者 -->
    <authors>nizhenghua</authors>

    <!-- 库的拥有者,便于用户能够轻松的获取到该拥有者发布的其他的包  -->
    <owners>nizhenghua</owners>

    <!-- 项目的许可和地址(比如将源代码发布到Github上时可以在此填写许可和) -->
    <licenseUrl>http://opensource.org/licenses/MS-PL</licenseUrl>
    <projectUrl>http://github.com/nizhenghua</projectUrl>

    <!-- 在Visual Studio中的可视化包管理器中展示的图标 -->
    <iconUrl>http://xxxxxxxxxx.png</iconUrl>

    <!-- 在用户安装包的时候是否提示接受许可信息 -->
    <requireLicenseAcceptance>false</requireLicenseAcceptance>

    <!-- 发布记录 -->
    <releaseNotes>Bug fixes and performance improvements</releaseNotes>

    <!-- 包的描述信息 -->
    <description>xxxxxxxxxxxxxxxxx</description>

    <!-- 版权 -->
    <copyright>Copyright ©2016 xxxxx</copyright>

    <!-- 标签,用户可通过标签进行搜索 -->
    <tags></tags>

    <!-- 包的依赖关系,在安装包的时候会自动安装所有依赖 -->
    <dependencies>
      <dependency id="Newtonsoft.Json" version="9.0" />
    </dependencies>
    </metadata>

    <!-- 当包安装完成的时候会自动展示readme.txt(包不能是依赖项目) -->
    <files>
    <file src="readme.txt" target="" />
    </files>
</package>

nuspec中必须包含以下的信息:

  • id:标识符,在托管库内必须唯一
  • version
  • title:用于在NuGet库中显示
  • authors
  • owners
  • description

除此之外还可以包含releaseNotes、coptright、tags等其他信息。


使用nuget命令行工具创建nuspec清单文件

  • 通过项目创建
    定位到包含csproj项目文件的目录,执行nuget spec

  • 通过已有的dll创建
    nuget spec dll路径

  • 通过基于约定的目录创建

    文件夹描述安装时的操作
    toolspowershell脚本和命令行程序内容会复制到项目,tools文件夹会添加到环境变量
    libdll、xml、pdb等文件dll会添加到引用,xml和pdb复制到项目
    content任意文件内容复制到项目根目录
    buildMSBuild target和props文件自动插入到项目文件(NuGet2.x)或project.json.lock(NuGet3.x)

设置包类型

  • Dependency:在兼容的前提下可以在任何项目中安装
  • DotnetCliTool:作为.NET CLI的扩展,必须在命令行调用,且只能在.NET Core项目中使用
  • Custome

创建NuGet包

nuget pack xxx.nuspec

nuget pack xxx.csproj

如果在当前nuspec清单文件夹下使用命令可以简写:nuget pack

编译设置

nuget pack xxx.csproj -properties Configuration = Release

包含符号文件

使用 nuget pack xxx.csproj -symbols 将符号信息一起打进包内

依赖项的版本号设置

可以在nuspec清单中自行设置对其他包的依赖信息。例如:
<dependencies> <dependency id="Newtonsoft.Json" version="9.0" /> <dependency id="EntityFramework" version="6.1.0" /> </dependencies>

设置的依赖项会在该包安装完成后自行安装。其中最重要的属性就是Version,一个包通过不停的更新迭代可能会有多个版本,可以通过Version来指定依赖的是包的哪个版本。NuGet也提供了一组指定版本范围的符号使得我们可以更加灵活的设置依赖项的版本号。

符号应用规则描述
1.0x >= 1.0大于等于1.0版本
(,1.0)x < 1.0小于1.0版本
(1.0,)x > 1.0大于1.0版本
[,1.0]x <= 1.0小于等于1.0版本
[1.0,]x >= 1.0大于等于1.0版本
(1.0,2.0]1.0 < x <= 2.0大于1.0版本,小于等于2.0

这种表示方法和数学上的集合类似,小括号表示的区间不包含端点,中括号包含端点

3.4版本后对版本号会做一些特殊处理

  • 删除版本号的前导0 如1.00.1会被处理成1.0.1

  • 删除版本号第四部分的0 如1.0.1.0会被处理成1.0.1

在2.5版本之前,如果在安装包的过程中已经安装了依赖的包,那么会自动升级到最新的版本,2.5之后的版本不会再安装已经存在的包

转载于:https://my.oschina.net/TOW/blog/3074613

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值