LoginSignup
1
2

More than 5 years have passed since last update.

【Xamarin.Forms&Prism】ReactiveProperty導入直後のAndroidプロジェクトでビルドエラー

Posted at

はじめに

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つかっとけ」ってことみたいなので、そのように設定していきます。

  1. Androidプロジェクトを右クリックし、[追加]-[NuGetパッケージの追加(P)...]をクリックして「パッケージを追加」画面を開きます。
  2. System.Threading.Tasks.Extensionsのバージョン4.4.0を追加します。 スクリーンショット 2019-02-17 12.54.21.png スクリーンショット 2019-02-17 13.29.11.png
  3. Androidプロジェクトをビルドします。 スクリーンショット 2019-02-17 13.38.01.png 警告は残りますが、とりあえずビルドできました。

おまけ

AndroidプロジェクトのcsprojファイルにSystem.Threading.Tasks.Extensions.dllバージョン4.4.0を参照するように設定する方法もあるみたいです。
https://github.com/dotnet/reactive/issues/803#issuecomment-455383106
Macの場合は以下のようにItemGroup要素をルート(Project)要素配下に追加します。

{ソリューション名}.Droid.csproj
<?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>
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2