首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure管道中的MSBuild任务中指定DotNetCoreCLI版本

在Azure管道中的MSBuild任务中指定DotNetCoreCLI版本
EN

Stack Overflow用户
提问于 2019-08-15 07:43:17
回答 1查看 2.9K关注 0票数 3

我使用一个DotNetCoreCLI任务来构建一个项目。但是我想用MSBuild 16.0构建它,这似乎是目前不可能的。以下是事实(来自Azure管道的片段Yaml):

代码语言:javascript
复制
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:

代码语言:javascript
复制
==============================================================================
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就会抱怨:

代码语言:javascript
复制
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,则福迪告诉我的错误将在稍后识别出来。

代码语言:javascript
复制
 Fody is only supported on MSBuild 16 and above. Current version: 15.

当然,降低福迪的评级可能是一个解决方案。但是我更喜欢使用MSBuild 16,因为它应该在这个vm映像中可用。有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
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或更高版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57506354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档