アイコンをリソースで埋め込むべきだと思いますが、dotnet.exeでリソースを扱う方法を知らないので、.exeファイルのアイコンを読み込むようにしてみました。
まずプロジェクトファイル(.csproj)の<PropertyGroup>にアイコンのパスを以下のようにセットする。
<ApplicationIcon>アイコンのフルパス</ApplicationIcon>
これで生成される.exeファイルにアイコンがセットされます。エクスプローラーから.exeファイルを見るとアイコンが表示されていることから、アイコンがexeファイルに埋め込まれていると思われます。
次に.exeファイルのアイコンを参照しアプリケーションアイコンにします。
public partial class Form1 : Form
{
// コンストラクタ
public Form1()
{
InitializeComponent();
// アプリケーションアイコン
var exePath = Environment.ProcessPath;
if (exePath is not null)
{
var icon = System.Drawing.Icon.ExtractAssociatedIcon(exePath);
this.Icon = icon;
}
~ 移行省略 ~
Environment.ProcessPath;
に実行している.exeのフルパスが返ります。
System.Drawing.Icon.ExtractAssociatedIcon()
で.exeファイルからアイコンを取得します。
this.Icon = icon;
でフォームにアイコンをセットしています。
コメント