【发布时间】:2014-07-30 11:07:02
【问题描述】:
我正在尝试制作一个插件来捕获Visual Studio的edit.copy命令,如果没有选择则跳过它。
我已经安装了 Visual Studio SDK 并创建了一个 VSPackage 项目。我的初始化方法目前如下所示:
private EnvDTE.DTE m_objDTE = null;
protected override void Initialize()
{
Debug.WriteLine (string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString()));
base.Initialize();
m_objDTE = (EnvDTE.DTE)GetService(typeof(EnvDTE.DTE));
m_objDTE.Events.CommandEvents.BeforeExecute += (
string Guid,
int ID,
Object CustomIn,
Object CustomOut,
ref bool CancelDefault
) =>
{
EnvDTE.Command objCommand;
string commandName = "";
objCommand = m_objDTE.Commands.Item(Guid, ID);
if (objCommand != null)
{
commandName = objCommand.Name;
if (string.IsNullOrEmpty(commandName))
{
commandName = "<unnamed>";
}
}
Debug.WriteLine("Before executing command with Guid=" + Guid + " and ID=" + ID + " named " + commandName);
};
}
打开解决方案时会调用Initialize() 方法,我已将[ProvideAutoLoad(UIContextGuids80.SolutionExists)] 标签添加到我的包中。但是当我做事情时没有调用 BeforeExecute,比如按下 ctrl + c 这是一个命令,使用这段代码我希望所有命令都打印在调试控制台中,为什么没有发生这种情况?
【问题讨论】:
标签: c# visual-studio plugins visual-studio-2013 vspackage