在 Azure Pipelines 上构建 .NET Core 3.0

Posted

技术标签:

【中文标题】在 Azure Pipelines 上构建 .NET Core 3.0【英文标题】:Build .NET Core 3.0 on Azure Pipelines 【发布时间】:2019-06-13 05:51:39 【问题描述】:

是的,我知道 .NET Core 3.0 仍处于预览阶段。我想在 Azure Pipelines 上构建它。

有没有简单的方法可以做到这一点?

目前出现此错误:

/usr/share/dotnet/sdk/2.2.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(137,5):错误NETSDK1045:当前的.NET SDK不支持面向 .NET Core 3.0。以 .NET Core 2.2 或更低版本为目标,或者使用支持 .NET Core 3.0 的 .NET SDK 版本。

编辑

我找到了关于这个的官方文档:

https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/dotnet-core?view=azure-devops

【问题讨论】:

更新:现在是核心 3.0 发布 3 周后,Azure (DevOps) Pipelines 尚未更新为核心 3.0 构建支持。除非您检查“includePreviewVersions”,否则“UseDotNet@2”任务不会安装核心 3.0。 【参考方案1】:

您可以在管道期间使用 .Net Core SDK Installer 任务安装 .Net Core SDK 3.0:

- task: UseDotNet@2
  displayName: 'Install .net core 3.0 (preview)'
  inputs:
    packageType: sdk
    version: '3.0.100-preview6-012264'
    installationPath: $(Agent.ToolsDirectory)/dotnet

我指定了.net core sdk 3.0的最后一个预览版,你可以放一个更早的版本,你可以在版本列表中找到here。

另一个选项是指定3.0.x 并启用预览版本:

version: 3.0.x
includePreviewVersions: true

安装结果:

【讨论】:

酷,你比我早一秒。这确实是最好的解决方案,最新版本可以在这里找到:dotnetcli.blob.core.windows.net/dotnet/Sdk/master/… 重要提示:DevOps 管道中的构建任务有一个版本选择器。我没有选择最新版本的任务(没有意识到他们的任务是版本化的,很好的功能)。有一条信息指出我选择的任务版本不适用于最新版本的 .net 核心。我也看不到包含预览选项。更改任务版本显示更多选项,警告消失。 您是如何在此处编辑 .yml 文件的?我似乎无法通过 UI 找到选项? @AzySır 你是什么意思? UseDotNet 末尾的@2 是什么意思?【参考方案2】:

您可以通过提供 3.x 而不是特定版本来获取最新的 .NET Core 3 SDK。另请注意 includePreviewVersions: true,这是完成这项工作所必需的。

- task: UseDotNet@2
  displayName: 'Use dotnet sdk 3.x'
  inputs:
    version: 3.x
    includePreviewVersions: true

你最终会得到这样的结果:

来源:.NET Core Tool Installer task

【讨论】:

是的,这就是要走的路——是的,您可以从 3.0-previewX SDK 映像构建,但是下载和设置容器映像会在构建过程中再增加 60 秒。 您会为此使用哪个构建代理?【参考方案3】:

如果有人使用 Web GUI 而不是 yaml 文件。 可以使用windows-2019 值设置代理规范。

dotnet test等步骤将开始使用.Net Core 3.0:

【讨论】:

我找不到你是怎么做到的?我有一个 Azure 托管代理。没关系,找到了!如果您编辑选择代理池的构建步骤,就会发现它。谢谢! 编辑管道时,选择“管道”。它位于“获取资源”和“代理”标题上方的顶部。【参考方案4】:

您还可以通过“旧”管道编辑器安装 SDK。添加新任务并搜索“.NET Core SDK 安装程序”。然后将顶部的版本切换到最新的预览版本,它将为您提供更多选项,例如“包含预览版本”复选框。您仍然需要手动输入您想要的版本。

【讨论】:

谢谢,我也尝试过这样做,但仍然收到构建错误。也许我做错了。【参考方案5】:

您可以使用.NET Core Tool Installer Task 指定 .net 核心 SDK 版本。 但我认为它还不允许 3.0 显然它允许,所以您可能需要创建一个带有 3.0 的容器并将其用作构建环境。那会起作用的。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/container-phases?view=azure-devops&tabs=yaml

示例 yaml:

resources:
  containers:
  - container: inflation
    image: yyy
    endpoint: xxx

jobs:
- job: inflate_infrastructure
  container: inflation << has to match the container name above
  pool:
    vmImage: 'Ubuntu-16.04'
  steps:
  - zzz

【讨论】:

【参考方案6】:

您可以添加任务Use .NET Core 并在Version 字段中插入所需的版本,例如3.0.100-preview9-014004,将Include Preview Versions 标记为选中。

在任何其他 .NET Core 任务之前执行此任务。

【讨论】:

【参考方案7】:

我使用 .net core 2.2,但它昨天发布了 .net core 3.0 preview 6。你可以使用下面的配置。我建议检查release-metadata serves。

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core sdk'
  inputs:
    packageType: sdk
    version: 3.0.0-preview5
    installationPath: $(Agent.ToolsDirectory)/dotnet

【讨论】:

以上是关于在 Azure Pipelines 上构建 .NET Core 3.0的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure DevOps Pipelines 上指定 Android SDK 构建工具版本

在 Azure Pipelines 的 Ubuntu 代理上构建 Android 项目时,SDK 目录不可写

Azure Pipelines 作业卡在构建 iOS 版本的 React Native 应用程序

Azure DevOps Pipelines 上的 Android SDK 构建工具

如何在 Azure Pipelines YAML 构建定义中接收修订

NG 构建在 Azure Pipelines 中失败,并出现 NPM 错误 134