こんにちは。エクセルソフトの田淵です。
この問題は 2019/05/23 時点での最新版 Visual Studio for Mac 8.3 のみ(恐らく)で発生する問題でこの後のバージョンで解決すると思われます。
Xamarin.Forms のテンプレートからプロジェクトを作成したら、Xamarin.Android プロジェクトで System などの参照が❌になってる!!!!
寂しいw
嘘でしょと思い、@atsushieno さんに聞いてみたら、@y_chu5 も調べてくれて返信もらえました。ありがとうございます〜!!
んんー???MacのXamarin Androidで「MonoDroid v81 Supportのライブラリが見つからない」って言われるんだけど、何ですかね?同じ現象の方います??プロパティの参照先にSystem dllがあるのは確認しました。@atsushieno 何か知ってます? pic.twitter.com/lijgUK8Wi4
— 田淵 義人@エクセルソフト (@ytabuchi) 2019年5月23日
あーhttps://t.co/aavcCBlNkj
— ちゅうこ@つかれた (@y_chu5) 2019年5月23日
これっぽそうですかね…
原因
Xamarin.Android で利用する(?)Mono のフレームワーク参照を管理するファイルに余計なのが入っていてうまく参照できない。って感じのようでした。
以下の Frameworks.xml
に余計な参照 System.Buffers
、System.Memory
だけが入っているのが原因のようです。
$ cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/RedistList/FrameworkList.xml <FileList Redist="MonoAndroid" Name="Xamarin.Android Base Class Libraries"> <File AssemblyName="System.Buffers" Version="4.0.99.0" /> <File AssemblyName="System.Memory" Version="4.0.99.0" /> </FileList>
解決策
参照ファイルを強引に書き換えます。
書き換えるファイルは
/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/RedistList/FrameworkList.xml
です。上記の Developer Community でのやり取りの通りですが、@atsushieno のお薦め通りに、Xamarin.Android のフレームワークのバージョンを Current
で指定してあげれば必ず現在利用しているバージョンのファイルを書き換えられるので一部スクリプトは書き換えてあります。次の操作を行ってください。
正しい FrameworkList
の内容が書かれた txt ファイルを こちら からダウンロードします。ダウンロードフォルダに 66385-frameworklist.txt
がダウンロードされたとして、次のコマンドをターミナルから入力します。
$ cat "$HOME/Downloads/66385-frameworklist.txt" | sudo tee "/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/RedistList/FrameworkList.xml"
先ほどの内容確認のスクリプトを合わせて実行すると以下のようになっているはずです。
$ cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/RedistList/FrameworkList.xml <FileList Redist="MonoAndroid" Name="Xamarin.Android Base Class Libraries"> <File AssemblyName="System.Buffers" Version="4.0.99.0" /> <File AssemblyName="System.Memory" Version="4.0.99.0" /> </FileList> $ cat "$HOME/Downloads/66385-frameworklist.txt" | sudo tee "/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/RedistList/FrameworkList.xml" $ cat /Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v1.0/RedistList/FrameworkList.xml <FileList Redist="MonoAndroid" Name="Xamarin.Android Base Class Libraries"> </FileList>
無事書き換わっていますね。
Visual Studio を再起動します。
操作は以上です。
直った!
Xamarin 気になった方は
Visual Studio 2019 をインストールして触ってみてください。手順書は 2017 のものですが こちらのエントリー が参考になるかと思います。 JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
エクセルソフトでは Xamarin のトレーニングサービスを行っています。基本的なアプリを手を動かし一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは @ytabuchi まででお問い合わせいただくか、下記のページをご覧ください。
Xamarin トレーニング : XLsoft エクセルソフト
Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。
私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)、Windows アプリ、Web ページ、iOS/Android アプリの UI テストができ、RPA ツールとしても使える TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば覗いてみてください。
以上です。