运行 WorkItemMigration 时出错:System.InvalidOperationException
Error while running 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\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 286
at MigrationTools.Enrichers.TfsNodeStructure.MigrateAllNodeStructures() in D:\a\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 263
at MigrationTools.Enrichers.TfsNodeStructure.ProcessorExecutionBegin(IProcessor processor) in D:\a\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 117
at VstsSyncMigrator.Engine.WorkItemMigrationContext.InternalExecute() in D:\a\s\src\VstsSyncMigrator.Core\Execution\MigrationContext\WorkItemMigrationContext.cs:line 94
at MigrationTools._EngineV1.Processors.MigrationProcessorBase.Execute() in D:\a\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**
你能帮我理解为什么序列包含多个元素吗?
此问题已在 github 的 ticket 中解决。我post这里的答案。因此,这将有助于其他遇到相同问题的成员轻松找到解决方案。
在配置文件中,语言映射无效:
"LanguageMaps": {
"AreaPath": "WorkItems-from",
"IterationPath": "WorkItems-from"
应该是:
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
另外注释掉// "AuthenticationMode": "Prompt",
也不正常。
我使用 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\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 286
at MigrationTools.Enrichers.TfsNodeStructure.MigrateAllNodeStructures() in D:\a\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 263
at MigrationTools.Enrichers.TfsNodeStructure.ProcessorExecutionBegin(IProcessor processor) in D:\a\s\src\MigrationTools.Clients.AzureDevops.ObjectModel\ProcessorEnrichers\TfsNodeStructure.cs:line 117
at VstsSyncMigrator.Engine.WorkItemMigrationContext.InternalExecute() in D:\a\s\src\VstsSyncMigrator.Core\Execution\MigrationContext\WorkItemMigrationContext.cs:line 94
at MigrationTools._EngineV1.Processors.MigrationProcessorBase.Execute() in D:\a\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**
你能帮我理解为什么序列包含多个元素吗?
此问题已在 github 的 ticket 中解决。我post这里的答案。因此,这将有助于其他遇到相同问题的成员轻松找到解决方案。
在配置文件中,语言映射无效:
"LanguageMaps": {
"AreaPath": "WorkItems-from",
"IterationPath": "WorkItems-from"
应该是:
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
另外注释掉// "AuthenticationMode": "Prompt",
也不正常。