VS2013 Pro SP 4
赢得8.1 x64
我在“工具”菜单中添加了两个OleMenuCommands。我给了他们一个BeforeQueryStatus事件的处理程序。
我已经向OnBeforeQueryStatus()添加了调试代码,该代码显示正在调用处理程序,并且正在选择正确的文本。但是,“工具”菜单上的两个菜单项未正确更新。这是OnBeforeQueryStatus():
private void OnBeforeQueryStatus(object sender, EventArgs e)
{
DbgMessage("OnBeforeQueryStatus");
var myCommand = sender as OleMenuCommand;
if (null != myCommand)
{
if (myCommand.CommandID.ID == (int)PkgCmdIdList.CmdIdCBAutoSave)
{
myCommand.Text = _autosaveEnabled ? "Disable Document AutoSave" : "Enable Document AutoSave";
DbgMessage(myCommand.Text);
}
if (myCommand.CommandID.ID == (int)PkgCmdIdList.CmdIdCBAutoSaveProject)
{
myCommand.Text = _autosaveProjectEnabled ? "Disable AutoSaveProject" : "Enable AutoSaveProject";
myCommand.Enabled = _autosaveEnabled;
DbgMessage(myCommand.Text);
}
DbgMessage(string.Format("Id: {0} Text: {1}", myCommand.CommandID.ID, myCommand.Text));
}
}
在.vsct文件中,<Button>
元素有
<CommandFlag>TextChanges</CommandFlag>
如何诊断出现了什么问题?对于在Win7上运行的VS2012 / 2013中安装的软件包,这似乎不是问题。
另一个奇怪的观察:当我调试VSPackage时(通过使用/ RootSuffix Exp参数启动devenv.exe),菜单项会按预期更新。
答案 0 :(得分:0)
添加<CommandFlag>NoCache</CommandFlag>