首页 > 解决方案 > 在 Xamarin Android 项目中引用 .Net 标准项目时出错

问题描述

当我在 Andoid 项目中添加对 .Net 标准项目的引用时,出现此错误。

严重性代码 描述 项目文件行抑制状态错误 无法解析引用:System.Threading.Tasks.Extensions,被 引用DotNetty.Transport。请为 . 添加 NuGet 包或程序集引用System.Threading.Tasks.Extensions,或删除对DotNetty.Transport. VFMApp.Droid

我试过:

  1. 既不是 NuGet 包(System.Threading.Tasks.Extensions / DotNetty.Transport),干净的解决方案,编译项目成功,参考项目,编译:错误

  2. DotNetty.Transport 的 NuGet 包,清理解决方案,成功编译项目,参考项目,编译:错误

  3. System.Threading.Tasks.Extensions 的 NuGet 包,清理解决方案,成功编译项目,引用项目,编译:错误

  4. 两个 NuGet 包(System.Threading.Tasks.Extensions / DotNetty.Transport),清理解决方案,成功编译项目,引用项目,编译:错误

.Net 标准项目中的包:

Android项目中的包:

标签: c#androidxamarinxamarin.android.net-standard

解决方案


当我从针对 API 级别 28 编译/定位的 Xamarin.Android 项目中引用 DotNetty.Transport 时,我能够得到与您相同的错误。这似乎是System.Threading.Tasks.Extensions v4.5.1 的问题,即DotNetty。运输是参考。这是另一个项目的类似问题的链接:

https://github.com/dotnet/reactive/issues/803

总结一下这个问题,看起来Systems.Threading.Tasks.Extensionsv4.5.1 的 MonoAndroid10 配置文件是空的。因为配置文件是空的,所以无法解析System.Threading.Tasks.Extensions.dll文件,从而报错。

在此处输入图像描述

要解决此问题,您必须更新您的 android *.csproj 文件并重定向引用以使用配置文件System.Threading.Tasks.Extensions.dll中定义的引用netstandard2.0

在此处输入图像描述

我执行了以下步骤:

  1. 将 System.Threading.Tasks.Extensions v4.5.1 nuget 包添加到 Xamarin.Android 项目。
  2. 将 System.Runtime.CompilerServices.Unsafe v4.5.2 nuget 包添加到 Xamarin.Android 项目
  3. 关闭 Visual Studio。
  4. 使用文本编辑器打开 Xamarin.Android *.csproj 文件。
  5. 添加另一个<ItemGroup>以告诉您的项目使用.netstandard2.0配置文件而不是MonoAndroid10配置文件

<ItemGroup>
    <Reference Include="System.Threading.Tasks.Extensions">
        <HintPath>$(UserProfile)\.nuget\packages\system.threading.tasks.extensions\4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
    </Reference>
</ItemGroup>

所以它应该看起来像这样:

在此处输入图像描述

保存文件并在 Visual Studio 中重新加载您的项目。在我这样做之后,我能够成功编译。


推荐阅读