我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

配置 NuGet 用于 GitHub Package Registry

您可以配置 NuGet 以将包发布到 GitHub 包注册表 并将存储在 GitHub 包注册表 上的包用作 .Net 项目中的依赖项。

GitHub 包注册表 目前提供有限的公开测试版。更多信息请参阅“关于 GitHub 包注册表”。

本文内容

向 GitHub 包注册表 验证

必须使用具有 read:packageswrite:packages 作用域的个人访问令牌才能通过 NuGet 在 GitHub 包注册表 中发布和删除公共包。 对于私有仓库,您的个人访问令牌还必须具有 repo 作用域。 更多信息请参阅“创建用于命令行的个人访问令牌”。

通过将 GitHub 包注册表 作为 Source 添加到 nuget 客户端,可配置 nuget 在推送新包时使用令牌。 将作用域参数中的 OWNER 替换为包含要发布包的仓库的 GitHub 用户或组织名称。

nuget sources Add -Name "GPR" \
     -Source "https://nuget.pkg.github.com/OWNER/index.json" \
     -UserName USERNAME -Password TOKEN

您也可以在 GitHub 操作 工作流程的 GitHub 包注册表 中使用 GITHUB_TOKEN 发布并使用包,而无需存储和管理个人访问令牌。有关 GITHUB_TOKEN 的更多信息,请参阅“GITHUB_TOKEN 密码”。

您可以使用脚本将 GITHUB_TOKEN 注入的 GitHub 包注册表 的适当配置文件。在包客户端的配置文件中将 GitHub 包注册表 添加为替代注册表或仓库,以及具有适当范围的 GitHub 用户名和个人访问令牌。创建配置文件的准确步骤因包类型而异。

发布包

使用 nuget CLI 指定 Source,可将 NuGet 包发布到 OWNER 下的 GitHub 包注册表。 使用上述示例,将 GPR 指定为包来源,并且用包的名称替换 YOUR-PACKAGE

$ nuget push YOUR-PACKAGE.nupkg -Source "GPR"

您可以通过以下 URL 访问您的包(使用您的 GitHub 用户或组织名称替换 OWNER,使用您的仓库名称替换 REPOSITORY):

https://github.com/OWNER/REPOSITORY/packages

将多个包发布到同一个 GitHub 仓库

发布包时,默认情况下 GitHub 包注册表 会使用包名称来确定要发布到的 GitHub 仓库。 例如,名为 odata-client 的包将被发布到 OWNER/odata-client GitHub 仓库。

If you would like to change the repository where the package is published, or publish multiple packages to the same repository, you can include the URL to the GitHub repository in the repository field of the package's .nuspec file. GitHub 将根据该字段匹配仓库,而不是根据包名称。

  1. Add the URL of the GitHub repository in the repository field of the package's .nuspec file.

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <metadata>
        <id>sample</id>
        <version>1.2.3</version>
        <authors>Kim Abercrombie, Franck Halmaert</authors>
        <description>Sample exists only to show a sample .nuspec file.</description>
        <language>en-US</language>
        <repository type="git" url="https://github.com/my-org/my-custom-repo"/>
        </metadata>
    </package>

    Note: If you have a .csproj file created by Visual Studio, the version you use in your .nuspec file must match the version in your .csproj file.

  2. Create the package using the configuration in the package's .nuspec file.

    $ dotnet pack --configuration Release
  3. Publish the new package to GitHub, replacing YOUR-PACKAGE with the name of your package.

    $ nuget push YOUR-PACKAGE.nupkg -Source "GPR"

有关创建包的更多信息,请参阅 Microsoft 文档中的“创建和发布包”。

接收包注册表事件

在发布或更新包时,您可以接收 web 挂钩事件。更多信息请参阅“GitHub 开发者文档中的 RegistryPackageEvent”。

安装包

在项目中使用来自 GitHub 的包类似于使用来自 nuget.org 的包。 将包依赖项添加到 package.config 以指定包名称和版本。

  1. 使用 nuget source Add 向 GitHub 包注册表 验证。 更多信息请参阅“向 GitHub 包注册表 验证”。
  2. 配置 packages.config 以使用包。 例如,此 packages.configocto-app 包用作依赖项。

     <?xml version="1.0" encoding="utf-8"?>
       <packages>
         <package id="octo-app" version="3.1.1" />
       </packages>
     </xml>
  3. 恢复所有包。

    $ nuget restore

有关在项目中使用 package.config 的更多信息,请参阅 Microsoft 文档中的“使用 NuGet 包”。

删除包

To avoid breaking projects that may depend on your packages, GitHub 包注册表 does not support deleting published versions of a package or an entire published package for public repositories. Under special circumstances, such as for legal reasons or to conform with GDPR standards, you can request deleting a package through GitHub 支持. Contact GitHub 支持 using our contact form and the subject line "GitHub 包注册表."

You can delete private packages via GitHub's API. For more information, see "Access to package version deletion" in GitHub 开发者文档.

问问别人

找不到要找的内容?

联系我们