.NET Frameworkから.NET Core 3xに移行したら出た例外 StreamWriter編

2019/12/10

C#

アイキャッチ

最近やっと.NETCore 3.1のアプリをデバッグし始めました。

しかし、いきなり実績のあった処理で例外が出て戸惑ってしまいました。

これからも色々出ると思うので備忘録として残していきます。

今回の事象はStreamWriterでの例外です。

こんなプログラムを作って(まあ昔作ったコードのコピペですが...)

using (FileStream fs = new FileStream($"{AppDomain.CurrentDomain.BaseDirectory}Log.txt", FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("shift-jis")))
{
// 中身は省略
}

で「StreamWriter」でArgumentExceptionの例外が出ました。

今までWinFormsではコードさえ間違えなければ普通に動くプログラムです。

それが突然動かなくなれば当然プチパニックですよw

WPFの経験も浅いのでWPFの問題かと思い検索しましたがヒットせず。

アレコレ探しているうちに見つけたのが以下の対策です。

1. NuGetでSystem.Text.Encoding.CodePagesをインストール

2. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);を追記

試しにModelのコンストラクタに記述して別メソッドでStreamWriterを実行しましたが例外は発生しません。

WinFormsやWPFで.NET Coreが使えるようになると多くのプログラマが.NET Codeの世界にやってくるかと思いますが、こういった情報は多くあるようにしたいですね。

自己紹介

自分の写真



新潟県のとある企業で働いてます。
【できる事】
電子回路設計
基板パターン設計
マイコンプログラム
C#(WinForms WPF)を使ったWindowsアプリケーション作成
PLCラダー
自動化装置アドバイザー
にほんブログ村 IT技術ブログ ソフトウェアへ

カテゴリ

このブログを検索

QooQ