dynamicキーワードでCOMを使うアプリの.NET Core 3.1への移植は再考すべき

.NET Core 3.1はLTSで、3年サポートがついているバージョンということもあり、.NET 5ではなく、.NET Core 3.1を考えておられる方もいらっしゃるかもしれません。
ただ、「dynamicキーワードでCOMを使うアプリの移植」を考えておられる場合は立ち止まるべきです。

実は、.NET Core 3.1において、dynamicキーワードを使ったCOM操作はできません。
実行しようとするとRuntimeBinderExceptionが発生します。

Dynamic keyword not working against COM objects #12587
https://github.com/dotnet/runtime/issues/12587

.NET 5でこの仕組みがサポートされており、Go Liveライセンスが付与されている「.NET 5 RC1」で動くことも確認できています。
ExcelなどのOfficeオートメーションをdynamicキーワードで触っている方は、.NET 5以上を考えましょう。
※ただし、.NET 5にLTSリリースはありません。次のLTSは来年の.NET 6の予定です。

.NET Core時代のWindows Formsデザイナー

※2020/9/27時点の内容です。

.NET Framework時代のWindows FormsデザイナーはVisual Studioのプロセス(devenv.exe)内でアセンブリを読み込み、実行するタイプでした。
このため、シームレスに動くように見える反面、32bit限定となる、自分の書いたユーザーコントロールが原因でVisual Studioごと落ちるなどの問題もありました。

.NET CoreではWindows FormsデザイナーをVisual Studioの外部プロセスで実行するアウトプロセスのタイプとなっています。
実質的に1から再実装に近い仕事量であり、互換性の問題も多数発生したであろうことが予想され、開発チームの皆さんには感謝すべきところです。

https://devblogs.microsoft.com/dotnet/windows-forms-designer-for-net-core-released/

なお、2020/9/27時点、上記記事時点ではPreviewだった、16.7はすでにリリースされているので、一通りの機能が実装されたはずです。
ただ、こういった再実装が行われたということを踏まえて、不具合が出てもFeedbackして応援する気持ちで取り組みたいところです。

(ビジネスで取り組まれる方は、.NET Frameworkとのマルチターゲットプロジェクトにして切り戻しも視野に入れても良いかもしれません)