【问题标题】:.net native out of memory when compiling application with Syncfusion Controls使用 Syncfusion Controls 编译应用程序时 .net 本机内存不足
【发布时间】:2018-04-22 08:33:36
【问题描述】:

我的应用程序使用 Syncfusion UWP 图表控件和 EF7 Core RC2,带有 VS2015 预览版 2。

我可以仅使用 EF7 Core 编译应用程序,但是一旦我添加对 Syncfusion 的引用,我最终会得到非常长的编译时间,并以“.net native out of memory”异常结束。

Syncfusion 引用不会在不同的、非常简单的应用程序中产生这种效果。 有没有人遇到过这个问题,这可能是由我的 csProj 设置引起的吗?

【问题讨论】:

    标签: uwp syncfusion .net-native


    【解决方案1】:

    我在 .NET Native 运行时和编译器团队工作。我们已经看到了库组合可能导致编译器因内存使用而失控的情况。这通常会发生,因为这些程序集中的某些类型导致我们对泛型使用的分析超出理性。

    可以帮助您删除 Properties\Default.rd.xml 文件中的默认运行时指令:

        <Assembly Name="*Application*" Dynamic="Required All" /> // REMOVE THIS
    

    这可能有助于避免失控,但也可能产生其他副作用。

    我们有兴趣与您一起更深入地调查此问题。如果您有时间与我们合作,请发送邮件至 dotnetnative@microsoft.com。我们可能会要求为您的申请提供ilcRepro 文件,以便我们进行更彻底的调查。

    【讨论】:

    • 我试过了,应用程序编译但我得到了我通常不会观察到的异常。但是,我找到了一种解决方法:SyncFusion 库包含所有内容,包括厨房水槽。可以只包含对 sfChart 的 DLL 的引用,然后编译器的行为就很正常了。有关详细信息,请参阅此 Stackoverflow 线程:stackoverflow.com/questions/37350144/…
    • 这是围绕@VladimirAkopyan 的另一项合理工作。任何可以削减编译器的全部输入的东西都可能有助于事情的进展。我们正在跟踪这样的案例,并继续进行改进,以便在面对任意程序输入时具有弹性:-)。
    【解决方案2】:

    在 Release 模式下使用 .Net 原生链工具运行应用程序时,将需要更多内存空间来构建应用程序。因为 .NET Native 工具使用本地库中的托管代码编译您的 IL 库,并且“用于 UWP XAML 的 Syncfusion Controls”SDK 包含更多数量的程序集。因此我们建议在您的应用程序中使用相应的程序集而不是“Syncfusion Controls for UWP XAML”SDK 来解决此问题。

    您可以从以下位置引用各个程序集。

    程序集位置:C:\Program Files (x86)\Syncfusion\Essential Studio\15.1.0.33\Assemblies for Universal Windows\10.0

    问候, Marimuthu S.

    【讨论】:

      【解决方案3】:

      是的。它是 Syncfusion 或者可能是 Microsoft,但不要只是将控件从 Syncfusion 工具箱拖放到您的 UWP 应用程序上并尝试将其编译为 .NET Native 代码。它将添加对整个 SDK 的引用,在内存不足之前永远不会完成编译。

      如果精神感动你,你可以尝试将他们的示例浏览器编译为 .NET Native 来测试这一点。

      【讨论】:

        猜你喜欢
        • 2016-07-09
        • 1970-01-01
        • 2010-09-16
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 2019-10-05
        • 2012-07-01
        相关资源
        最近更新 更多