使用 ASP.NET 生成.NET Framework

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

注意

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

注意

本指南适用于 TFS 版本 2017.3 及更高版本。

创建第一个管道

你是新Azure Pipelines? 如果是这样,建议在继续其他部分之前尝试本部分。

获取代码

为此存储库分叉GitHub:

在 2019 年 1 月将Azure DevOps Server Git 存储库:

在 TFS 中将此存储库导入 Git 存储库:

https://github.com/Microsoft/devops-project-samples.git

示例存储库包括多个不同的项目,本文的示例应用程序位于:

https://github.com/Microsoft/devops-project-samples

你将使用 中的代码 /dotnet/aspnet/webapp/azure-pipelines.yml文件需要从 文件夹中运行 dotnet/aspnet/webapp/Application ,生成才能完成。

示例应用是一个Visual Studio解决方案,包含两个项目:

  • 面向 ASP.NET 4.5 的 .NET Framework Web 应用程序项目
  • 单元测试项目

登录到 Azure Pipelines

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

在所选组织中,创建项目。 如果组织中没有任何项目,则会显示“创建项目并开始使用”屏幕。 若未显示,请选择仪表板右上角的“创建项目”按钮。

注意

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

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

  • 保存管道并排入生成队列,以查看其运行。

生成环境

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

  • 用于 windows-2019 Windows Server 2019 Visual Studio 2019

也可使用自 承载代理来 运行生成。 如果你有一个大型存储库,并且希望避免每次生成将源代码下载到新计算机,这非常有用。

生成在自 承载代理 中运行。 请确保在代理上安装所需的Visual Studio版本。

生成多个配置

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

  1. 单击" 变量" 选项卡并修改以下变量:

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

    • 选择"多配置"。
    • 指定 乘数:
  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'