Program.csのMain()の中に、ログ出力前に以下を記載すればReleaseビルドのときにも出力されるようになる。
log4net.Config.XmlConfigurator.Configure();
AnyCPUでビルドして64bitで動作するEXEを32bitで動作するようにするには、以下のコマンドを実行する。
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\CorFlags.exe" 変更したいEXE.exe /32BITREQ+ /Force
実行すると以下のようにコンソールに出力される(変更が完了したかについては表示されないようだ)。
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.8.3928.0
Copyright (c) Microsoft Corporation. All rights reserved.
変換完了後、実際に64bit環境で起動させてみて、タスクマネージャーの詳細タブから、該当のEXEのプロットフォームが「32ビット」となっていれば変更は完了している。
try-convertというツールを利用して、以下の手順でコンバートする(Visual Studio 2022で作成した.NET Frramework4.8のWindowsフォームの前提)。
※実行する前に全ファイルを別フォルダなどにコピーしてバックアップしておくこと!
コンバートは自動でバックアップしてくれず、そのままプロジェクトが書き換えられるので注意!
これで、とりあえず.NET6としてコンバートが完了した。
以下の旧プロジェクトファイルが残るので、これらは削除してOK
「XXX.csproj.old(C#の場合)」「XXX.vbproj.old(VB.NETの場合)」
以下に、コンバート後に手修正した問題点を随時追記していく。
「警告 CA1416 この呼び出しサイトはすべてのプラットフォームで到達可能です。’Font’ は ‘windows’ でのみサポートされています。」というような「CA1416」の警告が出た場合は、とりあえず以下のように警告をつぶすことができる。
C#
#pragma warning disable CA1416
LabelText.Font = new System.Drawing.Font("Meiryo UI", 21.75F);
#pragma warning restore CA1416
VB.NET
#Disable Warning CA1416
LabelText.Font = New System.Drawing.Font("Meiryo UI", 21.75F)
#Enable Warning CA1416
上記のように#から始まるディレクティブを使って、警告がでないようにする。
フォーム自体のフォントが「Yu Gothic UI, 9pt」になるので、これを「MS UI Gothic, 9pt」に変更すれば元のデザインのままになった。
.NET Framework4.8のときは、以下を実行すると既定のブラウザで指定したURLのページが表示されていた
System.Diagnostics.Process.Start("https://juraku-software.net");
しかし、.NET6だとこれを実行すると「System.ComponentModel.Win32Exception: ‘An error occurred trying to start process ‘https://juraku-software.net’ with working directory ‘C:\~\bin\Debug\net6.0-windows’. 指定されたファイルが見つかりません。’」というエラーになってしまう。
そのため、.NET 6では以下のように修正する。
C#
var processStartInfo = new ProcessStartInfo
{
UseShellExecute = true,
FileName = "https://juraku-software.net"
};
System.Diagnostics.Process.Start(processStartInfo);
VB.NET
Dim processStartInfo As New ProcessStartInfo With {
.UseShellExecute = True,
.FileName = "https://juraku-software.net"
}
System.Diagnostics.Process.Start(processStartInfo)
こういう実行時エラーが一番怖い・・・挙動を変えないで欲しかった・・・
Done Adding Additional Store SignTool Error: An unexpected internal error has occurred. Error information: "Error: SignerSign() failed." (-2146869243/0x80096005)
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\signtool.exe" sign /fd sha256 /f %証明書パス% /p %証明書パスワード% /tr http://timestamp.digicert.com /d %アプリ名% %EXEパス%
ポイント:http://timestamp.sectigo.com/rfc3161ではなく、http://timestamp.digicert.comとすればOK
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\signtool.exe" verify /pa "C:\temp\sample.exe"
実行結果
File: C:\temp\sample.exe Index Algorithm Timestamp ======================================== 0 sha256 RFC3161 Successfully verified: C:\temp\sample.exe
ポイント