C# 如何在Azure DevOps pull请求中推送到专用源之前正确检查NuGet包版本中的重复生成策略

C# 如何在Azure DevOps pull请求中推送到专用源之前正确检查NuGet包版本中的重复生成策略,c#,azure-devops,nuget,azure-pipelines,C#,Azure Devops,Nuget,Azure Pipelines,我有一个repo,其中有几个库(csprojprojects),它们发布到Azure DevOps托管的私有NuGet提要中。它们被我公司的其他项目消耗掉了 现状 每个库的一个推送管道,用于将NuGet推送到私有提要中。这些管道是由 触发器: 分支机构: 包括: -主人 路径: 包括: -MyCompany.Product.PackageName/* 在PR期间,另一个简单的构建管道检查新包版本的构建。如果此生成管道失败,则无法合并PR。当PR合并到master中时,新的包版本被推送到提要中

我有一个repo,其中有几个库(
csproj
projects),它们发布到Azure DevOps托管的私有NuGet提要中。它们被我公司的其他项目消耗掉了

现状 每个库的一个推送管道,用于将NuGet推送到私有提要中。这些管道是由

触发器:
分支机构:
包括:
-主人
路径:
包括:
-MyCompany.Product.PackageName/*
在PR期间,另一个简单的构建管道检查新包版本的构建。如果此生成管道失败,则无法合并PR。当PR合并到master中时,新的包版本被推送到提要中

问题在于构建管道中没有版本检查。在PR期间,开发人员不知道推送管道是否成功

我想做一个自动检查,如果包可以推到私人饲料

期望状态 当某个开发人员打开一个新的PR时,构建管道会告诉他/她无法将包推送到提要中,因为他忘记了更新包版本

我的想法是创建一个特定于项目的构建管道,并使用PowerShell进行一些神奇的版本检查,如果提要中存在重复项,则会失败


这项任务的适当策略是什么?有人为此应用了一些成功的解决方案吗?一些管道示例将不胜感激。

当您将软件包版本推送到指定的源中时,如果该版本与源中的现有版本复制,则推送通常会失败,并出现版本复制错误。然后您只需要更改软件包版本,然后再次尝试推送

如果要在推送之前检查包版本,请在设置为检查包版本的生成管道中,尝试如下操作:

  • 获取要推送的包的当前版本。通常,您可以从
    csproj
    文件或相关NuGet配置文件(例如
    .nuspec
    )中读取版本

  • 使用“”命令列出源中指定包的所有现有版本

nuget list JSON-AllVersions-Source”https://pkgs.dev.azure.com///_packaging//nuget/v3/index.json"
如果提要的范围是组织,则省略“

要获取源URL,请在DevOps上打开团队项目中的Azure工件,切换到包所在的源,单击连接到源,然后可以查看源URL

  • 检查要推送的包版本是否包含在列出的包版本中

将软件包版本推送到指定的源中时,如果该版本与源中的现有版本复制,则推送通常会失败,并出现版本复制错误。然后您只需要更改软件包版本,然后再次尝试推送

如果要在推送之前检查包版本,请在设置为检查包版本的生成管道中,尝试如下操作:

  • 获取要推送的包的当前版本。通常,您可以从
    csproj
    文件或相关NuGet配置文件(例如
    .nuspec
    )中读取版本

  • 使用“”命令列出源中指定包的所有现有版本

nuget list JSON-AllVersions-Source”https://pkgs.dev.azure.com///_packaging//nuget/v3/index.json"
如果提要的范围是组织,则省略“

要获取源URL,请在DevOps上打开团队项目中的Azure工件,切换到包所在的源,单击连接到源,然后可以查看源URL

  • 检查要推送的包版本是否包含在列出的包版本中

嗨@KUTlime,最近怎么样?你试过我回答中的建议了吗?这对你有帮助吗?请尝试一下,如果有任何进展,请随时告诉我。@BrightRan MSFT不幸的是,我无法根据你的建议实施解决方案,因为我的老板对此有意见。他想对NuGet另辟蹊径,我真的不再关心这件事了,因为我对这种情况感到非常沮丧。嗨@KUTlime,关于这个问题,你和你的团队目前有没有找到没有NuGet的其他解决方案?如果是这样的话,你能发布一个答案来分享这个问题解决方案的摘要吗?这可能对那些有类似问题的人在寻找答案时有所帮助。谢谢。嗨@BrightRan MSFT,不,我们仍然会使用NuGets,只有构建过程可能会改变。我想我们无法回避我的问题,但这不再是我的责任。嗨@KUTlime,事情进展如何?你试过我回答中的建议了吗?这对你有帮助吗?请尝试一下,如果有任何进展,请随时告诉我。@BrightRan MSFT不幸的是,我无法根据你的建议实施解决方案,因为我的老板对此有意见。他想对NuGet另辟蹊径,我真的不再关心这件事了,因为我对这种情况感到非常沮丧。嗨@KUTlime,关于这个问题,你和你的团队目前有没有找到没有NuGet的其他解决方案?如果是这样的话,你能发布一个答案来分享这个问题解决方案的摘要吗?这可能对有类似问题的人有所帮助
nuget list <PackageName> JSON -AllVersions -Source "https://pkgs.dev.azure.com/<Organization>/<Project>/_packaging/<FeedName>/nuget/v3/index.json"