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

VSTS构建Xamarin Forms Android项目报错:project.assets.json未找到

解决VSTS(Azure DevOps)构建Xamarin.Forms Android项目时project.assets.json缺失的问题

这个问题我在Azure DevOps构建Xamarin.Android项目时也碰到过,核心就是NuGet依赖还原的步骤没正确执行或者顺序不对,毕竟project.assets.json是NuGet还原后生成的依赖清单文件。结合你的情况(本地正常、iOS构建没问题),给你几个针对性的解决办法:

1. 确保NuGet还原步骤在MSBuild构建之前执行

iOS构建流程可能默认帮你处理了NuGet还原,但Android构建需要显式执行还原任务。在YAML里把NuGet还原放在MSBuild任务前面:

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln' # 或者直接指定包含MyApp.Controls的解决方案
    feedsToUse: 'select'
    # 如果用了私有NuGet Feed,这里配置你的Feed信息

2. 给MSBuild任务添加强制还原参数

如果不想单独加NuGet任务,也可以在MSBuild的参数里强制先执行还原再构建,同时建议直接指定Android项目而非整个解决方案,减少其他项目的干扰:

- task: MSBuild@1
  inputs:
    solution: '**/MyApp.Android.csproj'
    platform: 'Any CPU'
    configuration: 'Release'
    msbuildArguments: '/t:Restore;Build /p:AndroidSdkDirectory=$(AndroidSdkDirectory)'

这样MSBuild会先处理MyApp.Controls等依赖项目的NuGet还原,再执行构建。

3. 清理构建目录,避免缓存干扰

VSTS构建代理的缓存可能残留旧的obj目录文件,导致还原不彻底。可以在构建开始前添加清理任务:

- task: DeleteFiles@1
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: '**/obj/**'

或者直接在MSBuild参数里加上Clean目标:/t:Clean;Restore;Build

4. 检查并匹配.NET SDK版本

错误里显示用的是dotnet sdk 2.1.104,这个版本比较老旧,可能和你的Xamarin.Forms版本不兼容。可以在YAML里指定项目需要的SDK版本:

- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '3.1.x' # 根据你的项目实际依赖调整,比如Xamarin.Forms 5.x建议用更高版本SDK

5. 检查类库项目的引用配置

错误指向MyApp.Controls,确认这个类库是.NET Standard项目,并且被Android项目正确引用。本地能构建说明配置没问题,但CI环境下可以尝试在NuGet还原时单独指定这个类库的项目文件,确保它的依赖被正确还原。

我当时碰到这个问题就是因为把NuGet还原步骤放在了MSBuild之后,调整顺序后就解决了,你可以先从步骤1开始尝试,应该能快速定位问题。

内容的提问来源于stack exchange,提问作者François

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:47:06