【问题标题】:Error when referring .Net Standard project in Xamarin Android Project在 Xamarin Android 项目中引用 .Net 标准项目时出错
【发布时间】:2019-01-07 10:45:32
【问题描述】:

当我在 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 包,清理解决方案,成功编译项目,引用项目,编译:ERROR

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

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

.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

【问题讨论】:

  • 为什么你的 NetStd 库中有原生 Android 包?
  • @SushiHangover for this like: public virtual async Task SyncAsync() { if (!CrossConnectivity.Current.IsConnected) { Logger.Instance.Track("无法同步项目,我们离线");返回假;尝试来自 xam 包的 CrossConnectivity。这实际上是微软的代码。我正在尝试使用我的github.com/Azure-Samples/MyDriving 版本,但使用更新的包、更简单的架构等失败了。
  • ?我只是看看他们的 PCL 库,它不包含 Android 包,你也不应该,不确定你是如何让它们正确安装/恢复的
  • 我认为他们会这样做:ibb.co/7grMYFs

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


【解决方案1】:

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

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

总结一下这个问题,Systems.Threading.Tasks.Extensions v4.5.1 的 MonoAndroid10 配置文件似乎是空的。由于配置文件为空,无法解析System.Threading.Tasks.Extensions.dll文件,因此报错。

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

我执行了以下步骤:

  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 中重新加载您的项目。完成后,我能够成功编译。

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多