Developers Rock 'n' Roll High School

C#、.NET MAUI、Xamarin、などの技術の備忘録 Azureとかも書く予定

Visual Studio 2019 for Mac でAndroidプロジェクトからSystemとかのアセンブリが見えなくなったときの暫定対処法

※2019/6/24追記
下記のリリースで修正(Developer Community 514955)されたようですね。よかったよかった。

docs.microsoft.com

環境

OS: macOS Mojave
IDE: Visual Studio 2019 for Mac

事象

  • Androidプロジェクトの参照を見ると、SystemとかSystem.Coreがグレーアウトされてエラーメッセージが表示さている。
    (私の環境ではXamarin.FormsのAndroidプロジェクトでしたが、Xamarin.Android環境とかでも起きるのでしょうか?)

解決方法

タイトルでは得意げに対処法とか言っていますが、すでにVisual Studioのフォーラムで示されています。 https://developercommunity.visualstudio.com/comments/516437/view.html

Visual Studio 2019 for Mac のリリース直後にAndroid周りでバグがあってざわざわしていたのは知っていたのですが、 ゴールデンウィークあたりにパッチが当たっていたような気がしたので安心して本日(2019/05/14)アップデートしたらまだなおっていませんでした。

せっかくなので日本語で私の環境で実施したことを書いておきます。(ご自分でやる方は自己責任でお願いいたします。)
あと、バージョン情報などは会社の環境メモってくるの忘れたのであとで追記します。

上記リンクではコマンドラインで編集してますが、私はVisual Studio Code で編集しました。(保存するときにsudoで保存するか聞かれます)

1. 下記のファイルを編集するので、どこかにバックアップをとります。(9.2.0-5の名前は環境により差異があるようです)

/Library/Frameworks/Xamarin.Android.framework/Versions/9.2.0-5/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>

2. 中身を下記のように編集します。(File AssemblyName=..を削除します)

<FileList Redist="MonoAndroid" Name="Xamarin.Android Base Class Libraries">
</FileList>

3. sudoで保存します。(普通に保存するとVisual Studio CodeがSudoで保存するか聞いてきます)

4. 念のためにVisual Sutudio 2019 for Macを終了して、おなじみのbin/obj削除します。

5. Visual Sutudio 2019 for Macを再び起動すると、先ほどのエラーは無くなっているはずです。

手順1でバックアップしたファイルはパッチが当たってほとぼりが冷めるまでは保管しといたほうが良いのでしょうかね。

以上です。次のパッチでは直っているのでしょうか。