如何将一个函数库以 nuget 包发布 - DigitalPlatform/dp2 GitHub Wiki
准备工作:
-
在 nuget.org 网站注册一个账号。
-
从 nuget.org 网站下载合适版本的 nuget.exe 工具程序。然后放在本地硬盘一个合适的目录,这个目录应该包含在 Windows 命令行的 Path 环境变量里面,这样无论在什么目录启动 Windows 命令行,都可以方便调用 nuget 命令。
-
打开 Windows 命令提示符,进入到 Project 所在目录。这个目录里面应该有 ?.csproject 文件存在
-
执行 nuget spec 命令。会自动创建一个 ?.nuspec 文件
-
用记事本打开这个 ?.nuspec 文件,略作编辑修改:
修改前是这个样子的:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
<projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
<iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
</package>
修改后是这个样子:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>https://github.com/DigitalPlatform/chord/blob/master/LICENSE</licenseUrl>
<projectUrl>https://github.com/DigitalPlatform/chord</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>First version release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>DigitalPlatform MARC chord ILS</tags>
</metadata>
</package>
具体来说,就是修改兑现了 licenseUrl 和 projectUrl 元素的内容;删除了 iconUrl 元素;修改了 releaseNotes 和 tags 元素内容。注意 releaseNotes 元素可以写一些关于最新改进的文字介绍。
- 检查项目的 AssemblyInfo.cs 文件内容
注意文件中的这些关键事项(为节省篇幅没有列出全部内容):
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("DigitalPlatform.MarcQuery")]
[assembly: AssemblyDescription("MARC 处理函数库")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("数字平台(北京)软件有限责任公司")]
[assembly: AssemblyProduct("DigitalPlatform.MarcQuery")]
[assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
记住如果对 AssemblyInfo.cs 文件做了修改,要重新 Build 一次。
-
在 Windows 命令提示符执行 nuget pack,就进行了打包,会自动创建一个 ?.nupkg 文件。文件名中包含了版本号。版本号是从刚才的 AssemblyInfo.cs 中得到的。
-
用 nuget.org 网站的 upload 功能上传这个 ?.nupkg 文件。大约过了一个小时以后它会发布出来,这时候才能在其他项目里面使用这个 nuget 包了。
Project 的 Property 中有一个 “打包” 属性页,勾选里面的“在版本中生成 nuget 包”。这样每次 Project Build 的时候都会自动生成 .nupkg 文件。不过需要注意在这个属性页指定好版本号。nuget 包每次上传到 nuget.org 网站的时候,都需要一个新的版本号,而已经存在的版本无法重复上传。
其他步骤和前面介绍的 .NET Framework 形式的 Project 相同。
.nupkg 一旦上传,永远不可能删除(只能选择后面“不列出”而已)。如果占用了包的 ID,则以后永远无法改派给其他的包使用。所以这一点务必注意,上传以前一定仔细检查各种事项,不要发生错误。