我制作了一个针对我公司团队的特定组件。我希望能够使用 NuGet 使该程序集可供我的团队和我公司的类似团队正在处理的其他项目使用。然而,该程序集并不是我想与世界共享的真正代码。
我知道使用 Maven,您可以从本地存储库创建本地存储库和源包。 NuGet 支持类似的功能吗? NuGet 有没有办法指定本地存储库或拥有私有包?
是的!您可以托管自己的 NuGet 服务器!
最简单的方法是在服务器上创建一个共享文件夹并将其引用为 Nuget 服务器。
您可以在以下位置找到有关如何执行此操作的更多信息:托管您自己的 NuGet Feeds
托管自己的 NuGet 服务器的另一个选项是使用 JetBrains TeamCity 作为构建服务器。 此处描述了设置。
Team City 服务器充当 NuGet 存储库,只能在您的公司内部访问。
根据您的使用情况,该软件有免费版本。
它有一些不错的选项,例如能够根据需要发布新的 NuGet 版本,以及每个新的持续集成构建等。最有用的位之一(与所有 NuGet 服务器实现一样)是,它将保留数十个旧版本程序集的版本,因此如果您有一个项目需要引用最新版本,而另一个项目需要引用旧版本,那么一切都会成功。
查看 ProGet 免费版;我们正是为此目的而建造的。它的设置时间要少得多,并且提供了许多超出标准 NuGet 服务器提供的功能,例如多个源、源聚合和其他存储库类型(npm、Bower 等)
如果您想付费购买企业版,您还可以使用 LDAP 进行身份验证,以及按名称/许可证从连接的源(即 NuGet 的官方源)过滤源。
步骤 1. 更新 *.csproj 文件中的软件包版本
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.0.0</Version> <-- Very important!!!
<Authors>Team-Bolivia</Authors>
<Company>Bolivia-Tech</Company>
<Description>Library to bla bla bla..</Description>
<RepositoryUrl>https://github.com/<owner|org>/<project_name></RepositoryUrl>
</PropertyGroup>
</Project>
第 2 步。创建操作:
name: Publish Bolivia Package
runs-on: ubuntu-latest
permissions:
contents: read
packages: write # permission for the github token
steps:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v3
with:
dotnet-version: '3.1.x' # No change it
source-url: https://nuget.pkg.github.com/<owner|organization>/index.json
env:
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Build project
run: dotnet build --configuration Release
- name: Create the package
run: dotnet pack --configuration Release
- name: Publish the package to GPR
run: dotnet nuget push bin/Release/*.nupkg