仮想環境のWindows Update後にVS2013が必ずクラッシュするようになったので差分ディスクを削除してすぐに復旧させた
- ホストOS: Windows 7 Professional 64bits
- 仮想化ソフト: Oracle VirtualBox 5.0.14
- ゲストOS: Windows 8.1 Pro 64bits
- 開発環境: Visual Studio 2013 Update 5 (ゲストOSにインストール)
出社して、しばらく保留していた開発環境のWindows Updateを実行した。
途中、ちょっとダウンロードの進捗が悪かったので、Visual Studioを起動して作業したが、インストールの進捗が進んでいたので終了させて別の作業を行った後、Windowsを再起動して、作業を再開した。
C#のソリューションを開いたまでは良かった。
C#とC++のプロジェクトが混在したソリューションを開くと、C++のプロジェクトが開けないというメッセージが出て、リンクに誘導された。 その後、ダイアログでOKを押すと・・・
「Visual Studio 2013は動作を停止しました・・・」
- 再現性があるので、おかしいと思いつつも、エディタでソリューションファイルを開いて、C++プロジェクトを削除してもダメ。
- それどころか、他のC#ソリューションも開けず、新規C#プロジェクトも作成&読み込みと同時にクラッシュする。
- 更新履歴を見ても、.NET 4.5.2のセキュリティの更新が含まれているくらいで、Visual Studio関係の更新はなさそう。
- アクティビティログを見ろというので覗くと、Windows Forms/WPFデザイナで.NET Runtimeエラーが発生して落ちている。
この時点で、修復セットアップ等はあきらめた。
前の記事にも書いたが、仮想環境にしか開発環境は入れていない。
今回、問題になったのは、こちらの記事のゲストOS2の環境。
起動ドライブのマスターVHDには、VS2013.5がインストールされ、少し前のWindows Updateをかけてあるが、開発で汚染されていない状態でVirtualBoxの複数割り当て属性を付けているので、仮想マシンにアタッチしなおしたら、自動で状態がリセットされて、新しい差分ディスクが出来る。
現在、作業中のプロジェクトサイズは大きくないが、作業フォルダは別のVHDに置いているので、OSイメージはリセットされても、作業フォルダの状態はそのままで作業を再開できた。*1
ホストOSは、フルバックアップしていたとしても、色々仕事のしがらみがあるので、ちょっと前の状態に戻すのは抵抗があるが、開発環境はローカルに重要なデータを置かなければ、(スナップショットを含む)差分ディスクを破棄すれば、すぐにリセットできるのが良い。*2
自宅PCを発注したが、仮想環境用のOSもAmazonで購入した。
「やっぱり、ホストOSには開発環境は入れない方が良い・・・」
ホストOSが、Windows 10 ProだからHyper-Vの勉強からだ!
2016/12/18 追記
%localappdata%\Microsoft\VisualStudio\14.0\ComponentModelCache
を削除すると良いようです。
Visual Studioが起動するなら、事前に以下の拡張機能をインストールしておくことで、メニューからキャッシュを削除することができます。
Clear MEF Component Cache - Visual Studio Marketplace
なお、この問題の対処がVS2015.3で行われたという情報もあるので、まだ当ててない場合は上げてみるのも手です。