繁体   English   中英

Azure DevOps 管道中的 XamarinAndroid 任务无故失败

[英]XamarinAndroid task in Azure DevOps pipeline failing without reason

我有一个适用于 Android 的 Xamarin Forms 应用程序,当我在 VS 中本地构建它时,它工作得非常好。 我已经设置了一个管道来在 Azure DevOps 中构建它,但是XamarinAndroid@1任务一直失败,没有任何实际的错误消息; 它只是停止。 管道视图中相应的“错误消息”只是“未找到此问题的消息”。 之前我什至加了一个VSBuild@1任务,成功编译了所有项目(包括单元测试,都成功了)。

失败的任务本身没什么特别的,非常默认的东西:

- task: XamarinAndroid@1
  inputs:
    projectFile: '**/*droid*.csproj'
    outputDirectory: '$(outputDirectory)'
    configuration: '$(buildConfiguration)'
    jdkOption: 'JDKVersion'

在向另一个库添加间接依赖项之前,它甚至过去也可以工作,而另一个库又具有一些 NuGet 依赖项。 NuGetToolInstaller@1NuGetCommand@2在管道开始时也能正常工作,查找、安装和验证所有外部包。 如前所述,本地一切正常,即使是普通的 VS 构建任务也可以构建一切。 我什至可以在 XamarinAndroid-task 的构建日志中看到新添加的库构建时没有任何错误。 只有当它声称要构建我实际的 Xamarin 项目时,它才会默默地死去。

该构建日志的最后几行是:

...
CoreGenerateAssemblyInfo:
Skipping target "CoreGenerateAssemblyInfo" because all output files are up-to-date with respect to the input files.
CssG:
Skipping target "CssG" because it has no outputs.
CoreCompile:
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe /noconfig /unsafe- /checked- [... all the build options in the world ...]
  Using shared compilation with compiler from directory: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
XamlC:
  Compiling Xaml, assembly: obj\Release\netstandard2.0\[My Main Xamarin Project].dll
Finishing: XamarinAndroid

任何指向可能是什么问题的指针,在哪里查看(是我的项目,Nuget 依赖项,还是管道定义本身?),或者如何至少从中获取错误消息?

因此,在与@jdweng 的评论中(半合法的^^)讨论之后,我发现了罪魁祸首:我确实在各种库中使用了不同的框架,这不知何故让管道构建失败。

由于 DevOps 代理作业(据我所知)总是在空白的新 VM 上运行,因此遗留文件不会成为问题(加上各种取消/检查“干净”选项也没有改变任何东西)。 同样重要的是要注意,所有内容都只是纯粹的构建(也就是将 *.sln 文件转换为 *.apk 文件),还没有发生实际部署,显然没有文件在本地和远程机器之间手动交换,因为一切总是从头开始构建。

之前的详细项目结构:

XamarinMainProject           both .Net Standard 2.0
 & XamarinMainProject.Android
'-> ViewModelLibrary              .Net Framework 4.6.1
     '-> OneCodeLibrary           .Net Framework 4.6.1
     '-> TheOtherLibrary          .Net Standard 2.0

有趣的是,当TheOtherLibrary包含在构建中时,一切正常(本地和 DevOps 上)。 但是一旦它被引用,DevOps Build 如上所述就失败了,而本地一切都按预期进行。

现在我已经将两个 4.6.1 项目重新创建为 .Net Standard 2.0 并且管道也很高兴。

当然,这仍然提出了几个问题:

  1. 为什么它可以在本地工作(甚至在具有VSBuild任务的 DevOps 上),但不能在XamarinAndroid任务的 DevOps 上工作?
  2. 几乎更重要的是:为什么根本没有错误消息(更不用说有用的消息了)?
  3. 这是否应该作为错误报告给 Xamarin (如果是,任何提示在哪里这样做)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM