使用 TFSDeleteProject 在本地 Azure DevOps 中删除项目

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019

使用 TFSDeleteProject,可以在不再需要项目时从 Azure DevOps Server 中删除该项目。

此外,如果在创建项目失败后仍有未删除的组件,则可以使用 TFSDeleteProject 删除它们。

若要使用管理控制台从 Azure DevOps Services 中删除项目,请参阅 删除项目

警告

TFSDeleteProject 永久销毁项目,之后无法恢复该项目。 在使用 TFSDeleteProject 之前,应备份所有重要的项目数据。

若要访问 TFSDeleteProject 命令行工具,请打开命令提示符窗口并输入:

cd %programfiles%\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TfsDeleteProject.exe

先决条件

若要使用 TFSDeleteProject 命令,你必须是 Team Foundation Administrators 安全组或 项目管理员 安全组的成员。

有关详细信息,请参阅 为 Azure DevOps Server设置管理员权限。

TFSDeleteproject [/q] [/force] [/excludewss] /collection:URL TeamProjectName

选项

说明

/q

自选。 使用静默模式。 不要提示用户进行确认。

/force

自选。 指定即使某些组件无法删除,删除过程也应继续。

/excludewss

自选。 指定不删除与项目关联的 SharePoint 网站。 指定此选项以维护现有网站,以便其他项目可以继续使用它。

/collectionURL

必填。 指定项目集合的 URI。 必须为 URI 使用以下格式:http://ServerName:Port/VirtualDirectoryName/CollectionName

如果未指定虚拟目录,则必须对 URI 使用以下格式:http://ServerName:Port/CollectionName

TeamProjectName

必填。 项目的名称。 如果名称包含空格,请用引号将其括起来。

言论

创建项目时,Azure DevOps Server 会在托管 Azure DevOps Server 的服务器上创建数据对象,并且可以在托管 SharePoint 产品的服务器上创建数据对象,以及托管 SQL Server Reporting Services 的服务器。

删除项目时,报表会自动从 SQL Server Reporting Services 中删除。

删除项目时,可以选择是否删除为支持 SharePoint 网站而创建的对象。

但是,错误可能会阻止 Azure DevOps Server 创建或删除所有对象。 为排查和解决这些问题,以下部分提供了背景信息、其他资源链接,以及具体步骤,帮助您确定问题的原因、解决问题,并在必要时删除运行 TFSDeleteProject 后保留的数据对象。

TFSDeleteProject 进程

使用 TFSDeleteProject 命令行工具时,它将首先删除项目数据,然后删除项目网站。

阶段 1:TFSDeleteProject 删除项目数据

在第一阶段中,TFSDeleteProject 会自动执行以下步骤来删除项目数据:

  1. TFSDeleteProject 会创建要删除的所有组件的清单。

    这包括与测试管理器、Team Foundation Build 和 Team Foundation 版本控制集成的组件。

  2. TFSDeleteProject 删除在团队资源管理器中显示项目节点的组件。

  3. TFSDeleteProject 标记要删除的版本控制信息,但不立即删除此信息。

    该信息包括指定项目中的所有版本控制分支,但项目外部没有其他分支。

    • 如果父分支和子分支都位于项目中,则 TFSDeleteProject 将两者都标记为要删除。
    • 如果父分支和子分支位于不同的项目中,则 TFSDeleteProject 仅标记指定的分支。
    • 如果另一个项目是指定项目的分支,则 TFSDeleteProject 仅标记指定的项目。 删除指定项目后,分支项目将成为孤立项目。
  4. TFSDeleteProject 立即删除生成数据,包括信息和核心数据、生成定义、生成代理以及与项目关联的测试结果。 该工具不会删除构建文件输出位置。

    在创建使用相同的生成放置位置的项目之前,无需删除旧项目的生成放置位置。

    如果指定的项目包含大量的生成数据,则删除操作可能不会在超时期限内完成。

    若要解决此问题,请参阅“增加 Time-Out 时段”,然后再次运行 TFSDeleteProject。

  5. TFSDeleteProject 立即删除属于指定项目的工作项和工作项字段,并删除所有非共享元数据。

    如果指定的项目包含大量的工作项数据,则删除操作可能不会在超时期限内完成。

    若要解决此问题,请参阅“增加 Time-Out 期”,然后再次运行 TFSDeleteProject。

阶段 2:TFSDeleteProject 删除项目网站

在第二个阶段中,TFSDeleteProject 删除以下数据:

重要

这些步骤可能需要很长时间才能完成,在此期间,这些步骤可能会降低服务器性能。

  • TFSDeleteProject 使用 Reporting Services API 删除承载 Reporting Services 的服务器上的报表。
  • TFSDeleteProject 从承载 SharePoint 产品的服务器中删除项目门户网站。

只有当项目拥有该网站且命令行中未排除删除网站的操作时,才会执行此步骤。 假设多个项目可能指向一个网站,但只有其中一个项目可以是所有者,而默认情况下,此项目的报表/仪表板会自动使用该项目。

注意

在删除项目之前,可以通过验证门户设置来确认 Reporting Services 和 SharePoint 产品正在使用正确的项目 URL。 有关详细信息,请参阅 添加项目门户

如果 TFSDeleteProject 成功删除上述所有数据元素,则会返回“完成”消息。

若要验证此结果,请参阅“验证项目组件是否已删除”。

