Translate

.NetFrameworkから.Net Coreの移行で出来ない事[WindowsForm編]

.NetFrameworkから.NetCoreで作り直す時に直面した事




フレームワークのバージョンを変更するだけで移行が可能か?


.Framerowkのバージョンが上がるだけだった場合の移行では、使用する.Frameworkのバージョンを変更するだけでも、ある程度新しい.NetFrameworkに変換がされたが、.NetFrameworkから、.Net Coreへは、根本的にアーキテクチャが異なるようで、使用するフレームワークを変更するという単純な方法では出来ないようであった。

変換する方法自体はいくつかあるば、「.NET Portability Analyzer」を利用し、行こう可能なアセンブルを分析したり等で、調整していく方法である。

筆者の経験上、こういった変換は、動作確認に多くの時間を割く上に、その後リリース後の、動作不良を起こした際に、影響範囲の特定にまた時間を掛け、みたいな、急を要するトラブルの責任リスクや、評価に繋がってしまうのを経験している為、基本的には、アーキテクチャが変わった場合には、ゼロから作り直す方法を取っている。

ゼロからといっても、.NetFrameworkの作り方に依存しすぎる作りをしていない限りは、コードのコピー&ペーストが利用できるところも多い為、全くのゼロではない。

.NetFrameworkから、.NET Coreへの画面デザインコピーでつまづいた


移行で実際大変なのは、画面デザイン。

ボタンの大きさ、画面の大きさ、位置に、フォントサイズや、フォントの種類・・・と言った事を、いちいちゼロからやるのは、とても大変である。

ところが、試しに、.NetFramework4.7.2から、Core 5で作成したWindowsFormsの画面に、コピー&ペーストで貼り付けようとすると、なんと、貼り付けられなかった。

今後、貼り付け時に変換して貼り付けられる等、改善される可能性もあるが、.Net Coreの登場から5までバージョンが上がっているが、そういった様子もこれまでなかったようなので、画面デザインに関しては、位置やサイズ、カラー等の部分的なところをコピーして、デザイン移行していく事になりそうだ。

画面のボタン配置などを、レガシーのように、コードで生成してやっている場合には問題無いと思われるが、Visual(ビジュアル)な利便性が損なわれ過ぎて、そんな作り方をしている人は殆どいないと思われるが・・・

WPF程じゃ無いが、微妙にコードの補修が必要な場面も出てきた


WPFをコードビハインドで動作させる為に、Doeventsが無い!みたいな事ほど迄の修正は無いが、Encoding(エンコーディング)でSHIFT-JISを扱う時など、事前宣言が必要等微妙な修正が必要となった。

.Net CORE5で Encoding.GetEncoding("shift-jis") を使用する為には、 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); を事前にする必要がある。

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
using (StreamWriter sw = new StreamWriter(OutPutPath + "\\" + string.Format("{0:yyyyMMddHHmmss}", DateTime.Now) + "_YamatoFullFillment.csv" , false, Encoding.GetEncoding("shift-jis")))
{
}

のように。

結局のところ、コードコピーによる不具合も不安になる為、がっちりコーディングしなおしが基本となりそうだ。

このブログの人気の投稿

VBAのADOで「パラメーターが少なすぎます。xを指定してください。」と表示された場合の原因

ACCESSでバーコードスキャンしたら自動でイベントを起こす方法

PostgreSQL 11 でpg_dumpallを使ってバックアップしたデータをリストアするとき文字化けの対処法

ACCESSのVBAを実行するとACCESSが強制終了する事がある

VBSでマクロの実行時に警告を非表示にする方法

ACCESSでバーコードをスキャンして登録更新する簡単なサンプル

ACCESSのVBAでリストビュー(ListView)を使う為の設定 | Office365

pgAdmin 4が遅いのは仕方がない | PostgreSQL things.

ACCESSのVBAでADOを利用したバインド変数を利用したデータベース連携方法

ASP.NETのでクライアント証明書を使ったログイン認証を行う方法