2019年06月29日

新PCでVisual Studio 2010を動かしたら、謎のエラーが出てIntelliSenseが効かなくなった

一昨日、新環境でのVisual Studioの動作確認を兼ねて、マウスのお供の最新β版を公開したことについて取り上げましたが、この際に、新PCでVisual Studio 2010を動かしたら、謎のエラーが出てIntelliSenseが効かなくなるという現象に見舞われました。

Visual Studio 2010を立ち上げて、エディタ上で何かしらの文字を打ち込むと、高確率で次のようなエラーメッセージが表示されます。

201906_vs2010_err1a.png
Visual Studio は例外を検出しました。拡張機能が原因である可能性があります。
 詳細な情報を得るには、コマンド ラインで /log パラメーターを指定してアプリケーションを実行し、'C:\Users\○○\AppData\Roaming\Microsoft\VisualStudio\10.0\ActivityLog.xml' ファイルを調べてください。

拡張機能などと言われても…まだ、Visual Studio 2010をインストールしたばかりであり、そこに何か拡張機能を入れた覚えはありません。とりあえず、指示に従い、Visual Studio 2010(devenv.exe)を /log オプション付きで実行しました。

すると、上記ファイルに次のようなメッセージが出力されていました。

201906_vs2010_err2.png

Type: ERROR
Description: System.InvalidCastException: 型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'Microsoft.VisualStudio.TextManager.Interop.IVsTextReplaceEvents' にキャストできません。IID '{CF9928D9-65AE-4319-A446-94ED5C45ECDE}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。 場所 System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease) 場所 Microsoft.VisualStudio.TextManager.Interop.IVsTextReplaceEvents.OnReplace(ChangeInput[] pCI) 場所 Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.OnTextBufferChangedHighPriority(Object sender, TextContentChangedEventArgs e) 場所 Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](Object sender, EventHandler`1 eventHandlers, TArgs args)
Source: Editor or Editor Extension

Type: ERROR
Description: System.InvalidCastException: 型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'Microsoft.VisualStudio.Editor.Implementation.IVsTextStreamEvents_Private' にキャストできません。IID '{96FC7D44-BCDD-4F00-AE4D-07E26B2C0E52}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。 場所 System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease) 場所 Microsoft.VisualStudio.Editor.Implementation.IVsTextStreamEvents_Private.OnChangeStreamText(Int32 iPos, Int32 iOldLen, Int32 iNewLen, Int32 fLast) 場所 Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.OnTextBufferChanged(Object sender, TextContentChangedEventArgs e) 場所 Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](Object sender, EventHandler`1 eventHandlers, TArgs args)
Source: Editor or Editor Extension


エラーメッセージから何をどうしたらよいのかはさっぱり読み取れませんが、エラーメッセージの先頭の方の文字列をそのまま入れてググってみると解決策が見つかります。

201906_vs2010_err3.png

どうやら、64bit版Windowsの場合は、レジストリ エディタで「HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32」を開き、既定の値に「C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll」と入れてやればよいらしい。

ちなみに、32bit版Windowsの場合は、レジストリ エディタで「HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32」を開き、既定の値に「C:\Program Files\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll」を入れてやります。

すると、無事にエラーが出なくなり、IntelliSenseも効くようになりました。

まさか、2019年にもなって、Visual Studio 2010のエラーに悩まされることになるとは…。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング