首页 > 解决方案 > 运行 WorkItemMigration 时出错:System.InvalidOperationException

问题描述

我使用azure-devops-migration-tools版本 11.9.20.0。

我正在尝试将 AZDO 项目迁移到 AZDO。

我在源项目上创建了与目标项目相同的方法结构。

但是迁移工作项的过程正在进入一个灾难性的阶段。

这是日志

[17:06:19 INF] ===============================================================================
[17:06:19 INF] v11.9.20.0
[17:06:19 INF] naked Agility with Martin Hinshelwood
[17:06:19 INF] Azure DevOps Migration Tools [Object Model]
[17:06:19 INF] ===============================================================================
[17:06:19 INF] Telemetry Note: We use Application Insights to collect telemetry on performance & feature usage for the tools to help our developers target features. This data is tied to a session ID that is generated and shown in the logs. This can help with debugging.
[17:06:19 INF] Start Time: 12/15/2020 17:06:19
[17:06:19 INF] Running with args: execute
[17:06:19 INF] OSVersion: Microsoft Windows NT 6.2.9200.0
[17:06:19 INF] Version: 11.9.20.0
[17:06:20 DBG] Hosting starting
[17:06:20 DBG] Starting with arguments: .\migration.exe execute -c .\configuration.json
[17:06:20 DBG] Starting with arguments: .\migration.exe execute -c .\configuration.json
[17:06:20 INF] Application started. Press Ctrl+C to shut down.
[17:06:20 INF] Hosting environment: Production
[17:06:20 INF] Content root path: C:\Tools\MigrationTools
[17:06:20 INF] Press Ctrl+C to shut down.
[17:06:20 DBG] Hosting started
info: MigrationTools._EngineV1.Configuration.EngineConfiguration[0]
      Config Found, creating engine host
[17:06:20 INF] Creating Migration Engine 58417722-95e0-432b-a98e-ab78cf4e9499
[17:06:20 INF] ProcessorContainer: Of 1 configured Processors only 1 are enabled
[17:06:20 INF] ProcessorContainer: Adding Processor WorkItemMigrationContext
[17:06:20 INF] Logging has been configured and is set to: Information.
[17:06:20 INF]                               Max Logfile: Verbose.
[17:06:20 INF]                               Max Console: Debug.
[17:06:20 INF]                  Max Application Insights: Error.
[17:06:20 INF] The Max log levels above show where to go look for extra info. e.g. Even if you set the log level to Verbose you will only see that info in the Log File, however everything up to Debug will be in the Console.
[17:06:20 INF] FieldMapContainer: Adding FieldMap MultiValueConditionalMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldBlankMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldValueMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldToFieldMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldtoFieldMultiMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldToTagFieldMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldMergeMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap RegexFieldMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap FieldValuetoTagMap for *
[17:06:20 INF] FieldMapContainer: Adding FieldMap TreeToTagFieldMap for *
[17:06:20 INF] Beginning run of 1 processors
[17:06:20 INF] Processor: WorkItemMigration
[17:06:20 INF] Migration Context Start: WorkItemMigration
[17:06:20 INF] WorkItemMigrationContext::InternalExecute
[17:06:20 INF] TfsMigrationClient::GetDependantTfsCollection:AuthenticationMode(AccessToken)
[17:06:20 INF] TfsMigrationClient::GetDependantTfsCollection: Connecting with AccessToken
[17:06:20 INF] MigrationClient: Connecting to https://dev.azure.com/JPI-Ardian/
[17:06:21 INF] MigrationClient: validating security for {"IsContainer": false, "UniqueName": "jeremie.pichot@outlook.com", "Descriptor": {"Data": null, "Identifier": "0003400123433728@Live.com", "IdentityType": "Microsoft.IdentityModel.Claims.ClaimsIdentity", "$type": "IdentityDescriptor"}, "DisplayName": "Jérémie Pichot", "IsActive": true, "MemberOf": [], "Members": [], "TeamFoundationId": "86d9d40d-3585-6609-b525-12e458835a6c", "UniqueUserId": 0, "$type": "TeamFoundationIdentity"}
[17:06:21 INF] MigrationClient: Access granted to https://dev.azure.com/JPI-Ardian/ for Jérémie Pichot (jeremie.pichot@outlook.com)
[17:06:22 INF] TfsMigrationClient::GetDependantTfsCollection:AuthenticationMode(AccessToken)
[17:06:22 INF] TfsMigrationClient::GetDependantTfsCollection: Connecting with AccessToken
[17:06:22 INF] MigrationClient: Connecting to https://dev.azure.com/JPI-Ardian/
[17:06:22 INF] MigrationClient: validating security for {"IsContainer": false, "UniqueName": "jeremie.pichot@outlook.com", "Descriptor": {"Data": null, "Identifier": "0003400123433728@Live.com", "IdentityType": "Microsoft.IdentityModel.Claims.ClaimsIdentity", "$type": "IdentityDescriptor"}, "DisplayName": "Jérémie Pichot", "IsActive": true, "MemberOf": [], "Members": [], "TeamFoundationId": "86d9d40d-3585-6609-b525-12e458835a6c", "UniqueUserId": 0, "$type": "TeamFoundationIdentity"}
[17:06:22 INF] MigrationClient: Access granted to https://dev.azure.com/JPI-Ardian/ for Jérémie Pichot (jeremie.pichot@outlook.com)
[17:06:23 INF] Migrating all Nodes before the Processor run.
**[17:06:24 FTL] Error while running WorkItemMigration
System.InvalidOperationException: Sequence contains more than one element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
   at MigrationTools.Enrichers.TfsNodeStructure.ProcessCommonStructure(String treeTypeSource, String sourceTarget, String treeTypeTarget, String projectTarget) in D:\a\1\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 286
   at MigrationTools.Enrichers.TfsNodeStructure.MigrateAllNodeStructures() in D:\a\1\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 263
   at MigrationTools.Enrichers.TfsNodeStructure.ProcessorExecutionBegin(IProcessor processor) in D:\a\1\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 117
   at VstsSyncMigrator.Engine.WorkItemMigrationContext.InternalExecute() in D:\a\1\s\src\VstsSyncMigrator.Core\Execution\MigrationContext\WorkItemMigrationContext.cs:line 94
   at MigrationTools._EngineV1.Processors.MigrationProcessorBase.Execute() in D:\a\1\s\src\MigrationTools\_EngineV1\Processors\MigrationProcessorBase.cs:line 47
[17:06:24 ERR] WorkItemMigration The Processor MigrationEngine entered the failed state...stopping run
[17:06:24 INF] Application is shutting down...
[17:06:24 INF] Terminating: Application forcebly closed.
[17:06:24 INF] Application Ending
[17:06:24 INF] The application ran in 00:00:04.9048899 and finished at 12/15/2020 17:06:24**

你能帮我理解为什么这个序列包含多个元素吗?

标签: azure-devopsazure-devops-migration-tools

解决方案


这个问题在 github 上的这张票中得到了解决。我在这里发布答案。因此,对于遇到相同问题的其他成员轻松找到解决方案将很有帮助。

在配置文件中,语言映射无效:

"LanguageMaps": {
      "AreaPath": "WorkItems-from",
      "IterationPath": "WorkItems-from"

它应该是:

"LanguageMaps": {
  "AreaPath": "Area",
  "IterationPath": "Iteration"

注释掉也不正常// "AuthenticationMode": "Prompt",


推荐阅读