Azure devops 使用.NET API在Azure DevOps中批量创建多个工作项时出现错误VS403357

Azure devops 使用.NET API在Azure DevOps中批量创建多个工作项时出现错误VS403357,azure-devops,migration,Azure Devops,Migration,我试图使用Azure DevOps.NET API在AzureDevOps存储库中批量创建工作项,但当我提交批处理请求时,我收到一条错误消息:VS403357:批处理中的工作项应是唯一的,但在多个请求中发现ID为-1的工作项 这是我的密码: public void ExecuteWorkItemMigration(int[] workItemIds, IProgress<ProgressResult> progress = null) { var wiql = "

我试图使用Azure DevOps.NET API在AzureDevOps存储库中批量创建工作项,但当我提交批处理请求时,我收到一条错误消息:VS403357:批处理中的工作项应是唯一的,但在多个请求中发现ID为-1的工作项

这是我的密码:

  public void ExecuteWorkItemMigration(int[] workItemIds, IProgress<ProgressResult> progress = null)
  {
      var wiql = "SELECT * FROM WorkItems";
      var query = new Query(_workItemStore, wiql, workItemIds);
      var workItemCollection = query.RunQuery();
      string projectName = MainSettings.AzureDevOpsSettings.ProjectName;

      List<WitBatchRequest> batchRequests = new List<WitBatchRequest>();
      foreach (WorkItemTfs tfsWorkItem in workItemCollection)
      {
          JsonPatchDocument document = CreateJsonPatchDocument(tfsWorkItem);
          string workItemType = GetWorkItemType(tfsWorkItem);
          WitBatchRequest wibr = _azureDevopsWorkItemTrackingClient.CreateWorkItemBatchRequest(projectName, workItemType,
              document, true, true);

          batchRequests.Add(wibr);
      }

      List<WitBatchResponse> results = _azureDevopsWorkItemTrackingClient.ExecuteBatchRequest(batchRequests).Result;
  }


private static JsonPatchDocument CreateJsonPatchDocument(WorkItemTfs tfsWorkItem, int id = -1)
    {
        var document = new JsonPatchDocument();
        document.Add(
            new JsonPatchOperation
            {
                Path = "/id",
                Operation = Operation.Add,
                Value = id
            });

        document.Add(
            new JsonPatchOperation
            {
                Path = "/fields/System.Title",
                Operation = Operation.Add,
                Value = tfsWorkItem.Title
            });

        if (tfsWorkItem.Fields.Contains("ReproSteps"))
            document.Add(
                new JsonPatchOperation
                {
                    Path = "/fields/Microsoft.VSTS.TCM.ReproSteps",
                    Operation = Operation.Add,
                    Value = tfsWorkItem.Fields["ReproSteps"].Value
                });

    }
关于我需要做什么才能让它正常工作,有什么建议吗? 我已尝试提交不同的唯一ID,但似乎无法阻止错误的发生。

您需要使用唯一的负ID来创建工作项ID

大概是这样的:

public void ExecuteWorkItemMigration(int[] workItemIds, IProgress<ProgressResult> progress = null)
    {
        var wiql = "SELECT * FROM WorkItems";
        var query = new Query(_workItemStore, wiql, workItemIds);
        var workItemCollection = query.RunQuery();
        string projectName = MainSettings.AzureDevOpsSettings.ProjectName;

        List<WitBatchRequest> batchRequests = new List<WitBatchRequest>();

        int id = -1;
        foreach (WorkItemTfs tfsWorkItem in workItemCollection)
        {
            JsonPatchDocument document = CreateJsonPatchDocument(tfsWorkItem, id--);
            string workItemType = GetWorkItemType(tfsWorkItem);
            WitBatchRequest wibr = _azureDevopsWorkItemTrackingClient.CreateWorkItemBatchRequest(projectName, workItemType,
                document, true, true);

            batchRequests.Add(wibr);
        }

        List<WitBatchResponse> results = _azureDevopsWorkItemTrackingClient.ExecuteBatchRequest(batchRequests).Result;
    }