如果未删除一个或多个组件,则即使无法删除所有数据元素,也可以使用 /force 选项继续删除过程来重新运行 TFSProjectDelete。

使用此选项 TFSDeleteProject,跳过无法删除的组件,返回错误消息,删除下一个组件,并使项目元数据和安全设置保持不变。

可能保持未删除的数据

TFSDeleteProject 成功完成后,以下数据可能保留在部署中:

  • 立方体中的项目信息。

    项目数据在多维数据集中保留,直到重新生成多维数据集,届时仓库控制器服务会移除 Azure DevOps 数据库中已删除的所有历史生成数据。

  • 构建拖放文件和文件夹

    生成二进制文件、生成日志文件和包含测试结果的日志文件在生成过程中发布。

    这些文件的位置不会被删除。 如果要删除这些文件,必须手动删除这些文件。

  • 共享的工作项跟踪元数据。

    TFSDeleteProject 不会删除项目之间共享的工作项跟踪的任何元数据。

  • 版本控制货架集,其中包含共享代码

    如果货架集中包含来自多个项目的代码,则不会删除版本控制搁置集。

验证项目删除

可以通过确认项目节点不再显示在团队资源管理器中,并且项目门户网站和报表文件夹不再存在,从而验证项目删除是否成功。

  1. 打开团队资源管理器并验证项目是否未显示为项目节点。

  2. 打开 Internet Explorer 并键入项目门户网站的 URL。 验证站点是否不再存在。

  3. 在 Internet Explorer 的“地址”框中,使用以下 URL 格式之一键入 Reporting Services 网站的 URL:

    • http://ReportingServices/Reports
    • http://ReportingServices/Reports_TFSInstance
  4. 在报表管理器中,选择“显示详细信息”。

  5. 验证已删除项目的文件夹是否不再出现。

    选择根文件夹 TfsReports,然后选择为项目集合命名的文件夹。

    不应再有一个文件夹,其中包含已删除项目的名称。

  6. 如果报告或网站仍然存在,请参阅下一步操作。

删除部分项目后删除剩余组件

如果项目门户网站和报表文件夹在删除项目后仍保留,请手动删除网站和文件夹。

  1. 登录到承载所删除项目的 Reporting Services 的服务器。

  2. 打开 Internet Explorer,在“地址”框中键入 Reporting Services 网站的 URL,使用以下 URL 格式之一:

    • http://localhost/Reports
    • http://localhost/Reports_TFSInstance
  3. 在报表管理器中,选择“显示详细信息”。

  4. 选择根文件夹 TfsReports,然后选择为项目集合命名的文件夹。

  5. 选中已删除的项目的复选框。

  6. 选择“删除”。

  7. 选择“确定”以确认要删除项目的报表文件夹。

  8. 若要删除已删除项目的项目门户网站,请参阅Microsoft网站上的以下页面:

创建、编辑和删除 Windows SharePoint Services 网站

增加超时期限

默认情况下,每个由 TFSDeleteProject 命令发出的 Web 服务调用以删除组件时,操作必须在 10 分钟内完成。 如果有 6 个调用,则此过程最多可能需要一小时。 如果要删除与大量数据关联的项目,可以暂时增加此超时期限。

注意

当您延长超时时限时,所做更改会影响所有的 Web 服务调用。 通常,你想要将超时期限保持在 10 分钟内,以防止 Web 服务调用降低服务器性能,并导致用户长时间使用用户界面被锁定。 因此,成功删除项目后,应将超时期限改回 10 分钟。

先决条件

若要完成这些过程,你必须是应用程序层服务器上的 Windows 管理员。

重要

错误地修改计算机的注册表可能会导致计算机变得不稳定。 如果不熟悉注册表,则不应添加或删除条目,也不应以任何方式对其进行修改。

  1. 登录到应用程序层服务器。

  2. 选择“开始”、“运行”、“键入 regedit”,然后选择“确定”。

  3. 在浏览器窗格中,展开HKEY_ LOCAL_MACHINE:

    • 如果服务器运行 32 位操作系统,请展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\TeamFoundation\RequestSettings。
    • 如果服务器运行 64 位操作系统,请展开:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432\Microsoft\VisualStudio\11.0\TeamFoundation\RequestSettings。
  4. 如果 TeamFoundation\RequestSettings 密钥不存在,请执行以下步骤来创建它:

    1. 打开 TeamFoundation 的上下文菜单,指向“新建”,然后选择“键”。
    2. 将密钥命名为 RequestSettings。
    3. 打开 RequestSettings 的上下文菜单,指向“新建”,然后选择“DWORD 值”。
    4. 将新值命名为 DefaultTimeout。
  5. 打开 DefaultTimeout 的上下文菜单,然后选择“修改”。

  6. 在“值数据”中,键入超时周期(以毫秒为单位),然后选择“十进制”。

    例如,若要将超时期限增加到 30 分钟,请键入 1800000。 若要将超时期限改回 10 分钟,请键入 600000。

  7. 选择“确定”。

  8. 在“文件”菜单上,选择“退出”。

以下命令从项目集合 Collection1 和团队资源管理器中删除与 Azure DevOps Server AdventureWorks1 服务器上的项目 StoreFront 关联的所有组件。

TFSDeleteProject /force /collection:http://AdventureWorks1:8080/tfs/Collection1 StoreFront