kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studioでのビルド時にCOMコンポーネントでエラーが出る場合の対処

Visual Studio 2017(15.9.13)で発生しています。ある程度大いC++プロジェクトをビルドすると、突然こんなエラーが出るようになりました。

1>------ ビルド開始: プロジェクト: , 構成: Debug Win32 ------
1>エラー HRESULT E_FAIL が COM コンポーネントの呼び出しから返されました。
1>エラー:エラー HRESULT E_FAIL が COM コンポーネントの呼び出しから返されました。

一度このエラーが出ると、OS再起動、ソリューションクリーンアップとフルビルドしてもダメでした。Developer Communityにも報告されているので、そこそこ頻繁に出るようです。

developercommunity.visualstudio.com

Visual Studio 2019で同じソリューション開いても(toolsetやSDKはVS2017のままアップグレードしない)ビルドはできます。

最初についていた回避方法はこんなものでした。

  1. Developer Command Prompt for VS2017を管理者として実行する。
  2. "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies"に移動する
  3. gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll と実行する

自分の場合、上記の方法では直らなくて困っていたんですが、先日あらたな回避方法が追加されて、これで直りました。

  1. ソリューションファイルのあるフォルダーにある.vsフォルダー(隠しフォルダーです)を削除
  2. bin/objフォルダーを削除

やっぱりVSが変な挙動する場合、.vsフォルダーを削除するというのが鉄板の回避方法のようです。拡張機能なら拡張機能のキャッシュフォルダーを削除する。