Windows XP上でVisual Studio 2010を使用すると、コード補完ツールのIntelliSense(インテリセンス)が機能しなくなるという不具合が発生する場合があるそうです。
手持ちのマシンで試してみたところ、見事に当てはまっていました。
WinXPのサポート終了まで半年を切り、あまり役に立つことはないと思われますが、せっかくですのでその復旧手順を残しておきます。
不具合の再現
まず、こちらで確認できた再現環境は以下の通りになります。
それぞれ最新版のアップデート(2013/10/30現在)を適用しているものとします。
もちろん、この環境を満たせば必ず発生するというわけでも、他の環境では起こらないことを保証するわけでもありません。
- Windows XP Professional SP3
- Visual C++ Express 2010 SP1
この状態でVisualStudio2010を起動して適当になコードを打ちこみ、IntelliSenseを起動します。
…反応がありません。
ログを出力するように設定しても、特に何も表示されないようです。
原因はWindowsの更新プログラム
Stack Overflowによれば、2013年9月に配布されたWindowsのアップデートパッチ「KB2876217」の適用後に不具合が発生したようです。
コントロールパネルから「プログラムの追加と削除」を起動し、「プログラムの変更と削除」を選択します。この時、「更新プログラムの表示」にチェックを入れます。
たくさん項目があって見当たらないときは、配信日である2013年9月9日を目安に探してみると良いかもしれません。
不具合の直接の原因はともかく、これを削除してみましょう。
ただし、セキュリティパッチを削除するということは、それだけマシンが危険に晒されるということです。可能であれば別の手段(他OSやIDEを使用するなど)を取るべきと思います。
パッチを削除したら、Windowsを再起動します。
復旧確認と自動更新の停止
再起動後、きちんとIntelliSenseが機能しているかチェックしてください。
手元のマシンでは以上の方法で復旧しました。手順自体は簡単ですが、Windowsのパッチに原因があるということに気付かないと、ひたすら再インストールを繰り返して涙目になってしまいます。
Windowsの設定でアップデートを自動にしている場合、KB2876217が再インストールされて元の木阿弥です。
自動更新を切る、あるいは更新の通知が出たときにインストールせずに再通知しないようチェックを入れるようにしましょう。