gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:00:42 26 4
gpt4 key购买 nike

在我们的开发环境中,我们有一个 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/

    26 4 0