Azure DevOps迁移工具遇System.NullReferenceException,请求协助排查
我之前在用最新版Azure DevOps迁移工具时,也碰到过几乎一模一样的NullReferenceException,结合你提到的登录行为变化,这个问题大概率和身份验证失效或者项目识别失败有关,给你几个实际可行的排查和解决步骤:
显式配置身份验证信息
新版本确实移除了旧版的自动登录/提示登录逻辑,必须在迁移配置文件里明确指定认证方式。最稳妥的是使用PAT(个人访问令牌),它能精准控制权限,且不受本地登录状态影响。示例配置片段如下:"Source": { "Name": "TfsTeamProjectConfig", "Collection": "https://dev.azure.com/your-source-organization/", "Project": "Your-Source-Project-Name", "AuthenticationMode": "AccessToken", "AccessToken": "your-source-pat-with-admin-permissions" }, "Target": { "Name": "TfsTeamProjectConfig", "Collection": "https://dev.azure.com/your-target-organization/", "Project": "Your-Target-Project-Name", "AuthenticationMode": "AccessToken", "AccessToken": "your-target-pat-with-admin-permissions" }注意PAT需要勾选项目集合级别的权限(比如Work Items读写、项目管理权限),确保能访问到迁移所需的所有资源。
核对项目名称的准确性
错误栈里的ToProjectData(Project project)方法抛出空引用,也可能是工具无法找到你配置的项目。请仔细检查配置里的Project字段,确保和Azure DevOps门户里的项目名称完全一致(大小写敏感,不要遗漏空格或特殊字符)。清理工具缓存后重试
旧版本留下的登录缓存可能干扰新版本的认证流程。找到工具的缓存目录(默认在%USERPROFILE%\.migrationtools),删除里面的所有文件,然后重新运行迁移命令。尝试交互式登录模式
部分新版本仍支持交互式登录,如果你不想用PAT,可以在配置里将AuthenticationMode设为Prompt,运行工具时会弹出Azure DevOps登录窗口,手动完成身份验证:"AuthenticationMode": "Prompt"验证管理员权限的实际有效性
虽然你是Project Collection Admin,但建议手动在Azure DevOps门户里验证权限:比如尝试修改源/目标项目的工作项、查看项目集合设置,确认权限没有因为继承或配置问题失效。
内容的提问来源于stack exchange,提问作者Davy

