You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS2019扩展中创建可停靠的自定义工具窗口

VS扩展可停靠工具窗口实现步骤

以下步骤基于你已完成的VSIX项目基础配置、菜单命令可正常触发的前提操作:

  • 步骤1:添加工具窗口项
    右键你的VSIX项目,选择「添加 -> 新建项」,在左侧分类中选择「扩展性」,找到「工具窗口」项,自定义名称后确认添加。模板会自动生成3个核心文件:
    • 工具窗口配置类(如MyToolWindow.cs):定义窗口的基础属性、停靠行为
    • 控件布局文件(如MyToolWindowControl.xaml):即你所说的空白画布,所有自定义控件都在此处添加
    • 配套命令类(如MyToolWindowCommand.cs):如果你已经有现成的命令入口,可直接删除该自动生成的命令类
  • 步骤2:验证工具窗口注册配置
    打开你项目中继承自AsyncPackage/Package的主类,确认类上方已自动添加[ProvideToolWindow(typeof(你的工具窗口配置类名))]特性,没有的话手动补加即可。
  • 步骤3:修改菜单命令的执行逻辑
    打开你现有的命令类,找到Execute方法,替换原有的弹窗代码为以下逻辑:
    using Microsoft.VisualStudio.Shell;
    using Microsoft.VisualStudio.Shell.Interop;
    
    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        // 此处替换为你自己的工具窗口配置类名
        var toolWindow = Package.FindToolWindow(typeof(MyToolWindow), 0, true);
        if (toolWindow == null || toolWindow.Frame == null)
        {
            throw new NotSupportedException("工具窗口创建失败");
        }
        var windowFrame = (IVsWindowFrame)toolWindow.Frame;
        ErrorHandler.ThrowOnFailure(windowFrame.Show());
    }
    
    注意:如果你的命令类中没有直接可用的Package实例,可通过Package.GetGlobalService(typeof(你的Package类))的方式获取
  • 步骤4:自定义工具窗口内容
    打开自动生成的xaml布局文件,即可像普通WPF项目一样添加按钮、文本框、表格等控件,编写对应的交互逻辑即可。示例代码参考:
    <UserControl x:Class="YourNamespace.MyToolWindowControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Grid Background="{DynamicResource VsBrush.Window}">
            <StackPanel Margin="16">
                <TextBox x:Name="InputBox" Margin="0 0 0 12" PlaceholderText="请输入内容"/>
                <Button Content="点击测试" Click="Button_Click"/>
            </StackPanel>
        </Grid>
    </UserControl>
    
  • 步骤5:调试验证
    按下F5启动VS实验实例,点击扩展菜单下的对应入口,即可弹出可停靠的工具窗口,支持拖放停靠到VS界面的任意位置,行为和Toolbox、Task List完全一致。

常见问题排查:如果窗口无法弹出,检查工具窗口配置类的Guid是否唯一,不要和项目内其他组件的Guid重复

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:30:05