如何设置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
相关产品推荐
相关产品推荐

