使用 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 命令行工具,请打开安装 Visual Studio 或 Team Explorer 的命令提示符窗口,然后输入:

cd %programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE

在 32 位版本的 Windows 上,将 %programfiles (x86) % 替换为 %programfiles%。

先决条件

若要使用 TFSDeleteProject 命令,您必须是 Team Foundation Administrators 安全组或 Project 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 生成和 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,在“地址”框中,使用下列 URL 格式之一键入 Reporting Services 网站的 URL:

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

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

  5. 选择已删除项目的检查框。

  6. 选择“删除”。

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

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

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

增加超时期限

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

注意

当你增加超时时间时,此更改将影响所有 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