nuget - 使用具有特定预发布标签的 Nuget 包

标签 nuget

在我们的开发环境中,我们有一个 Git 存储库,其中包含一个通用组件。这个 repo 有多个功能分支,它们通过 CI 构建将 Nuget 包发布到公共(public)提要。在提要中,来自这些功能分支的包使用分支名称的预发布标签进行标识。作为消费者,我正在通过 Nuget.config 文件中提到的来源查看此提要。而且,我正在尝试使用来自该通用组件的特定功能分支的包。但是,如果该包具有更高版本,我从消费者项目调用的 Nuget 更新命令可能会从其他分支中提取预发布版本。请分享您对如何解决此问题的意见。我在更新命令中没有看到任何其他参数来提及特定的预发布标签

谢谢

桑迪普

最佳答案

有几个选项:

  • 使用不同的提要——从基础设施的角度来看显然是最复杂的,除非您可以通过服务轻松创建提要。但这使得“更新一切”命令变得容易。
  • 给这些包一个不同的身份(名称),所以可以发布My.Product.With.FeatureAMy.Product.With.FeatureB .
  • 使用 allowedVersions in packages.config 将更新限制在某个版本范围内。为此,您可能还需要使用不同的次要/补丁版本,而不仅仅是包的预发布标签。

  • 使用 new PackageReference format 时在 VS 2017 15.1+(已发布)中,您有更多选择
  • 对部分 perelease 标签使用 float 引用。例如1.2.3-coolfeatureA-* .
  • 由于PackageReference从 MSBuild 中使用,您还可以定义中心功能和构建版本(例如,在 Directory.Build.props 文件中)并在包引用中使用它们。例如。您可以在 csproj 中使用这样的定义文件:
    <ItemGroup>
      <PackageReference Include="My.Shared.LibA" Version="1.2.3-$(LibsFeatureBranch)-$(LibsBuildNumber)" />
      <PackageReference Include="My.Shared.LibB" Version="1.2.3-$(LibsFeatureBranch)-$(LibsBuildNumber)" />
    </ItemGroup>
    

    连同 Directory.Build.props文件(在项目或解决方案级别)包含:
    <Project>
      <PropertyGroup>
        <LibsFeatureBranch>CoolFeatureA</LibsFeatureBranch>
        <LibsBuildNumber>20170510-</LibsBuildNumber>
      </PropertyGroup>
    </Project>
    
  • 关于nuget - 使用具有特定预发布标签的 Nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43987101/

    相关文章:

    visual-web-developer - NuGet: "Unable to load one or more of the requested types"

    c# - 使用项目中缺少 DLL 自身的依赖项

    c# 开发和 project.json

    c# - 在 Nuget 的后期构建中获取版本

    nuget - 显示类似 "Blocked by package.config"的消息

    nuget - ASP.NET 5 - 动态引用 NuGet 包

    visual-studio - VS 中包含 JS 文件等内容的 Nuget 包的自定义安装路径

    .net - 通过 NuGet 安装 EntityFramework 包时出错

    asp.net-core - 在 ASP.NET Core 2.0 中配置 NLog,无需 nlog.config 文件