Visual Studio 2019 preview 1使っててふと見たら拡張機能に問題ありみたいなバーが出てるのに気付きました。詳細な内容を見るとこんな感じ。
Extension ‘ClaudiaIDE’ uses the ‘synchronous auto-load’ feature of Visual Studio. This feature will no longer be supported in a future Visual Studio 2019 update, at which point this extension will not work. Please contact the extension vendor to get an update. (UI Context: {adfc4e64-0397-11d1-9f4e-00a0c911004f} Package Guid: {7442ac19-889b-4699-a817-e6e054877ee3})
自分が作った拡張機能だったか、、、
それはさておき、古い拡張機能の方式は同期読み込みでした。Visual Studio 2015からは非同期でバックグラウンドでロードすることができるようになっています(AsyncPackage)。
バックグラウンドロードに対応しているとVisual Studioの起動も早くなる可能性が高いです。
さて今現在Preview中のVisual Studio 2019ですが、16.1からはバックグラウンドロードに対応した拡張機能のみサポートとなるようです。
Visual Studio 2019, version 16.0:
The user will be notified when a package is being synchronously auto loaded, but it will load and work like normal.Visual Studio 2019, version 16.1:
Synchronously auto loading of packages will no longer be supported.
完全に確認するの忘れてました。
対応方法はAsyncPackageにして非同期な自動ロードに対応するか、自動ロードをやめるかなどの選択肢があります。
でもせっかくなのでちゃんと非同期な自動ロードに対応しておきたいですね。
対応方法は基本的には以下のドキュメントの通りです。
パッケージのクラスをPackageから派生するのではなくてAsyncPackageからの派生にしてInitializeをInitializeAsyncに変える、属性でバックグラウンドロードを有効にするといったところでしょうか。
後は一部UIスレッド触る必要があるところでSwitchToMainThreadAsyncを使うようにするとかかな。
という感じでClaudiaIDEは対応させました。AsyncPackageにする為にVisual Studio 2012、2013を非サポートにしてちょっとは綺麗になったかな…(気のせい)
いちおう今のところ機嫌よく動いてる…かな。