0

私は、このUWPアプリケーションで、EF7とSQLiteを使用するプロジェクト(UWPクラスライブラリ)を使用しています。.NetネイティブでUWPアプリを構築するときにMissingMetadataExceptionが発生しました

.Netネイティブツールチェーンを使用してリリースモードでアプリケーションをビルドしようとしましたが、ビルドは正常に完了しています(長い時間が経過し、できるだけ多くのメモリを食べた後)スプラッシュスクリーン。だから私は、ビルドがちょうどリリースモードのように終了し、デバッグモードでの.NETネイティブを試してみましたが、私は、出力ウィンドウに多くのエラーを取得し、それはこの1つUWP - .NET Native tool chain compilation error

と同じシナリオでのいくつかのアドバイスに従った後

私は@Matt Whildenのアドバイスに従いましたが、私はそれらのエラーを取り除き、再度試みました。

私はこの有名なMissingMetadataExceptionに見舞われてしまった。この時間:

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 

メタデータ:

enter image description here

は、出力ウィンドウには、このことを示しています。詳細については、私は実行時に、私のコードを追跡しようとした http://go.microsoft.com/fwlink/?LinkID=392859

訪問し、私は今まで私のDbContextからDbSetテーブルに呼び出す最初に起因していることが判明してください

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; 
     } 
} 

上のこのメソッドはAsyncメソッドの内部で呼び出され、知るだけです。

私が実行して.ToList()を呼び出すために、必死に、試してみました:

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

しかし、まだ同じエラーを取得します。

これは本当にイライラしています。私はこの問題をどのように解決すればいいのかわかりません。Default.rd.xmlを変更する必要があります。このビルドを正しく行う方法を教えてください。

+0

このエラーは、ファイル内の.NETネイティブのクラス[プロジェクト名] .rd.xml(プロパティフォルダ)に関する追加情報を追加する必要があることを意味します。詳細はこちらhttps://msdn.microsoft.com/en-us/library/dn600639(v=vs.110).aspx –

答えて

3

「Microsoft.Extensions.Caching.Memory.MemoryCacheOptions」を(プロジェクトに既に存在する)Default.rd.xmlに追加してください。

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

<?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> 
関連する問題