c# - 在 Xamarin Android 项目中引用 .Net 标准项目时出错
问题描述
当我在 Andoid 项目中添加对 .Net 标准项目的引用时,出现此错误。
严重性代码 描述 项目文件行抑制状态错误 无法解析引用:
System.Threading.Tasks.Extensions
,被 引用DotNetty.Transport
。请为 . 添加 NuGet 包或程序集引用System.Threading.Tasks.Extensions
,或删除对DotNetty.Transport
. VFMApp.Droid
我试过:
既不是 NuGet 包(System.Threading.Tasks.Extensions / DotNetty.Transport),干净的解决方案,编译项目成功,参考项目,编译:错误
DotNetty.Transport 的 NuGet 包,清理解决方案,成功编译项目,参考项目,编译:错误
System.Threading.Tasks.Extensions 的 NuGet 包,清理解决方案,成功编译项目,引用项目,编译:错误
两个 NuGet 包(System.Threading.Tasks.Extensions / DotNetty.Transport),清理解决方案,成功编译项目,引用项目,编译:错误
.Net 标准项目中的包:
- Acr.UserDialogs 7.0.1
- 人性化者 2.5.16
- Microsoft.Azure.Devices.Client 1.18.1
- Microsoft.Azure.Mobile.Client 4.1.1
- Microsoft.Azure.Mobile.Client.SQLiteStore 4.1.1
- NETStandard.Library 2.0.3
- Plugin.Share 7.1.1
- Refractored.MvvmHelpers 1.4.1-beta
- Xam.Plugin.Connectivity 4.0.0.190-beta
- Xam.Plugin.DeviceInfo 4.1.0-beta
- Xam.Plugin.Geolocator 4.5.4-beta
- Xam.Plugin.Media 4.1.1-beta
- Xam.Plugins.Settings 4.0.0.10-beta
Android项目中的包:
- Xamarin.Android.Support.Compat 28.0.0
- Xamarin.Android.Support.Design 28.0.0
- Xamarin.GooglePlayServices.Maps 60.1142.1
解决方案
当我从针对 API 级别 28 编译/定位的 Xamarin.Android 项目中引用 DotNetty.Transport 时,我能够得到与您相同的错误。这似乎是System.Threading.Tasks.Extensions v4.5.1 的问题,即DotNetty。运输是参考。这是另一个项目的类似问题的链接:
https://github.com/dotnet/reactive/issues/803
总结一下这个问题,看起来Systems.Threading.Tasks.Extensions
v4.5.1 的 MonoAndroid10 配置文件是空的。因为配置文件是空的,所以无法解析System.Threading.Tasks.Extensions.dll
文件,从而报错。
要解决此问题,您必须更新您的 android *.csproj 文件并重定向引用以使用配置文件System.Threading.Tasks.Extensions.dll
中定义的引用netstandard2.0
。
我执行了以下步骤:
- 将 System.Threading.Tasks.Extensions v4.5.1 nuget 包添加到 Xamarin.Android 项目。
- 将 System.Runtime.CompilerServices.Unsafe v4.5.2 nuget 包添加到 Xamarin.Android 项目
- 关闭 Visual Studio。
- 使用文本编辑器打开 Xamarin.Android *.csproj 文件。
- 添加另一个
<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 中重新加载您的项目。在我这样做之后,我能够成功编译。
推荐阅读
- tensorflow - 在大量类上训练分类器时,SVM 非常慢
- sql - Redshift 意外返回子查询中未找到的项目的空值
- sql - sqllite 中的哪些 SQL 查询需要使用以秒为单位的时间来计算今天的时间戳?
- javascript - 带有 flexbox-wrap 的响应式导航
- python - 绘制具有恒定条形宽度但具有不同 bin 大小的直方图
- javascript - DOM 元素 - Youtube 视频
- flutter - SnackBar 持续时间参数未定义
- nginx - 使用 nginx 出错时重定向到不同的上游
- python - 如何将列表中的元组列表转换为一维数组?
- c - 动态数组重新分配