【发布时间】:2012-06-26 20:01:30
【问题描述】:
我创建了 VSIX 包,它在 VS2010 的解决方案资源管理器中将文件状态显示为字形。我实现了基本的 SccProvider(继承自 IVsSccProvider、IVsSccManager2、IVsSccGlyphs 等),包括 GetSccGlyph 方法。因此,当解决方案打开 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 和其他类似的插件会以某种方式动态更新字形。有没有人解决过这个问题?
【问题讨论】:
标签: c# visual-studio vsix vs-extensibility solution-explorer