ゲームエフェクトデザイナーのブログ (新)

レポート記事とかUE4のマテリアルとか。C#とかも触ったり。

C# Visual Studioで設定したマルチアイコンでサイズ別に古い画像が残る現象

こちらに悩まされたので備忘録として。

 

まず、Visual Studio Community 2017 を使用しているのですが、アイコンを設定する際にはプロジェクトのプロパティ>アプリケーション内で指定できます。

f:id:moko_03_25:20181025005013j:plain

 

加えて、フォーム左上のアイコンとタスクバーに表示されるアイコンはフォームデザイナのプロパティで指定できます。

フォームの左上(コンボボックス)やタスクバーに表示されるアイコンを変更する - .NET Tips (VB.NET,C#...)

f:id:moko_03_25:20181025005128j:plain

 

デスクトップ上で表示されるアイコンは表示サイズごとに用意するのが良いようなので、「16*16」「32*32」「48*48」「256*256」の4種類のサイズを別々にPhotoshopで用意し、下記のサイトを利用させていただいて1つにパッキングしたiconファイルを作成しました。

 

で、マルチアイコンを初めて設定してビルドした時には問題ありません。

しかし画像を後から「やっぱりこっちにしよ」と差し替えてビルドすると‥特大サイズ・大サイズ・中サイズ・小サイズの中で一部しか更新されなくて、サイズによっては古い画像情報が残る現象が起きます。

これは毎度この現象に悩んでいたので、少なくとも自身の環境下では100%起こるんじゃないかと思っています。

そこでググって出てきた下記のサイトを参考に、マルチアイコンを使わずに設定する方法を試してみました。

しかし「InsertIcons.exeが見当たりません」とエラーが出て失敗します。

どうやら「InsertIcons.exe」は別途ダウンロードしてこないといけなかったみたいで、そのあたりも記事内で解説してくれているのがこちら。

こちらのサイトにも書かれてますが、パス指定で空白を挟む場合にご注意。
指定するexeやアイコンなどをVisual Studioのプロジェクト内に置いたりすると、しっかりと「Visual Studio」と空白のパスが挟まれます‥

さて、正常に実行できたのでこれでうまくいったかと思いきや、古い情報がそれでも残っています。

ソリューション内のコード全体に対してアイコンファイル名などで全検索かけてもヒットしません。「一体どこにアイコン情報が残っているのだ‥!」としばらく悩み続けました。

そんな折、こんな記事を発見‥

vb2010で作成したexeのアイコンが変更されない

アイコンのキャッシュをクリアすると良いかもしれません。 

 えー!キャッシュの問題だったの‥と。。

で、解決策としてレジストリをいじるという情報が載っているので「えーなんか悪化したらいやだなあ。そうなったらレジストリ復元したりとか面倒だなあ」と二の足を踏みつつ新しくまたマルチアイコンを作成しては普通に設定してビルドしてみたりなんやかんやしていたら、いつの間にか全てのサイズで最新のアイコン画像が綺麗に反映されていました。

という訳で、結局原因は分からずじまいでとてもモヤモヤするのですが‥とりあえず今回調べた各サイトさまの情報は記事として残しておこうと思った次第です。。

このあたり原因をご存じの方いらっしゃったら教えてください‥!