簡體   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