帳票クリエータ for .NET V4 .NET6/8 (Windows限定)対応しました

おはこんばんちは、製品開発担当の加々知です。

先日(8月末)の Lot_009 で.NET6/8 (Windows限定)に対応しました。
.NET6/8 (以下 ".NET")で動作させるにあたって.NET Frameworkと動作が違う箇所があるので注意が必要です。

エンコーディング

".NET Framework" ではデフォルトのエンコーディングは "Shift_JIS" になりますが、".NET" では ”UTF-8” になります。
例えばレコードセットのエンコーディングに "Shift_JIS" が指定されていた場合エラーとなってしまいます。
"Shift_JIS" を指定したい場合は使用できるようにコード中で宣言する必要があります。

  • C#

// Shift-JIS の使用を許可します。
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

  • VB.NET

' Shift-JIS の使用を許可します。
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)

スクリプティング

設定ファイルの DocCreatorConf 要素の scriptType 属性が未指定 または "application/ecmascript" が指定されていた場合、スクリプト実行時にエラーとなってしまいます。これは "application/ecmascript" を実行するスクリプトエンジンが ".NET" に対応していないため発生します。
".NET" でスクリプトを実行する場合は scriptType 属性 に”clearscript” を指定する必要があります。
"clearscript" ではスクリプトの記述が一部変わってしまうので注意が必要になります。"clearscript"は ".NET Framework" でも動作します。

  • Script 要素の import 属性

使用できません。import 属性に"System.Drawing" と指定した場合

var color = Color.FromArgb(rgb);

と記述出来ましたが、

var color = System.Drawing.Color.FromArgb(rgb);

のように名前空間を含めた形で記述する必要があります。

  • C#のDictionary<TKey, TValue>

クリエータや Script 要素の ref 属性で参照しているモジュールをスクリプトで使用することが出来ますが
参照先のプロパティ・メソッドの戻り値が Dictionary だった場合

var dicValue = Dic[key];

で Value 値が取得できましたが、"[]" での指定が出来なくなりました。

var dicValue = Dic(key);

のように "()" で囲う必要があります。

スクリプトを記述する際は ".NET Framework" と ".NET" で 動作する "clearscript" の使用をおすすめします。

それでは、また次回。(・ω・)ノシ