【问题标题】:System.OutOfMemoryException when packaging/publishing Azure project打包/发布 Azure 项目时出现 System.OutOfMemoryException
【发布时间】:2014-07-26 20:22:03
【问题描述】:

我一直在尝试打包/发布我的 Azure 项目一段时间(但无济于事)。我尝试了以下方法:

  • 右键单击 -> 从 Visual Studio 打包/发布 (OutOfMemoryException)
  • CSPack(我关闭了它,因为它在接近 2 小时后仍然保持运行)
  • MSBuild (OutOfMemoryException)

如何规避这个 OutOfMemoryException?我目前正在运行具有 12GB RAM 的 VS2012,所以虽然我认为该项目非常大(很多很多子项目),但我认为我的机器能够处理它。例外情况如下:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Windows Azure 工具\2.1\Microsoft.WindowsAzure.targets(2866, 5): 错误: 引发了“System.OutOfMemoryException”类型的异常。 [C:\Users\..\WindowsAzure.ccproj]

非常沮丧,如果有人能给我一些友好的建议,我将非常感激!

【问题讨论】:

    标签: .net visual-studio-2012 azure msbuild out-of-memory


    【解决方案1】:

    发生此错误的原因不仅在于包大小。我们偶尔会收到此错误,但只需重新启动 Visual Studio 即可解决此问题。

    【讨论】:

    • 好笑。但确实如此。
    • 在 vs2017 中仍然如此
    • 重启确实可以解决问题,但如果有更优化的解决方案会很好。
    • @spadelives,真的。我评价最高的答案是“将其关闭然后再打开”:'-(
    【解决方案2】:

    这通常是由于试图将太多内容放入您的包中,而不是由于您引用了多少项目。可以放入 .cspkg zip 流的最大大小,可以上传到 Azure (600 MB) 的最大大小为 .cspkg。

    您应该从您的包中删除所有静态内容,例如图像、音频或视频,并将这些资产放入 blob 存储中。您可以更改 href 以便客户直接从 blob 存储下载内容,或者您​​可以使用 Azure Boostrapper 之类的东西在启动时将内容下载到 VM。

    另外,顺便说一句,您计算机上的 RAM 量与在任何应用程序中获取 OutOfMemoryException 没有任何关系(除非您的交换文件太小,但这是另一个问题)。

    【讨论】:

    • 酷!不知道我可以部署到 Azure 的最大大小有限制:)
    • 有办法解决这个问题吗?
    【解决方案3】:

    在将调试日志记录转为诊断并运行两次后发现了这一点。尝试复制/粘贴日志时开始弹出异常。

    问题在于输出日志过多,以至于导致在同一线程中运行的 msbuild 进程饿死 ram。将输出日志级别调低,它应该会修复它。

    【讨论】:

      【解决方案4】:

      在以前能够很好地构建和打包代码的 32 位机器上遇到完全相同的问题,我尝试了上述所有建议,但均无济于事。出于绝望,我安装了 Azure SDK v2.2 和 Visual Studio (2012),然后打开了解决方案,构建和打包步骤第一次完成,没有出现任何错误。我怀疑某些 Azure 设置已被我们雇用以帮助升级我们的 CMS(Sitefinity)的承包商更改了,该承包商使用 64 位机器并更改了配置以匹配他在本地运行时的机器。

      因此,拥有 12GB 内存意味着您应该已经在 64 位计算机上,但请查看 Azure 设置,或者至少查看您正在使用的程序集。可能是您在某处包含了对 x86 程序集的引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 2020-08-23
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2013-04-22
        • 2018-06-27
        相关资源
        最近更新 更多