Fatal error in Unity CIL Linker
问题描述及重现代码:
// c# code
数据库版本
Unity2021.3.16f1
安装的Nuget包
Put the dll file in the plugins folder of the unity project Asetts: FreeSql.3.2.801 FreeSql.Provider.Sqlite.3.2.801
.net framework/. net core? 及具体版本
net40
System.Data.Sqlite.dll
测试一下这个库,是否能使用
freeSql是不是不支持unity?有问题的是FreeSql.Provider.Sqlite.dll,打包时会报错。
Fatal error in Unity CIL Linker Mono.Linker.LinkerFatalErrorException: ILLink: error IL1005: FreeSql.AdoNetExtensions.GetCrud(IDbConnection): Error processing method 'FreeSql.AdoNetExtensions.GetCrud(IDbConnection)' in assembly 'FreeSql.dll' ---> System.InvalidOperationException: No action for the assembly FreeSql.Provider.Dameng, Version=3.2.821.0, Culture=neutral, PublicKeyToken=null defined at Mono.Linker.AnnotationStore.GetAction(AssemblyDefinition assembly) at Mono.Linker.Steps.MarkStep.IsFullyPreserved(TypeDefinition type) at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference, DependencyInfo reason, IMemberDefinition sourceLocationMember) at Mono.Linker.Steps.MarkStep.MarkTypeVisibleToReflection(TypeReference reference, DependencyInfo reason, IMemberDefinition sourceLocationMember) at Mono.Linker.Dataflow.ReflectionMethodBodyScanner.<>c__DisplayClass20_4.<HandleCall>b__7() at Mono.Linker.Dataflow.ReflectionMethodBodyScanner.HandleCall(MethodBody callingMethodBody, MethodReference calledMethod, Instruction operation, ValueNodeList methodParams, ValueNode& methodReturnValue) at Mono.Linker.Dataflow.MethodBodyScanner.HandleCall(MethodBody callingMethodBody, Instruction operation, Stack`1 currentStack) at Mono.Linker.Dataflow.MethodBodyScanner.Scan(MethodBody methodBody) at Mono.Linker.Dataflow.ReflectionMethodBodyScanner.ScanAndProcessReturnValue(MethodBody methodBody) at Unity.Linker.Steps.UnityMarkStep.MarkReflectionLikeDependencies(MethodBody body, Boolean requiresReflectionMethodBodyScanner) at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body) at Unity.Linker.Steps.UnityMarkStep.MarkMethodBody(MethodBody body) at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method, DependencyInfo& reason) at Unity.Linker.Steps.UnityMarkStep.ProcessMethod(MethodDefinition method, DependencyInfo& reason) at Mono.Linker.Steps.MarkStep.ProcessQueue() --- End of inner exception stack trace --- at Mono.Linker.Steps.MarkStep.ProcessQueue() at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue() at Mono.Linker.Steps.MarkStep.Process() at Mono.Linker.Steps.MarkStep.Process(LinkContext context) at Unity.Linker.Steps.UnityMarkStep.Process(LinkContext context) at Unity.Linker.UnityPipeline.ProcessStep(LinkContext context, IStep step) at Mono.Linker.Pipeline.Process(LinkContext context) at Unity.Linker.UnityDriver.UnityRun(Boolean noProfilerAllowed, ILogger customLogger) at Unity.Linker.UnityDriver.RunDriverWithoutErrorHandling(ILogger customLogger, Boolean noProfilerAllowed) at Unity.Linker.UnityDriver.RunDriver() UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
您好,我遇到了相同的问题。错误来自FreeSql.Provider.Dameng,是否是FreeSql.Provider.Dameng 不支持unity il2cpp方式? 因为我使用mono模式打包时可以了(但目前apk需要打包64位的,必须使用il2cpp进行打包), 是否有解决方法?
已解决! 方法:升级unity版本, 升级mirror框架的版本(项目用到), 新版本有il2cpp bug的修复, 目前已正常打包