【问题标题】:Consuming Nuget packages with specific pre-release tag使用具有特定预发布标签的 Nuget 包
【发布时间】:2017-05-15 19:10:32
【问题描述】:

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

谢谢

桑迪普

【问题讨论】:

    标签: nuget


    【解决方案1】:

    有几个选项:

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

    在 VS 2017 15.1+(已发布)中使用 new PackageReference format 时,您有更多选择

    1. 对部分 perelease 标签使用浮动引用。例如1.2.3-coolfeatureA-*
    2. 由于 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>
      

    【讨论】:

    • 非常感谢马丁。我正在尝试使用 allowedVersions。但到目前为止我还没有成功。我有 2 个版本为 2.0.0 的功能分支,其中有标签 sandeepf1 和 sandeepf2。两者都发布了 2 个 Nuget 包,因此包版本为: 2.0.0-sandeepf11 2.0.0-sandeepf12 2.0.0-sandeepf21 2.0.0-sandeepf22 我需要使用来自 sandeepf1 分支的最新版本,即 2.0.0-sandeepf12。我在 allowedVersions 属性中尝试了很多模式,但无法获得此版本。 [2.0.0-sandeepf1, 2.1.0-sandeepf1) 得到我 2.0.0-sandeepf22 [2.0.0-sandeepf1] 得到我 2.0.0-sandeepf11
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2012-05-22
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多