C# Xamarin iOS链接器问题

C# Xamarin iOS链接器问题,c#,.net,entity-framework,xamarin,xamarin.ios,C#,.net,Entity Framework,Xamarin,Xamarin.ios,我有一个应用程序,它有一个带有共享代码的android和ios项目。android应用程序运行完美,只使用SDK链接器。我还有一个链接器文件来强制链接器不删除使用过的函数——这是一个相当大的文件,我还尝试添加了一系列保留属性。然而,在iOS项目中,同样的情况下,做同样的事情是行不通的。它从EF中删除某些内容并引发此异常: "The type initializer for 'Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensi

我有一个应用程序,它有一个带有共享代码的android和ios项目。android应用程序运行完美,只使用SDK链接器。我还有一个链接器文件来强制链接器不删除使用过的函数——这是一个相当大的文件,我还尝试添加了一系列保留属性。然而,在iOS项目中,同样的情况下,做同样的事情是行不通的。它从EF中删除某些内容并引发此异常:

"The type initializer for 'Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions' threw an exception. ---> System.InvalidOperationException"
整个代码库在没有链接的情况下工作得非常好。我添加了一堆mtouch参数来尝试跳过它,但这也不起作用

--linkskip=Microsoft.EntityFrameworkCore 
--linkskip=Microsoft.EntityFrameworkCore.Design 
--linkskip=Microsoft.EntityFrameworkCore.Sqlite 
--linkskip=Microsoft.EntityFrameworkCore.Tools 
--linkskip=Interactive.Async 
--linkskip=Remotion.Linq 
--linkskip=System.Data 
--linkskip=System.Collections.Immutable 
--linkskip=System.Diagnostics.DiagnosticSource 
--linkskip=Microsoft.Extensions.Logging 
--linkskip=System.Interactive.Async 
--linkskip=Microsoft.EntityFrameworkCore.Abstractions 
--linkskip=Microsoft.Extensions.DependencyInjection 
--linkskip=Microsoft.Extensions.Caching.Memory 
--linkskip=System.ComponentModel.Annotations
我将在NuGet存储库中添加每个DLL,这将使链接器变得无用。这是iOS链接器的错误还是我在这里遗漏了什么?我已经阅读了文档[并且在互联网上搜索了所有地方,但没有任何结果。任何帮助都将不胜感激

谢谢,

如果您使用的是“仅链接SDK程序集”选项,则所有这些
--linkskip
参数都不会起任何作用,因为只有SDK程序集被链接。因此
EntityFrameworkCore
可能正在使用Xamarin.iOS SDK程序集中正在链接的东西。
System.Linq
是SDK的一部分,并为m添加扩展方法任何数据库类型

因此,我认为您可能触及了这个问题:

如果是这样,请尝试放置:

[assembly: Preserve (typeof (System.Linq.Queryable), AllMembers = true)]
在命名空间之外的iOS项目的Main.cs文件中,例如:

using UIKit;

[assembly: Preserve (typeof (System.Linq.Queryable), AllMembers = true)]
namespace
{
    ...
}
如果您使用的是“仅链接SDK程序集”选项,则所有这些
--linkskip
参数都不会起任何作用,因为只有SDK程序集被链接。因此
EntityFrameworkCore
可能正在使用Xamarin.iOS SDK程序集中正在链接的东西。
System.Linq
是SDK的一部分,并为m添加扩展方法任何数据库类型

因此,我认为您可能触及了这个问题:

如果是这样,请尝试放置:

[assembly: Preserve (typeof (System.Linq.Queryable), AllMembers = true)]
在命名空间之外的iOS项目的Main.cs文件中,例如:

using UIKit;

[assembly: Preserve (typeof (System.Linq.Queryable), AllMembers = true)]
namespace
{
    ...
}