使用 64BitCompiler 时 UWP 构建失败
UWP Build fails when using 64BitCompiler
我有一个 UWP 应用程序,我在托管的 Windows 2019 中使用 VS2019 Worker 通过 CI / CD 管道在 Azure DevOps 上构建。最近我的商店提交失败,支持人员告诉我将以下标志添加到我的 CSPROJ 中以解决该问题:
<Use64BitCompiler>true</Use64BitCompiler>
现在使用该标志,Azure DevOps 上的构建失败并显示以下行:
C:\Program Files (x86)\Microsoft SDKs\UWPNuGetPackages\microsoft.net.native.compiler.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.3\tools\x64\ilc\Tools64\nutc_driver.exe @"d:\a\s\Src\MoneyFox.Uwp\obj\x64\Release\ilc\intermediate\MDIL\MoneyFox.Uwp.rsp"' returned exit code 1 [d:\a\s\Src\MoneyFox.Uwp\MoneyFox.Uwp.csproj]
有趣的是,我可以毫无问题地在本地构建
这是构建步骤的 YAML:
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
存储库:https://github.com/MoneyFox/MoneyFox
(ilcRepro是基于分支"native-repro")
问题被追踪到 CI/CD 的默认代理没有足够的内存 (7GB) 来完成编译。我们已经研究了可以减少这些场景的内存压力的地方,但这项工作暂时无法使用,因为它比错误修复更具结构性。
同时,有两件事值得尝试解除封锁。
- 运行 优化器为单线程。这有助于减少内存压力,因为只有一个副本供优化器考虑。将此添加到您的 csproj 文件中:
真
- 将托管代理升级到 Standard_DS2_v2 或更大(这似乎适用于大多数人)
我有一个 UWP 应用程序,我在托管的 Windows 2019 中使用 VS2019 Worker 通过 CI / CD 管道在 Azure DevOps 上构建。最近我的商店提交失败,支持人员告诉我将以下标志添加到我的 CSPROJ 中以解决该问题:
<Use64BitCompiler>true</Use64BitCompiler>
现在使用该标志,Azure DevOps 上的构建失败并显示以下行:
C:\Program Files (x86)\Microsoft SDKs\UWPNuGetPackages\microsoft.net.native.compiler.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.3\tools\x64\ilc\Tools64\nutc_driver.exe @"d:\a\s\Src\MoneyFox.Uwp\obj\x64\Release\ilc\intermediate\MDIL\MoneyFox.Uwp.rsp"' returned exit code 1 [d:\a\s\Src\MoneyFox.Uwp\MoneyFox.Uwp.csproj]
有趣的是,我可以毫无问题地在本地构建
这是构建步骤的 YAML:
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 存储库:https://github.com/MoneyFox/MoneyFox (ilcRepro是基于分支"native-repro")
问题被追踪到 CI/CD 的默认代理没有足够的内存 (7GB) 来完成编译。我们已经研究了可以减少这些场景的内存压力的地方,但这项工作暂时无法使用,因为它比错误修复更具结构性。
同时,有两件事值得尝试解除封锁。
- 运行 优化器为单线程。这有助于减少内存压力,因为只有一个副本供优化器考虑。将此添加到您的 csproj 文件中:
真 - 将托管代理升级到 Standard_DS2_v2 或更大(这似乎适用于大多数人)