本篇文章给大家分享的是有关如何解析nuget nuspec清单,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
在创建一个NuGet包之前我们应该先创建一个以.nuspec
为后缀的xml清单文件,这个清单文件描述了包的内容,在安装NuGet包的过程中这个清单文件扮演者很重要的角色。实际上它的作用就像app.config一样,并且是不可或缺的一部分,因此在了解如何创建一个NuGet包之前很有必要了解一下什么是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>https://cache.yisu.com/upload/information/20210524/347/782120.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等其他信息。
通过项目创建
定位到包含csproj项目文件的目录,执行nuget spec
通过已有的dll创建
nuget spec dll路径
通过基于约定的目录创建
文件夹 | 描述 | 安装时的操作 |
---|---|---|
tools | powershell脚本和命令行程序 | 内容会复制到项目,tools文件夹会添加到环境变量 |
lib | dll、xml、pdb等文件 | dll会添加到引用,xml和pdb复制到项目 |
content | 任意文件 | 内容复制到项目根目录 |
build | MSBuild target和props文件 | 自动插入到项目文件(NuGet2.x)或project.json.lock(NuGet3.x) |
Dependency:在兼容的前提下可以在任何项目中安装
DotnetCliTool:作为.NET CLI的扩展,必须在命令行调用,且只能在.NET Core项目中使用
Custome
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.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,] | x >= 1.0 | 大于等于1.0版本 |
(1.0,2.0] | 1.0 < x <= 2.0 | 大于1.0版本,小于等于2.0 |
这种表示方法和数学上的集合类似,小括号表示的区间不包含端点,中括号包含端点
删除版本号的前导0 如1.00.1会被处理成1.0.1
删除版本号第四部分的0 如1.0.1.0会被处理成1.0.1
在2.5版本之前,如果在安装包的过程中已经安装了依赖的包,那么会自动升级到最新的版本,2.5之后的版本不会再安装已经存在的包
以上就是如何解析nuget nuspec清单,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。