uwpazure-devops.net-native

UWP Build fails when using 64BitCompiler


I have a UWP Application which I build via a CI / CD pipeline on Azure DevOps in a Hosted Windows 2019 with VS2019 Worker. As of late my store submission failed and the support told me to add the following flag to my CSPROJ to solve that issue:

<Use64BitCompiler>true</Use64BitCompiler> 

Now with that flag the build on Azure DevOps fails with the following line:

C:\Program Files (x86)\Microsoft SDKs\UWPNuGetPackages\microsoft.net.native.compiler\2.2.3\tools\Microsoft.NetNative.targets(801,5): error : ILT0005: 'C:\Program Files (x86)\Microsoft SDKs\UWPNuGetPackages\runtime.win10-x64.microsoft.net.native.compiler\2.2.3\tools\x64\ilc\Tools64\nutc_driver.exe @"d:\a\1\s\Src\MoneyFox.Uwp\obj\x64\Release\ilc\intermediate\MDIL\MoneyFox.Uwp.rsp"' returned exit code 1 [d:\a\1\s\Src\MoneyFox.Uwp\MoneyFox.Uwp.csproj]

Interesstingly I can build locally without any issue

Here's the YAML of the build step:

steps:
- task: VSBuild@1
  displayName: 'Build Windows Project'
  inputs:
    solution: Src/MoneyFox.sln
    msbuildArgs: '/p:AppxPackageDir="$(Build.ArtifactStagingDirectory)\AppxPackages\\"   /p:UapAppxPackageBuildMode=StoreUpload  /p:AppxBundlePlatforms="$(BuildPlatform)" /p:AppxBundle=Always'
    platform: x64
    configuration: '$(BuildConfiguration)'
    clean: true
    msbuildArchitecture: x64

IlcRepo Link: https://1drv.ms/f/s!Ang3D30bKDOhqNwdQsf0a3q1fAbfSg Repository: https://github.com/MoneyFox/MoneyFox (The ilcRepro is based on the branch "native-repro")


Solution

  • The issue was tracked down to the default agents for CI/CD not having enough memory (7GB) to complete compilation. We've looked at places where we can reduce memory pressure for these scenarios but that work wouldn't be available for a while as it's more structural than bug fix.

    In the mean time there are two things worth trying to get unblocked.

    1. Run the optimizer as single threaded. This helps reduce memory pressure by having only one copy of things to the optimizer to think about. Add this to your csproj file: <SingleThreadNUTC>true</SingleThreadNUTC>
    2. Upgrade the hosted agent to a Standard_DS2_v2 or larger (that seems to work for most folks)