【问题标题】:System.Runtime.CompilerServices.Unsafe while running .Net Standard project in Xamarin在 Xamarin 中运行 .Net Standard 项目时 System.Runtime.CompilerServices.Unsafe
【发布时间】:2018-04-06 06:53:52
【问题描述】:

我正在使用 .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 安装领域的屏幕截图

【问题讨论】:

    标签: android xamarin realm .net-standard-2.0


    【解决方案1】:

    我也遇到了这个错误,但它是在使用 .net 标准库中的实体框架时发生的。这花了相当长的时间来整理!希望这对你有用。

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

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

    【讨论】:

      【解决方案2】:

      这是Xamarin.Android 中的一个已知问题。据我所知,目前唯一已知的解决方法是在从NuGet 引用时使用packages.config 而不是&lt;PackageReference&gt;

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

      【讨论】:

      • android 能用,iOS 不能用,请问有什么适用于 iOS 的解决方法
      • @Hunt,对不起,我对 iOS 有点了解。但我认为您可以就此提出一个新问题,会有人帮助您解决此问题。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      相关资源
      最近更新 更多