使用 Syncfusion 控件编译​​应用程序时 .net 本机内存不足

.net native out of memory when compiling application with Syncfusion Controls

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

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

Syncfusion 参考不会在另一个非常简单的应用程序中造成这种效果。 以前有没有人遇到过这个问题,这可能是由我的 csProj 设置引起的吗?

我在 .NET Native 运行时间和编译器团队工作。我们已经看到库的组合可能导致编译器 运行 远离内存使用的情况。这通常是因为这些程序集中的某些类型集导致我们对泛型使用的分析超出合理范围。

一个有用的方法是删除 Properties\Default.rd.xml 文件中的默认 运行time 指令:

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

这可能有助于避免 运行 离开情况,但也可能有其他副作用。

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

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

如果您愿意,您可以尝试将他们的示例浏览器编译为 .NET Native 来测试这一点。

虽然 运行 在发布模式下使用 .Net 本机链工具的应用程序,将需要更多内存 space 来构建应用程序。因为 .NET Native 工具使用本机库中的托管代码编译您的 IL 库,而且 "Syncfusion Controls for UWP XAML" SDK 包含更多的程序集。所以我们建议在您的应用程序中使用相应的程序集而不是 "Syncfusion Controls for UWP XAML" SDK 来解决此问题。

您可以从以下位置参考各个程序集。

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

此致, Marimuthu S.