如何将一个函数库以 nuget 包发布 - DigitalPlatform/dp2 GitHub Wiki

准备工作:

  1. 在 nuget.org 网站注册一个账号。

  2. 从 nuget.org 网站下载合适版本的 nuget.exe 工具程序。然后放在本地硬盘一个合适的目录,这个目录应该包含在 Windows 命令行的 Path 环境变量里面,这样无论在什么目录启动 Windows 命令行,都可以方便调用 nuget 命令。

.NET Framework 形式的 Project

  1. 打开 Windows 命令提示符,进入到 Project 所在目录。这个目录里面应该有 ?.csproject 文件存在

  2. 执行 nuget spec 命令。会自动创建一个 ?.nuspec 文件

  3. 用记事本打开这个 ?.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 元素可以写一些关于最新改进的文字介绍。

  1. 检查项目的 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 一次。

  1. 在 Windows 命令提示符执行 nuget pack,就进行了打包,会自动创建一个 ?.nupkg 文件。文件名中包含了版本号。版本号是从刚才的 AssemblyInfo.cs 中得到的。

  2. 用 nuget.org 网站的 upload 功能上传这个 ?.nupkg 文件。大约过了一个小时以后它会发布出来,这时候才能在其他项目里面使用这个 nuget 包了。

.NET Standard 形式的 Project

Project 的 Property 中有一个 “打包” 属性页,勾选里面的“在版本中生成 nuget 包”。这样每次 Project Build 的时候都会自动生成 .nupkg 文件。不过需要注意在这个属性页指定好版本号。nuget 包每次上传到 nuget.org 网站的时候,都需要一个新的版本号,而已经存在的版本无法重复上传。

其他步骤和前面介绍的 .NET Framework 形式的 Project 相同。

注意事项

.nupkg 一旦上传,永远不可能删除(只能选择后面“不列出”而已)。如果占用了包的 ID,则以后永远无法改派给其他的包使用。所以这一点务必注意,上传以前一定仔细检查各种事项,不要发生错误。

⚠️ **GitHub.com Fallback** ⚠️