2016-01-24 74 views
7

我爲Windows 10構建了通用應用程序,但我不知道Native Tool鏈。當我準備好創建軟件包時,我收到了很多錯誤,並且我找到了一個沒有任何運氣的解決方案。發佈軟件包構建失敗的UWP

幾attemps我決定把我的應用程序,一塊一塊,在一個測試項目,看看有什麼是錯後,我得到了下面的錯誤,我添加MVVM光的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%的可用內存。

我希望有人能幫我一些如何。

感謝,

皮波

+0

的警告,可以安全地忽略。看到這裏:https://github.com/dotnet/corefx/issues/5088 –

+0

謝謝,我會試一試,但現在我認爲,OOM它是不相關的警告。 – Pippo46

回答

0

我已經解決了我所有的問題,我已經安裝了Visual Studio 2015年更新3和通過的NuGet

0

你也可以嘗試刪除此文件中的* *應用指令:屬性\ Default.rd.xml。它指示.NET Native編譯器對其保存/生成的信息過於慷慨,可能是OOM的一個促成因素。刪除該指令所允許的更保守的行爲可以釋放足夠多餘的工作,從而允許編譯器完成。然而,這會讓你向編譯器潛在地過度優化你的應用程序,所以你需要在這個配置中仔細測試它,並且可能需要添加一些更具體的指令到.rd.xml文件中,以便完全恢復你的腳。

我們在Update 2中有一些修復程序,它們可以幫助那些依賴許多具有大量反射/泛型的框架的應用程序。

+0

我已經嘗試從Default.rd.xml文件中刪除該指令:它會編譯,但然後我的應用程序在運行時崩潰。 我讀了關於運行時指令,但我真的不明白如何添加特定的指令。你能給一些有用的鏈接嗎? 我會再搜索一些,希望更新2也會有所幫助。 – Pippo46

+0

如果爲DEBUG構建打開.NET Native,則可能會看到MissingRuntimeArtifactExceptions的MissingMetadataExceptions以及一些錯誤消息。你需要追逐那些以解決問題。無可否認,這是一個非常漂亮的工作。 –

+0

我沒有得到任何這些錯誤,但我得到了我不明白的其他錯誤。你可以在這裏看看http://1drv.ms/1QwqOmX – Pippo46