问题描述
你好
我正在为Visual Studio 2010/2012开发源代码控制插件.我的工作机上安装了Windows 7.我已经调试了我的开发,将vsix内容部署到Visual Studio 2012的实验实例中.
I'm developing source control plugin for Visual Studio 2010/2012. My work machine has Windows 7 installed on it. I've debug my development my deploying vsix content into experimental intance of Visual Studio 2012.
激活/停用插件后,它将为解决方案项设置自定义标志符号,以进行更改跟踪指示.为此,我列举了通过以下代码检索的IVsHierarchy:
When plugin is activated/deactivated, it set custom glyphs to solution items for changes tracking indication. To achieve that I enumerate IVsHierarchy which is retrieved by such code:
(IVsSolution)Package.GetGlobalService(typeof(SVsSolution))
每个节点字形刷新如下:
Each node glyph is refreshed as follows:
uint itemId = ...
uint fileStatus = ...
VsStateIcon glyph = ...
var project = hierarchy as IVsSccProject2;
if (project != null)
project.SccGlyphChanged(1, new[] { itemId }, new[] { glyph }, new [] { fileStatus });
else
hierarchy.SetProperty(itemId, (int)__VSHPROPID.VSHPROPID_StateIconIndex, glyph);
一切都很好,但是最近我遇到了一个问题,可以重现如下:
Everything is fine, but recently I've encountered a problem, that can be reproduced as following:
- 开始调试插件(确保不会显示解决方案资源管理器"窗口).
- 转到工具->".选项"
- 选择源代码控制"
- 选中我的插件源控件,然后取消选择它.
- 通过确定"按钮关闭选项对话框.
- 转到"查看->解决方案资源管理器"
- 解决方案资源管理器"窗口打开,并且没有自定义字形(这是预期的).
- 转到工具->选项"在主菜单中选择源代码控制"再次单击节点.
- 然后选择我的插件.此时,我的插件收到了Microsoft.VisualStudio.Shell.Interop.IVsSccProvider.SetActive()调用,并按前面所述分配了自定义字形.
- 关闭选项对话框.
- Start debugging of plugin (make sure that no Solution Explorer window will be displayed).
- Go to "Tools -> Options" main menu.
- Select "Source control" node in the tree to the left.
- My plugin source control is selected, then I deselect it.
- Close options dialog by OK button.
- Go to "View -> Solution Explorer" main menu.
- Solution explorer window opens and there is no custom glyphs (this is expected).
- Go to "Tools -> Options" main menu and select "Source control" node again.
- Then I select my plugin. At this time Microsoft.VisualStudio.Shell.Interop.IVsSccProvider.SetActive() call is received by my plugin and custom glyphs are assigned as was described before.
- Close options dialog.
现在,我希望我的自定义字形将显示在解决方案资源管理器中,但事实并非如此.如果我对SE感到有些困惑,请展开/折叠节点并前后滚动,字形就会开始出现在项目上.
Now I expect my custom glyphs to be displayed in Solution Explorer, but they aren't. If I mess a little with SE, expand/collapse nodes and scroll it down and forth, glyphs start appear on items.
但是,如果层次结构枚举延迟到关闭选项对话框的那一刻,字形就会按预期显示.但是,我无法以任何方式知道何时关闭选项对话框.
However if hierarchy enumeration is delayed to the moment when options dialog is closed, glyphs appear as expected. But I can't figure any way to know when options dialog is closed.
也许有人可以帮助我解决这个问题?
Maybe someone can help me with this issue?
推荐答案
这篇关于加载项:在打开选项对话框时,Solution Explorer不会重绘SC字形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!