【问题标题】:C#: Out of memory during dotnet build after migrate to NET 5C#:迁移到 NET 5 后 dotnet 构建期间内存不足
【发布时间】:2021-09-17 13:54:09
【问题描述】:

我们使用App Buddy 作为我们的 CI/CD 系统。今天我们将项目从ASP.NET Core 3.1 迁移到NET 5。在 dotnet 构建开始消耗大量 RAM(分配大约 10-12GB)之后,我们的服务器上没有那么多内存。

dotnet build 期间,在我们的 CI/CD 服务器上,我们得到Microsoft.CSharp.Core.targets(71,5): error : Process terminated. System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

我尝试过使用-maxCpuCount:1,但它不起作用。是否有可能限制dotnet build 可以使用的内存?

【问题讨论】:

  • 你能分享你的 dotnet 构建命令吗?尝试使用dotnet msbuild /maxcpucount:1 而不是dotnet build 在某些情况下有助于避免构建属性的神秘问题
  • @LeonidPavlov 我在帖子中提到它不适用于我的情况
  • @WojciechRak 我看到你用dotnet build,我建议用dotnet msbuild
  • @LeonidPavlov 不幸的是它也不起作用:dotnet msbuild project.csproj /maxcpucount:1 /p:RestorePackages=false /p:BuildProjectReferences=false /p:Configuration=ReleaseMicrosoft (R) Build Engine version 16.11.0+0538acc04 for .NET Copyright (C) Microsoft Corporation. All rights reserved./usr/share/dotnet/sdk/5.0.401/Roslyn/Microsoft.CSharp.Core.targets(71,5): error : Process terminated. System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

标签: c# .net continuous-integration out-of-memory .net-5


【解决方案1】:

在与团队进行了将近一周的搜索之后。我们找到了一种减少构建过程中内存消耗的方法。我们通过添加-p:RunAnalyzers=false 来解决它,它有很大帮助!其他解决方案无效。

dotnet build "project" -p:RunAnalyzers=false

我们也可以在 csproj 中禁用它(而不是在 VS 中运行分析器,但我认为这不是一个好主意)。

这不是 100% 解决问题,但它允许我们运行构建,所以当我找到限制 msbuild ram 使用的解决方案时,我不会运行分析器

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 1970-01-01
    • 2022-01-22
    • 2018-01-07
    • 2023-02-04
    • 2023-03-16
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多