我正处于将代码库从.NET Framework迁移到.NET Standard的早期阶段。我正在将解决方案中的一些基础项目转换为具有net462和netstandard2.0目标框架的SDK项目类型。
我的所有应用程序和服务仍然是.NET Framework。
为了澄清,我有一个针对这两个框架的库项目,然后是以多目标项目为参考的其他库项目(仅限.NET Framework(,然后是引用以上所有内容的应用程序(仅限.NETFramework(。
当我在Visual Studio 2019中编译我的解决方案时,它编译得很好。如果我出版一本手册,那也很好。然而,当我试图对Azure DevOps进行PR时,我的CI构建管道出现了以下错误:
[error]C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.sdk\targets\Microsoft.NET.sdk.CrossTargeting.targets(27.5(:错误:如果未指定目标框架,则不支持"发布"目标。当前项目针对多个框架,请指定已发布应用程序的框架。
谷歌建议,如果我使用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
想法还是澄清问题?
在msbuildArgs
中为目标框架指定MSBuild参数是否能得到您想要的结果?
msbuildArgs: '/target:publish /p:TargetFramework=net462'
dotnet msbuild
命令的引用表示支持相同的MSBuild参数,并指导您(以迂回的方式🙄)在这里,您可以看到用于不同目标框架的名字。