我从应用程序中构建了一个完整的Xamarin。当我将构建模式更改为Release时,会收到以下错误消息:
严重性代码描述项目文件行抑制状态错误"LinkAssemblies“任务意外失败。错误处理方法:程序集中的“Microsoft.Extensions.Primitives.InplaceStringBuilder::Append(System.String,System.Int32,System.Int32”:“Microsoft.Extensions.Primitives.dll”( Mono.Linker.Steps.MarkStep.HandleUnresolvedMethod(MethodReference参考)在Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference参考)(在Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction指令下) (在Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body) at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition方法) 在Mono.Linker.Steps.MarkStep.ProcessEntireQueue()的Mono.Linker.Steps.MarkStep.ProcessQueue() -内部异常堆栈跟踪的末尾-在Mono.Linker.Steps.MarkStep.ProcessQueue() at Mono.Linker.Steps.MarkStep.Process() at Mono.Linker.Steps.MarkStep.Process() at Mono.Linker.Pipeline.Process(LinkContext context) at MonoDroid.Tuner.Linker.Process(LinkerOptions options ),LinkContext& context)在Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)在Xamarin.Android.Tasks.LinkAssemblies.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() EClinicForDoctor.Android
在网上搜索后,我发现这个解决方案上写着:
解决此问题的方法是确保您拥有最新支持的Android版本,并将目标框架设置为使用最新安装的平台。还建议您将Target Android版本设置为使用Target Framework版本,将最低Android版本设置为API 15或更高版本。这被认为是支持的配置。
因此,我更新Android,设置目标框架,并将最低Android版本设置为API 15。



然而,我仍然会遇到同样的错误。另一个解决方案是,我应该更新NuGet Packages。我发现包System.Runtime.CompilerServices.Unsafe的版本为4.3.0,并对此包进行了更新。更新包时,错误将不再出现,但会出现另一个问题。当应用程序部署时,它运行并停止,没有任何错误消息。该手机只需退出应用程序,而不显示任何错误信息。当包System.Runtime.CompilerServices.Unsafe的版本高于4.3.0时,就会发生这种情况。我试图删除包,同样的问题再次发生。我该如何解决这个问题?
发布于 2018-04-11 10:19:06
我终于找到解决办法了。@Gerald提供的问题中的一个评论解决了这个问题:
我遵循hongliyu2002 https://forums.realm.io/t/could-not-load-assembly-system-runtime-compilerservices-unsafe-during-startup-registration/974/4的以下步骤
这个简单的解决方法,适用于我:)我的当前版本是Xamarin.Forms 2.5.1.444934
发布于 2018-04-09 11:17:04
我已经看到这个问题出现在几个不同的地方。有一些讨论围绕在这里:https://github.com/xamarin/xamarin-android/issues/1196
这个Github问题还列出了一些(可能的)解决方案,其中最有积极反馈的似乎就是这个:
这是一个有效的解决办法。这是讨厌和丑陋,但工作与最低限度的小题大做。将其放入XML文件,并在最后将其放入Android文件中。它至少适用于System.Buffers
<!-- Workaround for https://github.com/xamarin/xamarin-android/issues/1162 -->
<Project>
<Target Name="ReplaceRefAssemblies" AfterTargets="_ResolveAssemblies">
<ItemGroup>
<ResolvedAssembliesFixedWindows Include="@(ResolvedAssemblies->Replace('\ref\','\lib\'))" />
<ResolvedAssembliesFixedUnix Include="@(ResolvedAssemblies->Replace('/ref/','/lib/'))" />
<ResolvedAssembliesFixed Include="@(ResolvedAssembliesFixedWindows)" Condition="@(ResolvedAssembliesFixedWindows) != @(ResolvedAssemblies)" />
<ResolvedAssembliesFixed Include="@(ResolvedAssembliesFixedUnix)" Condition="@(ResolvedAssembliesFixedUnix) != @(ResolvedAssemblies)" />
<ResolvedAssemblies Remove="@(ResolvedAssemblies)" />
<ResolvedAssemblies Include="@(ResolvedAssembliesFixed)" />
</ItemGroup>
</Target>
</Project>另一个使用上面的XML并说:
UnsafeFix.xml文件保存在Android项目文件夹中。<Import Project="UnsafeFix.xml" />在android .csproj文件的末尾,就在前面https://stackoverflow.com/questions/49731480
复制相似问题