我使用一个DotNetCoreCLI任务来构建一个项目。但是我想用MSBuild 16.0构建它,这似乎是目前不可能的。以下是事实(来自Azure管道的片段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命令总是使用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 is only supported on MSBuild 16 and above. Current version: 15.当然,降低福迪的评级可能是一个解决方案。但是我更喜欢使用MSBuild 16,因为它应该在这个vm映像中可用。有办法做到这一点吗?
发布于 2019-08-15 13:18:06
我认为您最好在任务中指定.NET core SDk 2.2.401的更高版本。
如果我使用SDK2.2.101构建项目,我将收到与您相同的错误消息:

要解释这一点,您可以看到文档中提到的以下内容

如果您使用的.Net核心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构建项目之后,如下面的图所示:

它采用的MSbuild版本是16。因此,它满足了底层fody文件的定义:

这是底层fody文件的一部分。您可以看到,它被定义为只有您的MSbuild版本为16,否则它会像您收到的那样抛出错误消息。
因此,为了解决您的问题,我建议您尝试将.Net Core指定为2.2.401或更高版本。
https://stackoverflow.com/questions/57506354
复制相似问题