Xamarin:无法解析引用:`MySqlConnector`所引用的`System.Threading.Tasks.Extensions`。

19

我无法在Visual Studio 2017中构建我的Xamarin Android项目。

我一直遇到这个错误:

Can not resolve reference: `System.Threading.Tasks.Extensions`, referenced by `MySqlConnector`. Please add a NuGet package or assembly reference for `System.Threading.Tasks.Extensions`, or remove the reference to `MySqlConnector`.

使用NuGet安装System.Threading.Tasks.Extensions后,我需要MySqlConnector。

我已经清理了解决方案,清理了所有NuGet文件,重新启动了Visual Studio,重新启动了电脑,重新安装了该NuGet包,重新安装了所有NuGet包,从Debug切换到Release再切换回来,更改了C#版本,确保了所有NuGet文件的文件权限都是正确的,将System.Threading.Tasks.Extensions作为dll引用等等。

但是错误仍然存在。有什么想法是出了什么问题吗?


1
这里有一个类似的问题,您可以参考 https://github.com/xamarin/xamarin-android/issues/1879 - Lucas Zhang
1
有趣的是,它在VS 2019中编译正常,但在VS 2017中却无法编译。 - Nick Kovalsky
2
根本问题在此处跟踪:https://github.com/ppy/osu/pull/5394。它在VS 2017中仍然无法工作,但已在VS 2019中修复。 - ToolmakerSteve
截至2019年12月13日,在VS2019中无法工作。 - Clint StLaurent
3个回答

26

我相信你正在使用版本为4.5.1或4.5.2的System.Threading.Tasks.Extensions,在你的Xamarin.Android项目中,你可以尝试卸载这些版本并安装版本为4.5.0的库。

截至目前(2019年1月14日),这是一个解决办法,在Xamarin解决这个问题的根本原因之前。


在 Xamarin 的 Bug 追踪器中,是否有我们可以跟踪的 Bug,以了解何时会修复此问题? - Maximus

1

2019年12月安装4.5.0版本会导致构建失败,出现"java.exe存在代码2"的错误。

尝试按照此处描述的手动编辑Android项目文件: https://forums.xamarin.com/discussion/134422/could-not-load-assembly-system-threading-tasks-extensions

<ItemGroup>
    <PackageReference Include="System.Reactive" Version="4.1.1" />
    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.5.2"/>
  </ItemGroup>
  <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>

0
  1. 在您的 Xamarin.Android 项目中添加 System.Threading.Tasks.Extensions v4.5.1 nuget 包。
  2. 关闭 Visual Studio。
  3. 使用文本编辑器打开您的 Xamarin.Android *.csproj 文件。
  4. 添加另一个 <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中重新加载您的项目。这样做后,我就能够成功编译了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接