VS2010 のソリューション エクスプローラーでファイルの状態をグリフとして表示する VSIX パッケージを作成しました。GetSccGlyph メソッドを含む基本的な SccProvider (IVsSccProvider、IVsSccManager2、IVsSccGlyphs などから継承) を実装しました。そのため、ソリューションが vsix パッケージを開くと、ソリューション全体の初期グリフが正常に読み込まれます。しかし、特定の (または全体の) ソリューション アイテムのグリフを更新する方法が見つかりません。適切な方法は次のようになります
var rgsiGlyphs = new VsStateIcon[1];
var rgdwSccStatus = new uint[1];
GetSccGlyph(1, new[] { itemFilePath }, rgsiGlyphs, rgdwSccStatus);
hierarchy.SetProperty(itemId, (int)__VSHPROPID.VSHPROPID_StateIconIndex, rgsiGlyphs[0]);
itemId - 特定のプロジェクト アイテム ID です。残念ながら、このアプローチはソリューションに対してのみ機能しますが、プロジェクト/クラス アイテム タイプのグリフは更新されません。すべてのプロジェクトの子アイテムのグリフを強制的に更新する別の方法があることを読みました
sccProject2.SccGlyphChanged(0, null, null, null);
しかし、うまくいきません。また、グリフのステータスを Scc にキャッシュすることができ、この更新を何らかの方法で強制する必要があることも読みましたが、正しい参照が見つかりませんでした。
VisualSvn やその他の同様のプラグインは何らかの形でグリフを動的に更新するため、それが可能であることはわかっています。誰かがこの問題を解決しましたか?