.NetネイティブのUWPアプリケーションを構築する際のMissingMetadataException

.net-native entity-framework-core linq visual-studio-2015 win-universal-app

質問

私はそれ自体がEF7とSQLiteを使用するプロジェクト(UWPクラスライブラリ)を使用するこのUWPアプリケーションを持っています。

私はリリースモードで.Netネイティブツールチェーンを使用してアプリケーションをビルドしようとしましたが、ビルドは正常に完了しました(長い時間が経過した後、できるだけ多くのメモリを食べた後)。しかし、スプラッシュ画面を終了した直後にアプリケーションがクラッシュします。

私は、デバッグモードで.NETネイティブを試してみましたが、リリースモードのようにビルドは終了しましたが、出力ウィンドウで多くのエラーが発生しました。この1つのUWPと同じシナリオです - .NETネイティブツールチェーンコンパイルエラー

私は@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

メタデータ。詳細については、 http://go.microsoft.com/fwlink/?LinkID = 392859を参照してください。

実行中に自分のコードに従おうとしましたが、 DbSetから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を変更する必要があるのか​​わかりません。このビルドを正しく行う方法を教えてください。

受け入れられた回答

「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> 


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