【发布时间】:2023-03-13 03:35:01
【问题描述】:
我构建了一个完整的 Xamarin From 应用程序。当我将构建模式更改为 Release 时,我收到以下错误消息:
严重性代码描述项目文件行抑制状态 错误“LinkAssemblies”任务意外失败。 Mono.Linker.MarkException:错误处理方法:'System.Void Microsoft.Extensions.Primitives.InplaceStringBuilder::Append(System.String,System.Int32,System.Int32)' 在汇编中:'Microsoft.Extensions.Primitives.dll' ---> Mono.Cecil.ResolutionException:无法解析 System.Void System.Runtime.CompilerServices.Unsafe::CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32) 在 Mono.Linker.Steps.MarkStep.HandleUnresolvedMethod(MethodReference 参考)在 Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference 参考)在 Mono.Linker.Steps.MarkStep.MarkInstruction(指令指令)
在 Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body) 在 Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition 方法)
在 Mono.Linker.Steps.MarkStep.ProcessQueue() --- 内部结束 异常堆栈跟踪 --- 在 Mono.Linker.Steps.MarkStep.ProcessQueue() 在 Mono.Linker.Steps.MarkStep.ProcessEntireQueue() 在 Mono.Linker.Steps.MarkStep.Process() 在 Mono.Linker.Steps.MarkStep.Process(LinkContext context) 在 Mono.Linker.Pipeline.Process(LinkContext 上下文)在 MonoDroid.Tuner.Linker.Process(LinkerOptions 选项,LinkContext& 上下文)在 Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res) 在 Xamarin.Android.Tasks.LinkAssemblies.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() EClinicForDoctor.Android
在网上搜索后,我找到了这个solution,上面写着:
解决此问题的方法是确保您拥有受支持的最新 Android SDK 版本,并将目标框架设置为使用最新安装的平台。还建议您将 Target Android Version 设置为 Use Target Framework Version,并将最低 Android 版本设置为 API 15 或更高版本。这被认为是受支持的配置。
因此我更新了 Android SDK,设置了目标框架并将最低 Android 版本设置为 API 15。
但是,我仍然遇到同样的错误。另一个解决方案说我应该更新 NuGet Packages。我发现包System.Runtime.CompilerServices.Unsafe 的版本是4.3.0,并且这个包有更新。更新包时,错误不再出现,但出现了另一个问题。部署应用程序后,它会运行和停止,不会出现任何错误消息。手机只是退出应用程序而不显示任何错误消息。当包 System.Runtime.CompilerServices.Unsafe 的版本高于 4.3.0 时会发生这种情况。我试图删除包,同样的问题再次发生。我该如何解决这个问题?
【问题讨论】:
标签: c# android xamarin.forms release