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

如何设置Ctrl+N快捷键实现不同项目下新建C#类和TypeScript文件

实现方案

结论

该需求可以实现,不需要依赖默认的多步新建项向导,按下Ctrl+N就能直接进入对应文件的文件名输入状态,下面是两种可落地的方案:

方案一:使用VS内置快捷键上下文绑定(无需额外扩展)

该方案利用VS快捷键的上下文匹配能力,区分不同项目类型下的触发逻辑:

  • 打开VS顶部菜单「工具」→「选项」→「环境」→「键盘」
  • 先搜索Project.AddClass命令,该命令是C#项目专属的快速新建类命令,触发后直接进入文件名编辑状态
  • 在「将快捷键用于」下拉菜单选择「解决方案资源管理器」,按下Ctrl+N后点击「分配」
  • 再搜索Web.AddTypeScriptFile命令,这是njsproj项目对应的快速新建TypeScript文件命令,同样绑定Ctrl+N到「解决方案资源管理器」上下文,保存即可
  • VS会自动根据当前选中项所属的项目类型,优先匹配对应项目的专属命令,不会出现冲突

方案二:自定义脚本绑定(匹配精度更高)

如果内置绑定出现适配问题,可以用Visual Commander(VS官方扩展商店可直接安装,体积小于10MB)编写自定义触发逻辑,完全按需匹配:

  • 新建一个Visual Commander命令,粘贴以下C#脚本:
using EnvDTE;
using EnvDTE80;

public class C : VisualCommanderExt.ICommand
{
    public void Run(IServiceProvider serviceProvider)
    {
        DTE2 dte = (DTE2)serviceProvider.GetService(typeof(DTE));
        ProjectItem selectedItem = (ProjectItem)dte.SelectedItems.Item(1).ProjectItem;
        Project proj = selectedItem != null ? selectedItem.ContainingProject : dte.Solution.Projects.Item(1);
        
        if (proj.FileName.EndsWith(".csproj"))
        {
            dte.ExecuteCommand("Project.AddClass");
        }
        else if (proj.FileName.EndsWith(".njsproj"))
        {
            dte.ExecuteCommand("Project.AddNewItem", "TypeScript File");
        }
    }
}
  • 把该命令绑定到Ctrl+N快捷键即可,逻辑完全自定义,不会出现匹配错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:07