类型'Memory <T>'同时存在于'System.Memory 4.0.1.0和mscorlib 2.0.5.0中

时间:2019-06-11 10:10:51

标签: xamarin.ios

我很难解决这个新问题。
它仅在编译时出现在解决方案的xamarin.ios项目中。
xamarin.android项目可以正常编译。

我没有引用system.memory,而是引用了netstandard 2.0项目。
直到最近编译都还不错。

这是xamarin.ios工具中的已知问题吗?任何解决方法?

我尝试过:

  • 搜索
  • 将system.memory nuget添加到ios项目中
  • 删除bin / obj / .vs文件夹,清理/重建

我很干

1 个答案:

答案 0 :(得分:1)

我找到了解决方法here

在ios项目文件的末尾添加:

  <Target 
    Name="VS16_RemoveSystemMemory" 
    BeforeTargets="FindReferenceAssembliesForReferences" 
    Condition="'$(MSBuildVersion)' &gt;= '16.0'">
    <ItemGroup>
      <_ReferencePathToRemove 
        Include="@(ReferencePath)" 
        Condition="'%(ReferencePath.NuGetPackageId)'=='System.Memory'" />
      <ReferencePath Remove="@(_ReferencePathToRemove)" />
    </ItemGroup>
    <Message Text="Removing System.Memory for VS 2019 compatibility" Importance="high"/>
  </Target>

神奇地编译!
我不知道这种nuget依赖关系来自何处,但不是来自我的代码,而是来自第三方nuget,很可能来自Google依赖。