ソース編集で配色とかがおかしくなるときの対処

ある日突然ですが、IDEがこんなエラーを発するようになりました。

Snapcrab_microsoft_visual_studio_20

(ユーザ名のところは消しています)

エラーが発生すると、単語単位で変更される予約語の配色とか、エラーがある部分に対する波線とかが崩れてしまいます。

001

エラーメッセージに書いてあるActivityLog.xmlをブラウザで開くとエラー内容が記録されています。

Snapcrab_activity_monitor_log_windo

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)

上記エラーコードとIIDを検索するとKBでこんなものがヒットしました。
Visual Studio 2010 crashes after installing MSDN Library for Visual Studio 2008
英語ですが、内容としては「レジストリがぶっ飛んでるから、再登録して」ということみたいです。
対象はVS2010となっていますが、VS2012でも同じ対応で問題ありませんでした。

OSによりレジストリの位置と登録内容が若干異なります。
○32-Bit Windows
 ・レジストリの位置
   [HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32]
 ・登録内容:「(規定)」に以下の内容を登録します。
  C:\Program Files\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll

○64-Bit Windows
 ・レジストリの位置
   [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32]
 ・登録内容
  C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\TextMgrP.dll

VSの再インストールでも対処できるのですが、さすがに再インストールは大変ですので、まずはこちらの手順でどうぞ。

コードカバレッジ分析の色分けがちゃんと表示されないとき

VS2012 PremiumかUltimateでのうれしい機能に、「コードカバレッジ分析」があります。
単体テスト機能とも連動させることも可能です。
実行された/実行されなかったブロックが色分けで表示できるため、とっても見やすいです。

実際に試してみようと思い、とある環境からProfessional版をアンインストール後、Ultimate評価版をインストールしました。
確認のためのテストも作成し、実行してみたところ...

001

青枠内が実行されたブロックなのですが、色が変わってません。
(ちゃんと、「コードカバレッジ分析の色分けを表示」ボタンは押してます)
よく見ると、文字が青に変わっているのですが、MSDNとかで見かけるような本来の色ではありません。
MSDNを検索すると、「色変えれるよ」と載っているので、オプション設定で変えてみようとしてみます。

002

...「カバレッジ~」がありません><
半日ほど悩みましたが、結論は「Professionalがインストールされた環境にUltimateをインストールする」と発生するようです。
(最初からUltimateをインストールした環境では発生しませんでした)

あまりこういうインストールを行うことはないと思いますが、なってしまった場合には
1.英語版のLanguage Packをインストール
2.オプション設定で英語環境に切り替え

003

3.英語環境でVSを再起動し、一度コードカバレッジ分析を実行/表示



004_2

4.オプション設定で、日本語環境に戻してVS再起動

これで、ちゃんと(日本語環境で)色分け表示できるようになります。
(OSから入れ直すという手もありますが...)

ちなみに、カバレッジ関連の表示色の変更はこんな項目でした。

005

TFSのビルドでコードカバレッジ分析を実行する設定/環境についてはまた次回に。
(元々はこれが確認したかったのでUltimate入れたんですが...^ ^;)

VS IDE起動時にTFSへの自動接続をやめたい

Visual Studioを起動後、チームエクスプローラーのタブを表示すると自動的にTFSに接続しようとします。
複数のVS IDEを起動したときに、同じチームプロジェクトに接続する場合はいいのですが、別々のチームプロジェクトに接続するとか、Team Foundation Serviceに接続していた後でまた起動すると認証画面が表示されて面倒とかいった場合には、レジストリを変更することで自動接続をしないようにできます。

レジストリエディタで
「HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\TeamFoundation」
を開き、DWORDで"AutoLoadServer"を作成し、値は0とします。

これを設定するだけで、その次から起動するVS IDEからは自動接続しません。
ちなみに、VS2010とかVS2008とかの場合はバージョン番号を変えるだけです。
・11.0→VS2012
・10.0→VS2010
・ 9.0→VS2008

※複数の作業をパラレルに行うと作業効率が悪くなるので、極力避けましょう( ̄▽ ̄)

NUnitとNUnit Test Adapterのインストール

2012/06/01にいろんなものが発表されました。
・Windows 8 Release Preview
・Windows Server 2012 Release Candidate
・Visual Studio 2012 Release Candidate
・Team Foundation Server 2012 Release Candidate

早速インストールして使ってみてますが、ちょっと引っかかったことがあったので備忘録。

前に、VS11 Beta(名前がw)ではNUnitなどのMSTest以外のテストフレームワークが使えるようになったと書きました。
VS IDEの「テストエクスプローラー」から使うためには「Test Adapter」なるものを入れる必要があるのですが、IDEからインストールする場合、「NUnit」と「NUnit Test Adapter」ではインストール方法が異なります。

「NUnit」ですが、まずは「プロジェクト」-「NuGetパッケージの管理」を選択します。
Nunitinst01

その後、「オンライン」を選択し、右上の検索キーワードとして「nunit」を入力すると、一覧に「NUnit」が表示されます。
Nunitinst02
「インストール」を押下すると、NUnitがインストールされます。

次に「NUnit TestAdapter」ですが、「ツール」-「拡張機能の更新」を選択します。
Nunitinst03

その後、「オンライン」を選択し、右上の検索キーワードとして「nunit」を入力すると、一覧に「NUnit Test Adapter」が表示されます。

Nunitinst04
「ダウンロード」を押下すると、NUnit Test Adapterがインストールされます。

最初、半日ぐらい使えないと悩み、Twitter上でつぶやくところまで至りました。w
またもや@biacさんからのフォローで気が付きました。ありがとうございます<(_ _)>