gpt4 book ai didi

.net-core - 在 Azure Pipeline 的 DotNetCoreCLI 任务中指定 MSBuild 版本

转载 作者:行者123 更新时间:2023-12-05 02:59:49 25 4
gpt4 key购买 nike

我正在使用 DotNetCoreCLI 任务来构建项目。但我想用 MSBuild 16.0 构建它,到目前为止似乎不可能。以下是事实(来自 Azure Pipelines Yaml 的片段):

pool:
vmImage: 'windows-2019'
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet build'
inputs:
projects: '$(BuildProjectFilter)'
arguments: '--configuration $(BuildConfiguration) -:Platform=$(BuildPlatform) -p:VisualStudioVersion=16.0 -p:tv=16.0'

无论我尝试什么,dotnet build 命令始终使用 ToolsVersion 15.0:

==============================================================================
Task : .NET Core
Description : Build, test, package, or publish a dotnet application, or run a custom dotnet command
Version : 2.156.1
Author : Microsoft Corporation
Help : https://learn.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli
==============================================================================
[command]C:\windows\system32\chcp.com 65001
Active code page: 65001
[command]"C:\Program Files\dotnet\dotnet.exe" build d:\a\1\s\src\xxx.csproj --configuration release -p:Platform=x64 -p:VisualStudioVersion=16.0 -p:tv=16.0
Microsoft (R) Build Engine version 15.9.20+g88f5fadfbe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

如果我只提供 -tv:16.0 开关,MSBuild 会提示:

MSBUILD : error MSB1040: ToolsVersion is not valid. The tools version "16.0" is unrecognized. Available tools versions are "15.0".

如果我提供 -p:VisualStudioVersion=16.0 -p:tv=16.0 组合,Fody 稍后会识别错误

 Fody is only supported on MSBuild 16 and above. Current version: 15.

当然,降级 Fody 可能是一个解决方案。但我更愿意使用 MSBuild 16,因为它应该在此虚拟机镜像中可用。有办法实现吗?

最佳答案

我认为您最好在任务中指定更高版本的.NET core SDK 2.2.401

如果我使用 SDK 2.2.101 构建项目,我将收到与您相同的错误消息:

enter image description here

为了解释这一点,您可以查看 doc 中提到的以下内容:

enter image description here

如果您使用的 .Net Core SDK 版本低于 2.2.401,因为这些低版本的 SDK 无法兼容 VS2019。此时,即使你指定了VS 2019,它仍然会使用属于VS2017的构建引擎。这就是为什么在您的第一个错误日志中,此管道使用的构建引擎是 15.9.20+g88f5fadfbe

Microsoft (R) Build Engine version 15.9.20+g88f5fadfbe for .NET Core

作为测试,在我使用版本为 2.2.401 的 .Net Core SDK 构建项目后,如下图所示:

enter image description here

它采用的MSbuild版本是16,所以,它满足底层fody文件的定义:

enter image description here

这是底层 fody 文件的一部分。你可以看到,它被定义为只有你的 MSbuild 版本是 16,否则它会像你收到的那样抛出错误信息。

因此,为了解决您的问题,我建议您尝试在任务中将 .Net Core SDK 指定为 2.2.401 或更高版本。

关于.net-core - 在 Azure Pipeline 的 DotNetCoreCLI 任务中指定 MSBuild 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57506354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com