XamarinでPCLを用いていたのですが、
のようにレガシーポータブルと表示され、レガシー扱いとなっていました。
PCLで良くね?と感じていましたが、Visual Studio 2019では選択肢として表示すらされなくなっていました。
化石扱いされて無念を感じたトラウマもあり、そんな思いをするのはもう御免なので、連休中に入れ替えを行うことにしました。
エンジニアが戦うのは、バグでもなく、ましてや社内政治でもなく、時代の流れです。
左がPCLのプロジェクトファイル。右が.NET Standardのプロジェクトファイル。
.NET Standardの方がスッキリしていますね。
プロジェクトのプロパティでポロっと変えられたりしないのーと期待しているのですが、移行方法としては、やはり新規作成するのが良さそうです。
- 移行したいPCLプロジェクトを削除
- PCLプロジェクトのフォルダ名を変更
- .NET Standardクラスライブラリを作成
- PCLプロジェクトのファイルを移行
- Properties/AssemblyInfo.csファイルは削除
- NuGetライブラリの取得
- プロジェクトの参照追加
といった流れで作業を行いました。やや煩雑です。
UnityContainerが4.0.1だったのですが、.NET Standard2.0が対応しているのはこのバージョンでは対応していないのでバージョンアップしたりとNuGetライブラリのメンテナンスも行うことになりました。
それから一通りの動作確認をしたりしたので、かなり大変でした。
こういうとき、テストコードが大事ですね。
期待される効果
PCLだと出来ることの制約があります。よって標準ライブラリなのにPCLでは使えないクラスがあります。
そこから解放されることかなと。(私の場合、IConvertibleやSystem.File.IO[FileInfo,DirectoryInfo]が使えませんでした。プロファイルによって異なる?)
下記ページで詳しく説明されています。
.NET Standardについては、下記の記事でようやく私の中で、頭の中でのイメージが完成した感じです。