我有一个使用EF Core 2.0的Xamarin IOS应用程序。 只要我在调试模式下没有SDK链接,一切正常。但是当我激活SDK Framework Linking时(在调试或发布模式下),当我调用这段代码时,我得到以下异常:
var contacts = DbContext.Contacts
.Include(x => x.Events)
.Include(x => x.Addresses)
.Include(x => x.Infos)
.ToList();
例外:
{System.TypeInitializationException: The type initializer for 'Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions' threw an exception. ---> System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] predicate) [0x00070] in <773264786149499a986a13db6a7d46fe>:0
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.GetMethod (System.String name, System.Int32 parameterCount, System.Func`2[T,TResult] predicate) [0x00029] in <0998bf911f014e7884d2695c95a67016>:0
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions..cctor () [0x00000] in <0998bf911f014e7884d2695c95a67016>:0
--- End of inner exception stack trace ---
at ConnectContacts.DataAccess.Repositories.ContactRepository.DeleteAll () [0x00001] in /Users/npadrutt/Documents/GitHub/ConnectContacts/ConnectContacts/ConnectContacts.DataAccess/Repositories/ContactRepository.cs:43
at ConnectContacts.Service.DataServices.ContactDataService+<DeleteAllContacts>d__12.MoveNext () [0x0000f] in /Users/npadrutt/Documents/GitHub/ConnectContacts/ConnectContacts/ConnectContacts.Service/DataServices/ContactDataService.cs:225
--- End of stack trace from previous location where exception was thrown ---
at ConnectContacts.DataAccess.Repositories.ContactRepository.DeleteAll () [0x00001] in /Users/npadrutt/Documents/GitHub/ConnectContacts/ConnectContacts/ConnectContacts.DataAccess/Repositories/ContactRepository.cs:43
at ConnectContacts.Service.DataServices.ContactDataService+<DeleteAllContacts>d__12.MoveNext () [0x0000f] in /Users/npadrutt/Documents/GitHub/ConnectContacts/ConnectContacts/ConnectContacts.Service/DataServices/ContactDataService.cs:225
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.2.0.11/src/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:151
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.2.0.11/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.2.0.11/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.2.0.11/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128
at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.2.0.11/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113
at ConnectContacts.Business.ViewModels.Wizard.SelectMeContactViewModel+<ImportContacts>d__28.MoveNext () [0x0005d] in /Users/npadrutt/Documents/GitHub/ConnectContacts/ConnectContacts/ConnectContacts.Business/ViewModels/Wizard/SelectMeContactViewModel.cs:129 }
由于例外仅在链接处于活动状态时发生,我认为这里存在一个问题,即某些事情应该被删除。 我已经尝试了&#34; - linkskip =&#34;从链接中排除EntityFrameworkCore包的参数,但到目前为止还没有。
有什么建议吗?
答案 0 :(得分:4)
对于比列出20 --linkskip
个参数更清晰的东西,您可以创建一个LinkDescription.xml
文件。将此xml添加到您的iOS项目,然后将--xml=${ProjectDir}/LinkDescription.xml
添加到您的mtouch参数:
<?xml version="1.0" encoding="utf-8" ?>
<linker>
<assembly fullname="mscorlib">
<type fullname="System.String">
<method name="Compare"></method>
<method name="CompareTo"></method>
<method name="ToUpper"></method>
<method name="ToLower"></method>
</type>
</assembly>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Expression`1"></type>
<type fullname="System.Linq.Queryable"></type>
</assembly>
</linker>
来源: