使用带有特定预发布标签的Nuget软件包

使用带有特定预发布标签的Nuget软件包,nuget,Nuget,在我们的开发环境中,我们有一个包含公共组件的Git repo。此repo具有多个功能分支,这些分支通过CI构建将Nuget包发布到公共提要。在提要中,来自这些特性分支的包用分支名称的prerelease标记标识。作为一个消费者,我正在研究Nuget.config文件中提到的这个源代码。而且,我正在尝试使用来自该公共组件的特定功能分支的包。但是,我从consumer项目调用的Nuget update命令可能会从其他分支获取预发布版本,如果该包有更高的版本。请分享您对如何解决此问题的意见。我在upd

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

谢谢


Sandeep有几个选项:

  • 使用不同的提要-从基础架构的角度来看,显然最复杂,除非您可以通过服务轻松创建提要。但这使得“更新所有内容”命令变得简单
  • 为这些包指定不同的标识(名称),以便发布
    My.Product.With.featureUrea
    My.Product.With.FeatureB
  • 用于将更新限制在某个版本范围内。为此,您可能还需要使用不同的次要/补丁版本,而不仅仅是包的预发布标签
  • 在使用VS 2017 15.1+(已发布)时,您还有更多选择

  • 对perelease标记的部分使用浮动引用。e、 g.
    1.2.3-1-*
  • 由于从MSBuild中使用了
    PackageReference
    ,因此您还可以定义中心功能和生成版本(例如在
    目录.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>
    

  • 非常感谢马丁。我正在尝试使用允许的版本。但我到目前为止还没有成功。我有两个版本为2.0.0的功能分支,它们具有标记sandeepf1和sandeepf2。两者都发布了2个Nuget软件包,因此软件包版本为:2.0.0-sandeepf11 2.0.0-sandeepf12.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
    <Project>
      <PropertyGroup>
        <LibsFeatureBranch>CoolFeatureA</LibsFeatureBranch>
        <LibsBuildNumber>20170510-</LibsBuildNumber>
      </PropertyGroup>
    </Project>