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

配置 dotnet CLI 用于 GitHub 包

您可以配置 dotnet 命令行接口 (CLI) 以将 NuGet 包发布到 GitHub Packages 并将存储在 GitHub Packages 上的包用作 .NET 项目中的依赖项。

GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 2.22 和 GitHub One。


GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 GitHub Packages 可用于 GitHub Free、GitHub Pro、组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud 和 GitHub One。 For more information, see "[GitHub's products](/articles/github-s-products)."

本文内容

此文档对您有帮助吗?

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。

注:安装或发布 Docker 映像时,GitHub Packages 当前不支持外部图层,如 Windows 映像。

向 GitHub Packages 验证

您需要访问令牌才能发布、安装和删除 GitHub Packages 中的包。 您可以使用个人访问令牌直接向 GitHub Packages 或 GitHub API 验证您的用户名。 创建个人访问令牌时,可根据需要为令牌分配不同的作用域。

To authenticate using a GitHub Actions 工作流程:

  • 对于包注册表 (PACKAGE-REGISTRY.pkg.github.com/OWNER/REPOSITORY/IMAGE-NAME),您可以使用 GITHUB_TOKEN
  • 对于容器注册表 (ghcr.io/OWNER/IMAGE-NAME),必须使用个人访问令牌。

使用个人访问令牌进行身份验证

您必须使用具有适当范围的个人访问令牌才可在 GitHub Packages 中发布和安装。 更多信息请参阅“关于 GitHub Packages”。

要使用 dotnet 命令行接口 (CLI) 向 GitHub Packages 验证,请在项目目录中创建一个 nuget.config 文件,将 GitHub Packages 指定为 dotnet CLI 客户端的 packageSources 下的源。

必须:

  • USERNAME 替换为您在 GitHub 上的用户帐户的名称。
  • TOKEN 替换为您的个人访问令牌。
  • OWNER 替换为拥有项目所在仓库的用户或组织帐户的名称。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

使用 GITHUB_TOKEN 进行身份验证

如果您使用的是 GitHub Actions 工作流程,可以使用 GITHUB_TOKEN 发布和使用 GitHub Packages 中的软件包,而无需存储和管理个人访问令牌。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

发布包

您可以使用 nuget.config 文件进行身份验证,将包发布到 GitHub Packages。 发布时,您需要将 csproj 文件中的 OWNER 值用于您的 nuget.config 身份验证文件。 在 .csproj 文件中指定或增加版本号,然后使用 dotnet pack 命令创建该版本的 .nuspec 文件。 有关创建包的更多信息,请参阅 Microsoft 文档中的“创建和发布包”。

在发布包后,您可以在 GitHub 上查看该包。 更多信息请参阅“查看包”。

  1. 向 GitHub Packages 验证。 更多信息请参阅“向 GitHub Packages 验证”。

  2. 创建一个新项目。

    dotnet new console --name OctocatApp
  3. 将项目的特定信息添加到以 .csproj 结尾的项目文件中。 必须:

    • OWNER 替换为拥有项目所在仓库的用户或组织帐户的名称。
    • REPOSITORY 替换为要发布的包所在仓库的名称。
    • 1.0.0 替换为包的版本号。
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</PackageId>
        <Version>1.0.0</Version>
        <Authors>Octocat</Authors>
        <Company>GitHub</Company>
        <PackageDescription>This package adds an Octocat!</PackageDescription>
        <RepositoryUrl>https://github.com/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
    </Project>
    
  4. 打包项目。

    dotnet pack --configuration Release
  5. 使用您在 nuget.config 文件中指定的 key 发布包。

    dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg" --source "github"

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

要将多个包发布到同一个仓库,您可以在所有 .csproj 项目文件的 RepositoryURL 字段中包含相同的 GitHub 仓库 URL。 GitHub 根据该字段匹配仓库。

例如,OctodogAppOctocatApp 项目将发布到同一个仓库:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctodogApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octodog</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octodog!</PackageDescription>
    <RepositoryUrl>https://github.com/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctocatApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octocat</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octocat!</PackageDescription>
    <RepositoryUrl>https://github.com/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>

安装包

在项目中使用来自 GitHub 的包类似于使用来自 nuget.org 的包。 将包依赖项添加到 .csproj 文件以指定包名称和版本。 有关在项目中使用 .csproj 文件的更多信息,请参阅 Microsoft 文档中的“使用 NuGet 包”。

  1. 向 GitHub Packages 验证。 更多信息请参阅“向 GitHub Packages 验证”。

  2. 要使用包,请添加 ItemGroup 并配置 .csproj 项目文件中的 PackageReference 字段,将 OctokittenApp 包替换为您的包依赖项,将 1.0.0 替换为您要使用的版本:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</PackageId>
        <Version>1.0.0</Version>
        <Authors>Octocat</Authors>
        <Company>GitHub</Company>
        <PackageDescription>This package adds an Octocat!</PackageDescription>
        <RepositoryUrl>https://github.com/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. 使用 restore 命令安装包。

    dotnet restore

延伸阅读

此文档对您有帮助吗?

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。