UWP的发布包构建失败

时间:2016-01-24 11:18:49

标签: visual-studio-2015 uwp windows-10-universal .net-native

我为Windows 10构建了一个通用应用程序,但我并不了解Native Tool链。当我准备创建包时,我遇到了很多错误,我找不到任何运气的解决方案。

经过几次尝试后,我决定将我的应用程序一块一块地放在一个测试项目中,看看有什么问题,我添加了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 

这是我的ViewModelLocatorClass

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敏捷包。我已经按照所有建议来编写EF7。我删除了obj文件夹,重新启动了Visual Studio,找到了关于问题的所有线程,没有任何运气。 我的机器有16GB的内存,看着任务管理器,当我收到错误时,我有大约50%的可用内存。

我希望有人可以帮我一些。

谢谢,

皮波

3 个答案:

答案 0 :(得分:1)

可能您正在使用Visual Studio 2015 Update 2的非英语用户界面并尝试构建UWP应用程序的发布版本。

下载语言包:http://go.microsoft.com/fwlink/?LinkId=647001&clcid=0x409

致谢:http://pwnd.io/uwp-release-compile-error-ilt0005/

答案 1 :(得分:0)

您可以尝试从此文件中删除* Application *指令:Properties \ Default.rd.xml。它指示.NET Native编译器对它保存/生成的信息过于慷慨,并且可能是OOM的一个促成因素。通过删除此指令允许的更保守的行为可以释放足够的无关工作,以允许编译器完成。但是,这使您可以通过优化应用程序向编译器开放,因此您需要在此配置中仔细测试它,并且可能需要将一些更具体的指令添加回.rd.xml文件以便完全恢复你的脚。

我们在Update 2中有一些修复,它们可以帮助像你这样的应用程序依赖于许多具有大量反射/大量泛型的框架。

答案 2 :(得分:0)

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