2017-07-07 41 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]