当前位置: 首页 > news >正文

通过设置启用 Visual Studio 默认关闭的大量强大的功能提升开发效率

使用 Visual Studio 开发 C#/.NET 应用程序,以前有 ReSharper 来不足其各项功能短板,后来不断将 ReSharper 的功能一点点搬过来稍微好了一些。不过直到 Visual Studio 2019,才开始渐渐可以和 ReSharper 拼一下了。

如果你使用 Visual Studio 2019,那么像本文这样配置一下,可以大大提升你的开发效率。


本文内容

    • 工具选项
    • 文本编辑器
    • C#
    • C# 高级
    • 代码样式
    • 人工智能 IntelliCode
    • 快捷键
    • 自动完成

工具选项

打开菜单 “工具” -> “选项”,然后你就打开了 Visual Studio 的选项窗口。接下来本文的所有内容都会在这里进行。

打开选项窗口

文本编辑器

在 “文本编辑器” -> “常规” 分类中,我们关心这些设置:

  • 使鼠标单击可执行转到定义 这样按住 Ctrl 键点击标识符的时候可以转到定义(开启此选项之后,后面有其他选项可以转到反编译后的源码)

文本编辑器 -> 常规

当然也有其他可以打开玩的:

  • 查看空白 专治强迫症,可以把空白字符都显示出来,这样你可以轻易看到对齐问题以及多于的空格了

C#

在 “文本编辑器” -> “C#” -> “IntelliSense” 分类中,我们关心这些设置:

  • 键入字符后显示完成列表 删除字符后显示完成列表 突出显示完成列表项的匹配部分 显示完成项筛选器 打开这些选项可以让智能感知列表更容易显示出来,而我们也知道智能感知列表的强大
  • 推荐 显示 unimported 命名空间中的项(实验) 这一项默认不会勾选,但强烈建议勾选上;它可以帮助我们直接输入没有 using 的命名空间中的类型,这可以避免记住大量记不住的类名

IntelliSense

C# 高级

在 “文本编辑器” -> “C#” -> “高级” 分类中,我们关心大量设置:

  • 支持导航到反编译源(实验) 前面我们说可以 Ctrl + 鼠标导航到定义,如果打开了这个就可以看反编译后的源码了
  • 启用可为 null 的引用分析 IDE 功能 这个功能可能还没有完成,暂时还是无法开启的

高级

当然也有其他可以打开玩的:

  • 启用完成解决方案分析 这是基于 Roslyn 的分析,Visual Studio 的大量重构功能都依赖于它;默认关闭也可以用,只是仅分析当前正在编辑的文件;如果打开则分析整个解决方案,你会在错误列表中看到大量的编译警告

代码样式

在 “文本编辑器” -> “C#” -> “代码样式” 分类,如果你关心代码的书写风格,那么这个分类底下的每一个子类别都可以考虑一个个检查一下。

代码样式

人工智能 IntelliCode

Visual Studio 2019 默认安装了 IntelliCode 可以充分利用微软使用 GitHub 上开源项目训练出来的模型来帮助编写代码。这些强烈建议开启。

  • C# 基础模型 微软利用 GitHub 开源项目训练的基础模型
  • XAML 基础模型 微软利用 GitHub 开源项目训练的基础模型
  • C# 参数完成
  • C# 自定义模型 如果针对单个项目训练出来了模型,那么可以使用专门针对此项目训练的模型
  • EditorConfig 推理 可以根据项目推断生成 EditorConfig 文件 可以参见在 Visual Studio 中使用 EditorConfig 统一代码风格
  • 自定义模型训练提示 如果开启,那么每个项目的规模如果达到一定程度就会提示训练一个自定义模型出来

IntelliCode

IntelliCode English

训练模型会上传一部分数据到 IntelliCode 服务器,你可以去 %TEMP%\Visual Studio IntelliCode 目录来查看到底上传了哪些数据。

快捷键

当然,设置好快捷键也是高效编码的重要一步,可以参考:

  • 如何快速自定义 Visual Studio 中部分功能的快捷键
  • 提高使用 Visual Studio 开发效率的键盘快捷键

自动完成

在你点击 “确定” 关闭了以上窗口之后,我们还需要设置一项。

确保下图中的这个按钮处于 “非选中” 状态:

建议完成模式

这样,当出现智能感知列表的时候,我们直接就可以按下回车键输入这个选项了;否则你还需要按上下选中再回车。

建议完成和标准完成


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • 使用 SetWindowCompositionAttribute 来控制程序的窗口边框和背景(可以做 Acrylic 亚克力效果、模糊效果、主题色效果等)
  • input 不能为空 js_我用JS刷LeetCode | Day 9 | Implement strStr()
  • 宝塔同时安装苹果cms海洋cms_maccms安装了后接下来做什么?
  • hive 修改表的存储格式_Hive存储格式
  • mac redis 链接_2018 MAC下安装Redis和Redis可视化工具RDM并连接Redis
  • python的lib文件夹在哪_如何导入模块中的lib文件夹
  • heidisql连接不是本地_本地备份与云备份:选择您的备份计划
  • ibaties 更新 数据类型不一致_关于Python 3.9,那些你不知道的事
  • join为什么每个字符都分割了 js_【项目总结】之——JS分割字符串
  • rto净化效率计算公式_吕梁油墨厂RTO焚烧炉设计计算
  • 修改段落内容_为什么论文修改后重复率还变高?
  • windbg找不到pdb文件_使用Windbg时关于符号文件路径设置问题
  • layui open传参_layui 打开新页面,并传入参数
  • cnc加工中心保养表_CNC加工中心有哪些日常保养方法?
  • ffplay拉流时间长卡住_杭州女子崩溃:我吞了个勺子进去,14厘米长!事情要从一条鱼说起…...
  • @angular/forms 源码解析之双向绑定
  • 【Amaple教程】5. 插件
  • CSS相对定位
  • DataBase in Android
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • export和import的用法总结
  • Flex布局到底解决了什么问题
  • Hibernate最全面试题
  • java小心机(3)| 浅析finalize()
  • vue:响应原理
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 入门级的git使用指北
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 事件委托的小应用
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​水经微图Web1.5.0版即将上线
  • #前后端分离# 头条发布系统
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (三)docker:Dockerfile构建容器运行jar包
  • (转)重识new
  • ****Linux下Mysql的安装和配置
  • ***原理与防范
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .apk文件,IIS不支持下载解决
  • .NET Core 项目指定SDK版本
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET中两种OCR方式对比
  • @PreAuthorize注解
  • @RequestMapping用法详解