2017-07-07 44 views
0

我堅持與我建立一個嚴重的問題。我在UWP應用程序中使用實體框架和sqlite。一切工作正常在調試模式,但是當我運行在釋放模式的應用程序,我得到了很多的sqlite /實體框架的異常:UWP:發佈配置減免實體框架和SQLite

Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.Data.Sqlite.dll 
Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.Data.Sqlite.dll 
Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.Data.Sqlite.dll 
Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.Data.Sqlite.dll 
Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.Data.Sqlite.dll 
Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.EntityFrameworkCore.Relational.dll 
Exception thrown: 'Microsoft.Data.Sqlite.SqliteException' in Microsoft.EntityFrameworkCore.Relational.dll 
Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateException' in Microsoft.EntityFrameworkCore.Relational.dll 
Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateException' in Microsoft.EntityFrameworkCore.dll 
Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateException' in Microsoft.EntityFrameworkCore.dll 
Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateException' in System.Private.CoreLib.dll 
Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateException' in System.Private.CoreLib.dll 
Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateException' in System.Private.CoreLib.dll 
Exception thrown: 'System.InvalidOperationException' in System.Private.Threading.dll 
Exception thrown: 'System.InvalidOperationException' in System.Private.CoreLib.dll 

我注意到,如果我取消「優化代碼」的發佈配置,一切都恢復正常。編譯時發生了某些事情。有沒有人有任何關於如何進行調查的線索?

+1

這是可能的你可能遇到問題與.Net本機剝離類型信息。也許看到如果通過這個工作可以幫助你:https://blogs.msdn.microsoft.com/dotnet/2014/05/21/net-native-deep-dive-help-i-hit-a-missingmetadataexception/ –

回答

0

從描述它似乎很可能,優化了拙劣的東西。一個有趣的檢查:

  • 設置爲DEBUG配置
  • 打開的DEBUG配置.NET原生(項目 屬性> BUILD>啓用.NET母語)
  • 構建,看看它是否repros!

這個配置將禁用整個項目的優化。如果導致該問題消失,然後它只是一個狩獵看到我們具有方法/類型的麻煩。如果它在DEBUG配置中工作,但啓用了.NET Native,那麼您可以通過選擇性地禁用優化器來獲得有效的RELEASE構建。這裏有一個如何通過類型/命名空間/大會做這樣一個例子:

  • 打開屬性\ Default.rd.xml
  • 地址:<Type Name=」FullyQualified.TypeName」 DoNotOptimize=」true」 DoNotInline=」true」/>
  • 或者:<Namespace Name=」Name.Space」 DoNotOptimize=」true」 DoNotInline=」true」/>
  • 或者:<Assembly Name=」Assembly.Name.Without.Extension」 DoNotOptimize=」true」 DoNotInline=」true」/>
同時

禁用的事情之一組件可讓您合理的進度,避免自己開車瘋了。如果這一戰略最終制定出適合你,那你就可以走了。當您將應用程序提交到Store時,Default.rd.xml文件就會出現,因此Store編譯看起來會與您的本地編譯看起來差不多。

如果你確實設法縮小了一點,我相信建立.NET Native優化器的人會喜歡知道更多,以便他們能夠從編譯器中追趕它。他們可以在[email protected]