打包/发布Azure项目时出现System.OutOfMemoryException

时间:2014-06-05 18:00:25

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

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

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

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

  

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Windows   Azure Tools \ 2.1 \ Microsoft.WindowsAzure.targets(2866,5):错误:   抛出了类型'System.OutOfMemoryException'的异常。 [C:\用户\ .. \ WindowsAzure.ccproj]

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

4 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:8)

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

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

另外,顺便说一句,你的机器上的RAM数量与任何应用程序中的OutOfMemoryException无关(除非你的交换文件太小,但这是一个不同的问题)。

答案 2 :(得分:1)

将调试日志记录转换为诊断并运行两次后将其计算出来。尝试复制/粘贴日志时,异常开始弹出。

问题是输出日志太过分了,它使在同一个线程中为ram运行的msbuild进程饿死。将输出日志记录级别降低,它应该修复它。

答案 3 :(得分:0)

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

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