【问题标题】:Out of memory error when compiling UWP app in release mode with .Net native使用 .Net native 在发布模式下编译 UWP 应用程序时出现内存不足错误
【发布时间】:2016-07-09 19:48:39
【问题描述】:

我有一个解决方案,其中我的主要项目是一个 uwp 应用程序,以及该应用程序引用的另外两个项目:

  1. UWP 应用 ---> 参考 2.
  2. 通用类库---->参考3.
  3. PCL 库

2 --> 使用 EF7 和 SQLight。

3 --> 使用PCLCrypto

现在,当我处于针对本地计算机的调试模式 x86 时,一切都运行良好。

我想使用 .Net native tool chain 在发布模式下编译解决方案,这是我的配置:

当我启动编译时,它需要很长时间,而且 .Net 原生工具消耗了太多内存:

一段时间后,Visual Studio 出现 2 个错误,一切都停止了:

这是输出窗口的内容:

1>----- 构建开始:项目:ServerCommunication,配置: 释放任何 CPU ------ 1> ServerCommunication -> C:\Users\aymen\Documents\Visual Studio 2015\Projects\Applinova\Liberte\ServerCommunication\bin\Release\ServerCommunication.dll 2>------构建开始:项目:NewspaperDataLayer,配置: 发布 x86 ------ 2>C:\Users\aymen\Documents\Visual Studio 2015\Projects\Applinova\Liberte\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets(225,5): 警告:所有引用 ServerCommunication.csproj 的项目都必须 安装 nuget 包 Microsoft.Bcl.Build。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=317569。 2> 报纸数据层 -> C:\Users\aymen\Documents\Visual Studio 2015\Projects\Applinova\Liberte\NewspaperDataLayer\bin\x86\Release\NewspaperDataLayer.dll

3>------ 构建开始:项目:Liberte,配置:发布 x86

--这里有一些我刚刚跳过的警告

3> 启动 .NET Native 编译 3> 处理应用程序代码 3>C:\Users\aymen\Documents\Visual Studio 2015\Projects\Applinova\Liberte\Liberte\Resources.System.Linq.Expressions.rd.xml(35): 警告:方法'CreateLambda'内 找不到“System.Linq.Expressions.Expression”。 3>C:\Users\aymen\Documents\Visual Studio 2015\Projects\Applinova\Liberte\Liberte\Resources.System.Linq.Expressions.rd.xml(91): 警告:方法'ParameterIsAssignable'内 找不到“System.Linq.Expressions.Expression”。 3> 计算 应用程序关闭和生成互操作代码 3> 生成 序列化代码 3> 编译互操作代码 3> 清理 未引用的代码 3> 生成本机代码 3>STARTPROCESSTASK : 错误:内存不足 3>C:\Program Files (x86)\MSBuild\Microsoft.NetNative\x86\ilc\IlcInternals.targets(1129,5): 错误:ILT0005:'C:\ Program Files (x86)\MSBuild\Microsoft.NetNative\x86\ilc\Tools\nutc_driver.exe @"C:\Users\aymen\Documents\Visual Studio 2015\Projects\Applinova\Liberte\Liberte\obj\x86\Release\ilc\intermediate\MDIL\Liberte.rsp"' 返回退出代码 1 ========== 构建:2 成功,1 失败,0 最新,0 跳过 ========== ========== 部署:0 成功,0 失败,0 跳过 ==========

请问这可能有什么问题??

【问题讨论】:

    标签: c# visual-studio-2015 win-universal-app release .net-native


    【解决方案1】:

    我遇到了同样的问题(我也在使用 EF7 和其他库),但我使用 Visual Studio 15 preview 解决了(它不是 Visual Studio 2015 更新 2,我没有尝试过)。他们改进了 .NET 原生工具,所以现在你应该没有任何问题,即使使用了很多第三方库。

    更新

    在我安装了 Visual Studio 2015 更新 3 并从 EF7 切换到 EF core 后,我已经解决了所有问题,也可以通过 nuget 获得

    【讨论】:

      【解决方案2】:

      过去几天我一直在努力解决这个问题,但目前没有简单的解决方案。

      EF7 github 上有一个已关闭的问题,更多信息请点击此处 (https://github.com/aspnet/EntityFramework/issues/4387),他们建议将 EF7 更新为 v1.0.0-rc2-16898。

      我不知道如何更新,因为它仍然是一个夜间版本,我的最终解决方案(“快速”解决方法)是将我的整个数据库更改为 sqlite-pcl (https://visualstudiogallery.msdn.microsoft.com/4913e7d5-96c9-4dde-a1a1-69820d615936)。

      如果您不急于为您的应用程序提供午餐,您可以一直等到 RC2 的最终版本,它应该在 4 月完成。

      【讨论】:

      • 感谢您的回答,实际上,我从 sqlite-pcl 切换到 EF7,sqlite-pcl 对我来说真的很痛苦,因为我必须使用扩展程序和所有这些才能拥有良好的 ORM 体验,EF7 对我来说要好得多,说实话,几天后通过修复 Default.rd.xml 文件中的指令,我的问题得到了解决,但我仍然无法对此有明确的解释,我只能说,.Net native 仍然需要做很多工作,这真的很痛苦,它的团队真的需要社区的反馈来解决问题。
      • 你能分享你的 Default.rd.xml 吗?也许它可以解决我的问题。
      猜你喜欢
      • 2016-05-28
      • 2016-07-08
      • 2018-04-26
      • 2019-01-30
      • 2020-01-24
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      相关资源
      最近更新 更多