在 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 构建工具