【发布时间】:2019-09-24 11:30:48
【问题描述】:
我最近将我的资源转移到 azure devOps 以使用 cd/ci 和所有其他很酷的东西。 现在我创建了我的第一个构建管道来构建我的 Xamarin 项目的 android 部分。但我最终收到一条错误消息,找不到引用项目的资源,我将进行包还原并重试。 现在,由于我有 azure 托管的构建代理而不是自托管的,所以在构建之前我无法正确设置代理。 但我想应该有一些方法来正确配置构建管道来完成所有必要的事情。 只是我不知道应该在我的 yaml 文件中添加什么来修复这些东西。
这是我收到的错误消息:
##[error]C:\Program Files\dotnet\sdk\2.2.105\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file 'd:\a\1\s\*****\*****\*****\*****\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.
问题是,这个文件应该是通过编译引用的项目生成的,而不是 nuget 包的一部分。
这是我自己想出来的构建管道。
# Xamarin.Android
# Build a Xamarin.Android project.
# Add steps that test, sign, and distribute an app, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/xamarin
trigger:
- Share/main
pool:
vmImage: 'VS2017-Win2016'
variables:
buildConfiguration: 'Debug'
outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'
steps:
- task: NuGetToolInstaller@1
inputs:
versionSpec: 5.1.0
- task: NuGetCommand@2
displayName: 'Restore NuGet Packages'
inputs:
command: restore
restoreSolution: '**/*.sln'
- task: XamarinAndroid@1
inputs:
projectFile: 'Mobile4/Droid/Mobile4.Droid.csproj'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
- task: AndroidSigning@3
inputs:
apksign: false
zipalign: false
apkFiles: '$(outputDirectory)/*.apk'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(outputDirectory)'
构建总是在 XamarinAndroid 步骤上中断
我希望你能帮助我。 解决方案必须在某个地方,我现在看不到它。 提前谢谢。 小牛
【问题讨论】:
-
“命令:恢复”的目的是什么?当您使用 macOS 最新的 vmImage 时,它是否有效?另外,您能否分享一下您的解决方案的文件结构?你也尝试添加#clean:true
-
根据报错信息,这是一个.netcore项目,使用的SDK是2.2.105。文件“obj\project.assets.json”取决于包还原。所以,根本原因是你的包恢复方法不正确,那么文件“project.assets.json”没有恢复成功。在您的 YAML 中,您使用的包还原任务是 Nuget 还原任务,
nuget restore无法还原 .netcore 项目的文件“project.assets.json”。你应该使用dotnet restore。 -
我想我可能必须告诉管道所有必要的包所在的位置,但我认为这应该都在项目文件中,分别在解决方案文件中?尝试在本地构建时,我没有任何问题。
-
@Maverick1st 告诉 nuget.config 文件中的包位置。对于 pipeline,包还原过程基于 nuget.config 的配置。
标签: azure xamarin xamarin.android azure-devops azure-pipelines