【问题标题】:Visual Studio Build in Azure DevOps pipeline errors on Microsoft.NET.Sdk.CrossTargeting.targetsMicrosoft.NET.Sdk.CrossTargeting.targets 上的 Visual Studio Build in Azure DevOps 管道错误
【发布时间】: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

还有想法或澄清问题?

【问题讨论】:

    标签: azure-devops visual-studio-2019 .net-standard-2.0


    【解决方案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 月开始)看起来与您的困境相似。我建议您将自己添加到该列表中,看看是否可以对解决方案(没有双关语)产生任何影响。
    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多