Microsoft.NET.Sdk.CrossTargeting.targets 上的 Visual Studio Build in Azure DevOps 管道错误
Posted
技术标签:
【中文标题】Microsoft.NET.Sdk.CrossTargeting.targets 上的 Visual Studio Build in Azure DevOps 管道错误【英文标题】:Visual Studio Build in Azure DevOps pipeline errors on Microsoft.NET.Sdk.CrossTargeting.targets 【发布时间】:2020-03-27 00:32:21 【问题描述】:我正处于将代码库从 .NET Framework 迁移到 .NET Standard 的早期阶段。我正在将我的解决方案中的一些基础项目转换为具有 net462 和 netstandard2.0 目标框架的 SDK 项目类型。
我所有的应用程序和服务仍然是 .NET Framework。
为了澄清,我有一个针对这两个框架的库项目,然后是具有多目标项目作为参考的其他库项目(仅限 .NET Framework),然后是引用所有框架的应用程序(仅限 .NET Framework)以上。
当我在 Visual Studio 2019 中编译我的解决方案时,它编译得很好。如果我进行手动发布,那也可以。但是,当我尝试对 Azure DevOps 进行 PR 时,我的 CI 构建管道错误并出现此错误:
[错误]C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.CrossTargeting.targets(27,5):错误:“发布' 不指定目标框架不支持目标。当前项目面向多个框架,请为发布的应用指定框架。
Google 建议,如果我使用的是 dotnet -publish,我需要提供一个框架参数。但是 VSBuild 任务似乎不支持这一点。
我的管道的相关 YAML 是:
steps:
- task: VSBuild@1
displayName: 'Check for Build Errors'
inputs:
solution: '$(SolutionName)'
msbuildArgs: '/target:publish'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
maximumCpuCount: true
还有想法或澄清问题?
【问题讨论】:
【参考方案1】:在msbuildArgs
中为目标框架指定 MSBuild 参数是否会为您提供所需的结果?
msbuildArgs: '/target:publish /p:TargetFramework=net462'
dotnet msbuild
命令的reference 表示支持相同的 MSBuild 参数,并引导您(以迂回的方式?)here,您可以在其中看到用于不同目标框架的名字对象。
【讨论】:
仅供参考,对于DotNetCoreCLI@2
“发布”命令(在其arguments
,即arguments: '/p:TargetFramework=net462'
)中,同样的论点可能成立
添加 TargetFramework 参数并没有修复错误
也许您正在针对解决方案文件 (sln
) 发布,而不是在项目级别发布(不清楚您的管道的 $(SolutionName)
引用的是什么)。见问题评论here
我绝对是针对解决方案发布的(这样我们就不必在每次向解决方案中添加项目时都更改管道)
嗯,很糟糕,但完全明白了。链接问题中的next comment(从去年 2 月开始)看起来与您的困境相似。我建议您将自己添加到该列表中,看看是否可以对解决方案(没有双关语)产生任何影响。以上是关于Microsoft.NET.Sdk.CrossTargeting.targets 上的 Visual Studio Build in Azure DevOps 管道错误的主要内容,如果未能解决你的问题,请参考以下文章