发布包构建失败(UWP)

7
我为Windows 10构建了一个通用应用程序,但我不知道Native工具链。当我准备创建包时,出现了许多错误,而我没有找到解决方案。
尝试几次后,我决定将我的应用程序逐个部分地放入测试项目中,以查看问题所在。在添加了Mvvm Light 5.2的ViewModelLocator后,我得到了以下错误:
NUTC300F:Internal Compiler Error: Native compilation failed due to out of memory error
ILT0005: 'C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\x86\ilc\Tools\nutc_driver.exe 
    @"C:\...\Test\obj\x86\Release\ilc\intermediate\MDIL\Test.rsp"' returned exit code 1
Warning  Method 'CreateLambda' within 'System.Linq.Expressions.Expression' could not be found.
    C:\....\Test\Resources.System.Linq.Expressions.rd.xml 35 
Warning  Method 'ParameterIsAssignable' within 'System.Linq.Expressions.Expression' could not be found.
    C:\....\Test\Resources.System.Linq.Expressions.rd.xml 91 

这是我的ViewModelLocator类

public class ViewModelLocator
{
    public const string HeroDetailsPageName = "HeroDetails";

    public ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        var nav = new NavigationService();
        nav.Configure(HeroDetailsPageName, typeof(HeroDetails));
        SimpleIoc.Default.Register<INavigationService>(() => nav);

        SimpleIoc.Default.Register<IDialogService, DialogService>();

        if (ViewModelBase.IsInDesignModeStatic)
        {
            SimpleIoc.Default.Register<IHotSRepository, DesignDataSource>();
        }
        else
        {
            SimpleIoc.Default.Register<IHotSRepository, HotSRepository>();
        }

        SimpleIoc.Default.Register<MainViewModel>();
    }

    public MainViewModel Main => ServiceLocator.Current.GetInstance<MainViewModel>();
}

我也在使用SQLite3、ef7 rc1、Newtosoft Json和HTML agility pack。我已经按照所有建议进行了EF7编译,删除了obj文件夹,重新启动了Visual Studio,并查找了所有与该问题相关的线程,但没有任何好的解决方案。

我的计算机有16GB内存,查看任务管理器时,当出现错误时我还有大约50%的可用内存。

希望有人能以某种方式帮助我。

谢谢,

Pippo


警告可以安全地忽略。请参见此处:https://github.com/dotnet/corefx/issues/5088 - MattWhilden
谢谢,我会尝试一下,但是现在我认为OOM与那些警告无关。 - Pippo46
3个回答

1

0
你可以尝试从该文件中删除*Application*指令:Properties\Default.rd.xml。它指示.NET Native编译器过于慷慨地保存/生成信息,可能是OOM的一个因素。通过去除此指令允许更加保守的行为,可能会释放足够多余的工作,使得编译器能够完成任务。然而,这将使编译器有可能过度优化你的应用程序,所以你需要在这种配置下进行仔细测试,并可能需要在.rd.xml文件中添加一些更具体的指令,以完全恢复正常。
我们即将在更新2中提供一些修复措施,这些措施将有助于像您的应用程序一样依赖于许多具有大量反射/泛型的框架。

我已经尝试从Default.rd.xml文件中删除该指令:它可以编译,但是我的应用程序在运行时崩溃了。我阅读了有关运行时指令的内容,但我并不真正理解如何添加特定的指令。你能给我一些有用的链接吗?我会再搜索一些,并希望更新2也能有所帮助。 - Pippo46
如果你在DEBUG构建中开启了.NET Native,你可能会看到一些错误信息,如MissingMetadataExceptions或MissingRuntimeArtifactExceptions。你需要花点时间去追踪这些错误并解决它们。不可否认,这是一个相当笨拙的解决方法。 - MattWhilden
我没有遇到这些错误,但是我遇到了其他我不理解的错误。你可以在这里看一下http://1drv.ms/1QwqOmX - Pippo46

0

我在安装了Visual Studio 2015更新3并切换到EF Core(也可通过NuGet获取)后,解决了所有问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接