Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Visual Studio for Mac 8.3 の Xamarin.Android プロジェクトで System 参照ができない問題について(修正予定)

こんにちは。エクセルソフトの田淵です。

この問題は 2019/05/23 時点での最新版 Visual Studio for Mac 8.3 のみ(恐らく)で発生する問題でこの後のバージョンで解決すると思われます。

Xamarin.Forms のテンプレートからプロジェクトを作成したら、Xamarin.Android プロジェクトで System などの参照が❌になってる!!!!

f:id:ytabuchi:20190523115539p:plain:w450

f:id:ytabuchi:20190523115952p:plain:w450

寂しいw

f:id:ytabuchi:20190523124245p:plain:w600

嘘でしょと思い、@atsushieno さんに聞いてみたら、@y_chu5 も調べてくれて返信もらえました。ありがとうございます〜!!

原因

Xamarin.Android で利用する(?)Mono のフレームワーク参照を管理するファイルに余計なのが入っていてうまく参照できない。って感じのようでした。

以下の Frameworks.xml に余計な参照 System.BuffersSystem.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 を再起動します。

操作は以上です。

直った!

f:id:ytabuchi:20190523122134p:plain:w450

f:id:ytabuchi:20190523122639p:plain:w600

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 も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば覗いてみてください。

以上です。

エクセルソフト | ダウンロード | 学習用リソース | JXUG リンクページ | ブログ購読