You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps中为Xamarin Forms Android库创建生成Nuget包的YAML流水线

问题修复方案

错误原因

  • 报错MSB4019的核心原因是你使用DotNetCoreCLI@2任务执行pack操作时,调用的是dotnet SDK内置的MSBuild,Windows-2019镜像中的dotnet SDK未集成Xamarin.Android专属的构建目标文件(Xamarin.Android.CSharp.targets),只有完整版Visual Studio附带的MSBuild才包含这些依赖。
  • 普通无平台绑定的Xamarin Forms类库可以正常打包,是因为不需要依赖Xamarin平台专属的构建目标。

修复方案

把原来的DotNetCoreCLI pack任务替换为MSBuild任务调用pack命令即可,以下是完整可用的YAML配置:

pool:
  vmimage: 'windows-2019'

variables:
  buildConfiguration: 'Release'
  outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'

steps:
- task: DotNetCoreCLI@2
  displayName: Restore Nuget packages
  inputs:
    command: 'restore'
    projects: '**/*.Droid.csproj'
    feedsToUse: 'select'
    vstsFeed: '426fe2cd-0983-468f-b5bd-8073930ec94c'

- task: XamarinAndroid@1
  displayName: Build project
  inputs:
    projectFile: '**/*.Droid.csproj'
    outputDirectory: '$(outputDirectory)'
    createAppPackage: true
    configuration: '$(buildConfiguration)'
    msbuildVersionOption: '16.0'

# 替换原DotNetCoreCLI pack任务,改用VS自带的MSBuild执行打包
- task: MSBuild@1
  displayName: Generate Nuget package
  inputs:
    solution: '**/*.Droid.csproj'
    msbuildVersion: '16.0'
    configuration: '$(buildConfiguration)'
    msbuildArguments: '-t:pack -p:PackageOutputPath=$(Build.ArtifactStagingDirectory)'

- task: DotNetCoreCLI@2
  displayName: Publish Nuget
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: '426fe2cd-0983-468f-b5bd-8073930ec94c'

可选简化方案

如果你的项目.csproj文件中已经配置了GeneratePackageOnBuild=true(也就是本地VS编译时自动生成Nuget包的配置),可以省略单独的打包步骤,直接在XamarinAndroid构建任务中添加输出参数即可生成nupkg:

- task: XamarinAndroid@1
  displayName: Build project
  inputs:
    projectFile: '**/*.Droid.csproj'
    outputDirectory: '$(outputDirectory)'
    createAppPackage: true
    configuration: '$(buildConfiguration)'
    msbuildVersionOption: '16.0'
    msbuildArguments: '-p:PackageOutputPath=$(Build.ArtifactStagingDirectory)'

配置完成后可直接删除单独的Generate Nuget package步骤。


内容的提问来源于stack exchange,提问作者Fer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:36:07