0

Ich habe diese UWP-Anwendung, die ein Projekt (UWP-Klassenbibliothek) verwendet, die selbst EF7 und SQLite verwendet.MissingMetadataException beim Erstellen von UWP-App mit. NET nativen

Ich habe versucht, die App im Release-Modus mit .net native Tool-Kette zu bauen, der Build erfolgreich abgeschlossen (nach einer guten langen Zeit und nach dem Essen so viel Speicher wie möglich), aber die Anwendung stürzt kurz nach dem Verlassen ab der Begrüßungsbildschirm.

Nachdem Sie einige Ratschläge SO habe ich versucht, das .Net nativen mit Debug-Modus, beendet die Build genau wie in dem Release-Modus, aber ich viele Fehler auf dem Ausgabefenster bekommen, und es ist das gleiche Szenario wie dieser UWP - .NET Native tool chain compilation error

Ich folgte @Matt Whilden Beratung, und ich habe diese Fehler los, dann versuchte es erneut.

Dieses Mal habe ich von diesem berühmten MissingMetadataException getroffen wurde:

enter image description here

Das Ausgabefenster zeigt dies:

Exception thrown: 'System.AggregateException' in System.Private.Threading.dll 
Exception thrown: 'System.ArgumentException' in System.Linq.Expressions.dll 
Exception thrown: 'System.ArgumentException' in System.Linq.Expressions.dll 
Exception thrown: 'System.ArgumentException' in System.Linq.Expressions.dll 
The thread 0x2a30 has exited with code 0 (0x0). 
Exception thrown: 'System.Reflection.MissingMetadataException' in System.Private.Reflection.Core.dll 
Additional information: 'Microsoft.Extensions.Caching.Memory.MemoryCacheOptions' is missing 

Metadaten. Für weitere Informationen, besuchen Sie bitte http://go.microsoft.com/fwlink/?LinkID=392859

Ich habe versucht, meinen Code zu folgen, während der Ausführung und ich fand heraus, dass es durch die ersten verursacht wird, jemals in einen DbSet Tisch Anruf von meinem DbContext

public long GetLastTimeStamp() 
{ 
     //-----> Here is the line causing the error 
     var sortedArticles = DbContext.Articles.OrderByDescending(article => article.ArticlePubDate).ToList(); 

     if (sortedArticles != null && sortedArticles.Count != 0) 
     { 
      DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local); 

      TimeSpan elapsedTime = sortedArticles.First().ArticlePubDate - epoch; 
      return (long)elapsedTime.TotalSeconds; 
     } 
     else 
     { 
      return 0; 
     } 
} 

Diese oben genannte Methode wird innerhalb einer Async-Methode aufgerufen, nur um zu wissen.

Ich versuchte verzweifelt, nennen .ToList(), indem Sie:

var sortedArticles = DbContext.Articles.ToList().OrderByDescending(article => article.ArticlePubDate).ToList(); 

aber immer noch die gleichen Fehler.

Das ist wirklich frustrierend, ich weiß nicht, wie ich dieses Problem lösen kann, nicht sicher, was und wie ich die Default.rd.xml ändern sollte, kann mir jemand helfen, mir zu sagen, wie man diesen Build richtig erreicht?

+0

Dieser Fehler bedeutet, dass Sie zusätzliche Informationen über die Klassen zu .Net Einheimische in der Datei hinzufügen sollten [Projektname] .rd.xml (Ordner Eigenschaften). Weitere Informationen finden Sie hier https://msdn.microsoft.com/en-us/library/dn600639(v=vs.110).aspx –

Antwort

3

Bitte versuchen Sie den Typ 'Microsoft.Extensions.Caching.Memory.MemoryCacheOptions' in Default.rd.xml (bereits in Ihrem Projekt vorhanden) hinzuzufügen.

vgl. https://blogs.msdn.microsoft.com/dotnet/2014/05/21/net-native-deep-dive-help-i-hit-a-missingmetadataexception/

Zum Beispiel:

<?xml version="1.0" encoding="utf-8"?> 
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata"> 
    <Application> 
     <Type Name="Microsoft.Extensions.Caching.Memory.MemoryCacheOptions" Dynamic="Required All" /> 
    </Application> 
</Directives> 
Verwandte Themen