Visual Studio 2015 拡張機能を新規作成して「メモリが不足しています」エラー(OutOfMemoryException)でビルドできない時は、画像(ToolWindow1Command.png)が破損しているので差し替える

課題

Visual Studio 2015で拡張機能を手順通りに作成して、F5デバッグ実行しようとしても、ビルドエラーで実行されない場合がある。新規作成直後は起動しても、手順に従ってテンプレートでアイテムを追加すると起動しなくなることがある。Visual Basic と C# どちらでも同様。

image

VSCTCompiler” タスクが予期せずに失敗しました。
System.OutOfMemoryException: メモリが不足しています。
   場所 System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   場所 Microsoft.VisualStudio.CommandTable.BitmapItem.Read(TextReadVSCTCStream s, XmlElement itemNode)
   場所 Microsoft.VisualStudio.CommandTable.ItemList.Read(TextReadVSCTCStream s, XmlElement listNode)
   場所 Microsoft.VisualStudio.CommandTable.CommandTable.ReadCMDSSection(TextReadVSCTCStream s, XmlElement listNode)
   場所 Microsoft.VisualStudio.CommandTable.CommandTable.Read(TextReadVSCTCStream s)
   場所 Microsoft.VisualStudio.CommandTable.CommandTable.Read(String fileName, ReadOptions ro, IMessageProcessor errorProcessor)
   場所 Microsoft.VisualStudio.CommandTable.CommandTable.Read(String fileName, IMessageProcessor errorProcessor)
   場所 Microsoft.VisualStudio.CommandTable.Compiler.Compile()
   場所 Microsoft.VisualStudio.CommandTable.VSCTCompiler.Execute()    VSIXProject1           

解決方法

ツールウィンドウのアイテムテンプレートに含まれる画像が破損しているようなので、Resourcesフォルダに追加された開けない画像を差し替える。破損した画像はファイルエクスプローラーのプレビューも表示されない。

image

コマンドの画像は問題なく読み込まれるので、暫定的にコマンドの画像で差し替えると、F5デバッグ起動できる。開発を進めて正しい画像に差し替えるのがよい。

補足

ツールウィンドウを表示するためのコマンドが定義されているCommand1Package.vsctファイルに画像の定義があるので、変更すると画像ファイルの中のアイコンの定義などを合わせて変更できる。