System.Runtime.CompilerServices.Unsafe 而 运行 Xamarin 中的 .Net 标准项目

System.Runtime.CompilerServices.Unsafe while running .Net Standard project in Xamarin

我正在使用 .Net Standard 在 xamarin 中创建一个应用程序,到目前为止,我已经在我的解决方案中安装了以下 Nuget 包

PCL/.Net 标准包

Android 包

最低 SDK 级别为 Android 5.1,最高为 Android Oreo 8.1

当我 运行 visual studio VS2017 中的应用程序 运行 几秒钟后突然关闭并抛出以下错误

04-06 02:45:11.182 6262-6262/com.org.sam A/monodroid-assembly: Could not load assembly 'System.Runtime.CompilerServices.Unsafe' during startup registration.
04-06 02:45:11.182 6262-6262/com.org.sam A/monodroid-assembly: This might be due to an invalid debug installation.
04-06 02:45:11.182 6262-6262/com.org.sam A/monodroid-assembly: A common cause is to 'adb install' the app directly instead of doing from the IDE. 
  1. 我尝试多次清理解决方案并删除 bin 和 obj 文件夹,但我遇到了同样的错误。

  2. 我没有写任何代码,因为我只是在迁移项目,所以这个项目是空白的。

我个人认为 RealmSystem.Runtime.CompilerServices 参考,因此它的创建问题。这是从 nuget

安装领域的屏幕截图

我也有这个错误,但它是在使用 .net 标准库中的 Entity Framework 时出现的。这花了很长时间才整理出来!希望这对你有用。

在 android 项目中添加以下内容作为 XmlFile eg(UnsafeCompilerWorkaround.xml):

<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>

编辑android.csproj文件并添加以下导入

  <Import Project="UnsafeCompilerWorkaround.xml"></Import>

然后清理并重建解决方案。

这是 Xamarin.Android 中的一个已知问题。据我所知,目前唯一已知的解决方法是在从 NuGet.

引用时使用 packages.config 而不是 <PackageReference>

#1356应该会尽快修复它,希望这对您有所帮助。 :)