はじめに
Xamarin.Forms & Prosm.Autofac.FormsプロジェクトにReactivePropertyを追加してAndroidプロジェクトをビルドするとビルドエラーが出た。
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1898,2): error XA2002: Can not resolve reference: System.Threading.Tasks.Extensions
, referenced by System.Reactive
. Please add a NuGet package or assembly reference for System.Threading.Tasks.Extensions
, or remove the reference to System.Reactive
.
環境
- macOS 10.14 Mojave
- Visual Studio Community 2017 for MAC(7.7.4)
- Prism.Autofac.Forms(7.1.0.431)
- ReactiveProperty(5.3.2)
対策
既知の問題みたいです。
https://github.com/runceel/ReactiveProperty/issues/87
https://github.com/dotnet/reactive/issues/803
詳しくはわからないけど、「System.Threading.Tasks.Extensions.dllはバージョン4.4.0つかっとけ」ってことみたいなので、そのように設定していきます。
- Androidプロジェクトを右クリックし、[追加]-[NuGetパッケージの追加(P)...]をクリックして「パッケージを追加」画面を開きます。
- System.Threading.Tasks.Extensionsのバージョン4.4.0を追加します。



おまけ
AndroidプロジェクトのcsprojファイルにSystem.Threading.Tasks.Extensions.dllバージョン4.4.0を参照するように設定する方法もあるみたいです。
https://github.com/dotnet/reactive/issues/803#issuecomment-455383106
Macの場合は以下のようにItemGroup要素をルート(Project)要素配下に追加します。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
:
(略)
:
<!-- ここから -->
<ItemGroup>
<Reference Include="System.Threading.Tasks.Extensions">
<HintPath>$(HOME)/.nuget/packages/system.threading.tasks.extensions/4.4.0/lib/netstandard2.0/System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
</ItemGroup>
<!-- ここまで -->
</Project>