使用 .NET Framework 生成 ASP.NET 应用

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

注意

本文重点介绍如何使用 Azure Pipelines 生成 .NET Framework 项目。 有关 .NET Core 项目的帮助,请参阅 .NET Core

创建第一个管道

你是 Azure Pipelines 的新手吗? 如果是这样,我们建议先阅读本部分,然后继续阅读其他部分。

获取代码

在 GitHub 创建以下存储库分支:

在 Azure DevOps Server 2019 中将此存储库导入 Git 存储库:

https://github.com/Azure-Samples/app-service-web-dotnet-get-started

示例应用是使用 .NET 4.8 的 Visual Studio 解决方案。

登录到 Azure Pipelines

登录到 Azure Pipelines。 登录后,浏览器会转到 https://dev.azure.com/my-organization-name 并显示 Azure DevOps 仪表板。

  1. 在浏览器中,转到 dev.azure.com 并登录。
  2. 选择你的组织。
  3. 通过选择新建项目创建项目(如果是在组织中创建第一个项目)来创建一个新项目。
  4. 输入项目名称
  5. 选择项目的可见性
  6. 选择创建
  1. 在浏览器中,转到 Azure DevOps Server。
  2. 选择你的集合。
  3. 通过选择新建项目创建项目(如果是在集合中创建第一个项目)来创建一个新项目。
  4. 输入项目名称
  5. 选择项目的可见性
  6. 选择“创建”。

注意

此方案适用于 TFS,但以下某些说明可能与你正在使用的 TFS 版本不完全一致。 另外,你需要设置自托管代理,可能还需要安装软件。 如果你是新用户,可以先使用免费的 Azure DevOps 组织尝试执行此过程,从而获得更好的学习体验。 然后将该页面左上角的选择器从 Team Foundation Server 更改为 Azure DevOps。

  • 将示例代码放入自己的存储库中后,请按照创建第一个管道中的说明创建管道,然后选择“ASP.NET”模板。 这样会自动添加在示例存储库中生成代码所需的任务。

  • 保存管道,并将某个生成排入队列以查看其运作方式。

生成环境

可以使用 Azure Pipelines 生成 .NET Framework 项目,而无需设置自己的任何基础结构。 Azure Pipelines 中的 Microsoft 托管代理预装了多个已发布的 Visual Studio 版本,以帮助你生成项目。

  • windows-2022 用于带 Visual Studio 2022 的 Windows Server 2022

还可以使用自托管代理来运行生成。 如果你有一个大型存储库,想要避免将源代码下载到每个生成的新计算机,则这非常有用。

生成在自托管代理上运行。 请确保已在代理上安装必要的 Visual Studio 版本。

生成多个配置

通常需要在多个配置中生成应用。 以下步骤扩展了上述示例,以基于四种配置生成应用:[Debug, x86]、[Debug, x64]、[Release, x86]、[Release, x64]。

  1. 单击“变量”选项卡,修改以下变量:

    • BuildConfiguration = debug, release
    • BuildPlatform = x86, x64
  2. 选择“任务”并单击“代理作业”以更改作业的选项:

    • 选择“多配置”。
    • 指定“乘数”:BuildConfiguration, BuildPlatform
  3. 如果有多个生成代理,希望并行生成配置/平台配对,请选择“并行”。

还原依赖项

可以使用 NuGet 任务来安装和更新 NuGet 包依赖项。 还可以使用 NuGet 任务从 Azure Artifacts、NuGet.org 或其他外部或内部 NuGet 存储库下载 NuGet 包。

此代码从同一组织中的项目范围的源还原解决方案。

# Restore from a project scoped feed in the same organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-project/my-project-scoped-feed'
    includeNuGetOrg: false
    restoreSolution: '**/*.sln'