在Xamarin Android项目中引用.Net Standard项目时发生错误

时间:2019-01-04 17:16:19

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

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

  

严重性代码描述项目文件行抑制状态   错误无法解析参考: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的NuGet软件包。传输,干净的解决方案,成功地编译项目,参考项目,编译:错误

  3. 用于System.Threading.Tasks.Extensions的NuGet程序包,干净的解决方案,成功编译项目,参考项目,编译:错误

  4. 两个NuGet软件包(System.Threading.Tasks.Extensions / DotNetty.Transport),干净的解决方案,成功编译项目,参考项目,编译:错误

.Net Standard项目中的软件包:

  • Acr.UserDialogs 7.0.1
  • Humanizer 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

1 个答案:

答案 0 :(得分:1)

当我从Xamarin.Android项目根据API级别28进行编译/定位引用DotNetty.Transport时,能够得到与您相同的错误。System.Threading.Tasks.Extensions v4.5.1似乎是一个问题,{ {3}}正在引用。这是另一个项目中类似问题的链接:

DotNetty.Transport

总结一下,看来Systems.Threading.Tasks.Extensions v4.5.1的MonoAndroid10配置文件为空。由于配置文件为空,因此无法解析System.Threading.Tasks.Extensions.dll文件,从而导致错误。

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

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

enter image description here

我执行了以下步骤:

  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>

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

enter image description here

保存文件并在Visual Studio中重新加载项目。完成之后,我就可以成功编译。