使用具有特定预发布标记的Nuget包

时间:2017-05-15 19:10:32

标签: nuget

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

由于

和Sandeep

1 个答案:

答案 0 :(得分:2)

有几个选择:

  1. 使用不同的Feed - 从基础架构的角度来看,显然最复杂,除非您可以通过服务轻松创建Feed。但这使得"更新一切"命令很简单。
  2. 为这些包提供不同的身份(名称),因此可以发布My.Product.With.FeatureAMy.Product.With.FeatureB
  3. 使用allowedVersions in packages.config限制对版本范围的更新。为此,您可能还需要使用不同的次要/补丁版本,而不仅仅是包的预发行标记。
  4. 在VS 2017 15.1+(已发布)中使用new PackageReference format时,您还有更多选择

    1. 对perelease标记的部分使用浮动引用。例如1.2.3-coolfeatureA-*
    2. 由于MSBuild使用PackageReference,您还可以定义中心功能和构建版本(例如在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>