调整环境以加速Visual Studio

每个开发人员的梦想都是在一个能够响应开发人员思想速度的命令,编译和调试环境中工作。

尽管市场上尚不存在此类计算机和开发工具,但仍有一些技巧可以提高Visual Studio的性能和响应能力, 减少构建所花费的时间 ,并提高整体生产率和效率。

SSD升级

首先,如果您仍在使用那些老式的旋转磁盘驱动器,请升级到SSD驱动器。 与旋转硬盘驱动器相比, 硬盘驱动器是整体系统性能的主要瓶颈 ,它硬件的其他任何升级都将有助于提高整体生产率。

配置Windows Defender

第二步是调整Windows Defender (在任务管理器中也称为Antimalware Service Executable),这将导致构建花费相当长的时间才能完成。

要在您的计算机上测试该问题,只需启动 任务管理器并在Visual Studio重建解决方案时观看它即可。

请注意, Windows Defender消耗的CPU时间Visual Studio差不多,这导致您的构建花费的时间超过绝对的时间。

通过Windows Defender设置关闭实时保护可以使您大致了解潜在的性能提升。 但是,将其关闭并不是一个永久性的解决方案,因为反恶意软件服务会在一段时间后自动打开以确保系统受到保护。

从Windows Defender中排除Visual Studio和其他工具

解决此问题的唯一方法是通过排除 Visual Studio(devenv.exe),MSBuild和其他进程 (dotnet.exe,node.exe等), 项目和 缓存文件夹 (npm / nuget / resharper)来配置 Windows Defender 等)。

下面列出了安装了Visual Studio 2017 ProfessionalReSharperNode.js的系统的排除项

排除程序

  //视觉工作室和工具 
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ devenv.exe
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe
C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe
C:\ Program Files \ dotnet \ dotnet.exe
  // Node.js 
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Web \ External \ node.exe
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ ServiceHub \ Hosts \ ServiceHub.Host.Node.x86 \ ServiceHub.Host.Node.x86.exe
  // Node.js(如果单独安装或升级) 
C:\ Program Files \ nodejs \ node.exe

排除的文件夹

  //项目文件夹(为项目分配了整个驱动器) 
D:\
  //视觉工作室和工具 
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0
C:\ Program Files(x86)\ Microsoft Visual Studio 14.0
C:\ Program Files(x86)\ Microsoft Visual Studio
C:\ Windows \ assembly
C:\ Windows \ Microsoft.NET
C:\ Program档案(x86)\ MSBuild
C:\ Program Files \ dotnet
C:\ Program Files(x86)\ Microsoft SDK
C:\ Program Files \ Microsoft SDK
C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ MSEnv
C:\ Program Files(x86)\ Microsoft Office
  //缓存文件夹 
C:\ ProgramData \ Microsoft \ VisualStudio \ Packages
C:\ Program Files(x86)\ Microsoft SDKs \ NuGetPackages
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ASP.NET临时文件
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASP.NET临时文件
C:\ Users \ {{USERNAME}} \ AppData \ Local \ Microsoft \ VisualStudio
C:\ Users \ {{USERNAME}} \ AppData \ Local \ Microsoft \ WebsiteCache
C:\ Users \ {{USERNAME}} \ AppData \ Local \ Jetbrains
C:\ Users \ {{USERNAME}} \ AppData \ Roaming \ Microsoft \ VisualStudio
C:\ Users \ {{USERNAME}} \ AppData \ Roaming \ JetBrains
C:\ Users \ {{USERNAME}} \ AppData \ Roaming \ npm
C:\ Users \ {{USERNAME}} \ AppData \ Roaming \ npm-cache

关闭索引

对于开发人员来说,通常的做法是保持一个扁平的文件夹结构,并在一个直观的位置将彼此相关的文件存储在彼此附近,因此他们倾向于知道所有文件的位置,并且很少执行文件搜索

索引服务是开发环境的另一个重要瓶颈 ,它在构建安装软件包 (即NuGet,npm,bower)期间 磁盘I / O提升到100% ,并且缩短了 SSD驱动器的寿命

该解决方案简单直接 :完全摆脱索引服务

请注意 ,即使 关闭 索引服务 ,仍可以在计算机上 搜索 文件 :它将只搜索没有索引的文件。

只需打开命令提示符,键入services.msc ,然后按Enter。 在服务列表中,向下滚动直到找到Windows Search服务。 您会注意到它可能具有“已启动”状态和“ 自动”启动类型。

转到Windows搜索服务的属性停止该服务并将启动类型设置为禁用 。 最后,重新启动系统。

Visual Studio设置

最后一步是配置 Visual Studio (在本文中,这些设置适用于Visual Studio 2017 Professional)并禁用环境上的资源杀死功能 。 以下是基于最佳实践建议设置列表,这些设置可以提高UI响应能力环境性能

环境->常规

  • 取消选中“ 根据客户的表现自动调整视觉体验
  • 取消选中“ 启用丰富的客户视觉体验
  • 选中“ 使用硬件图形加速(如果可用)

环境->自动恢复

  • 取消选中“ 每隔一次保存自动恢复信息

环境->文件

  • 选中“ 无法在代码页中保存数据时将文档另存为Unicode

环境->键盘

  • 将“ ForceGC ”设置为ctrl + num1
  • 将“ ReSharper_Toggle ”设置为ctrl + num0如果使用了ReSharper
  • 将“ ReSharper_EnableDaemon ”设置为ctrl + num8如果使用了ReSharper

环境->启动

  • 将“ 启动时 ”设置为“ 显示启动时的空白环境
  • 取消选中“ 每隔下载内容

环境->同步设置

  • 取消选中“ 登录到Visual Studio后跨设备同步设置

项目与解决方案

  • 取消选中“ 在解决方案资源管理器中跟踪活动项目
  • 选中“ 所有解决方案的轻量级解决方案负载

项目和解决方案->构建和运行

  • 选中“ 仅在运行时构建启动项目和依赖项

项目和解决方案-> Web软件包管理

  • 将“ 在项目打开时还原 ”设置为false对于Bower
  • 将“ 保存时还原 ”设置为false对于Bower
  • 将“ 项目打开时还原 ”设置为false对于NPM
  • 将“ 保存时还原 ”设置为false对于NPM

文字编辑器->常规

  • 取消选中“ 跟踪更改

文本编辑器->所有语言->常规

  • 取消选中“ 启用虚拟空间
  • 检查“ 行号
  • 取消选中“ 导航栏

文本编辑器->所有语言->滚动条

  • 取消选中“ 在垂直滚动条上显示注释

文本编辑器->所有语言-> CodeLens

  • 取消选中“ 启用CodeLens

文字编辑器->基本->高级

  • 取消选中“ 启用完整的解决方案分析

文字编辑器-> C#->高级

  • 取消选中“ 启用完整的解决方案分析

文本编辑器->基本,C#-> IntelliSense

  • 取消选中“删除字符后显示完成列表”
  • 将“ 代码段行为 ”设置为“ 从不包含代码段

文本编辑器-> CoffeeScript-> CoffeeLint

  • 将“ Enable CoffeeLint ”设置为false

文本编辑器-> CSS-> CssLint

  • 将“ Enable CSS Lint ”设置为false

文本编辑器-> CSS,HTML,JSON,LESS,SCSS->高级

  • 将“将错误显示为警告 ”设置 false

文本编辑器-> JavaScript / TypeScript-> EsLint

  • 将“ Enable ESLint ”设置为false

文本编辑器-> SQL Server工具,U-SQL-> Intellisense

  • 取消选中“ 启用Intellisense

文本编辑器-> [语言]->格式->常规

  • 取消选中所有内容( 如果ReSharper用于格式化帮助

调试

  • 取消选中“ 在模块负载上禁止JIT优化(仅托管)
  • 取消选中“ 启用编辑并继续

调试->及时

  • 取消选中“ 脚本

智能跟踪

  • 取消选中“ 启用IntelliTrace

Node.js工具

  • 将“ 检查调查/新闻 ”设置为“ 从不

Web表单设计器

  • 取消选中“ 启用Web窗体设计器

Windows窗体设计器

  • 将“ 自动填充工具箱 ”设置为false

XAML设计器

  • 取消选中“ 启用XAML设计器

进一步的方法

上面解释的提示和技巧绝对有助于获得显着的性能提升 。 但是,还有更多的事情要做,以帮助开发环境尽快进行构建。

  • 禁用诸如Microsoft Office 365 API工具Microsoft Visual Studio的TypeScript之类的扩展( 最好坚持使用npm,gulp / webpack
  • 安全模式下使用Visual Studio
  • 使用RAM磁盘存储源文件
  • 根据依赖关系树,将参考程序集的“ 复制本地 ”属性更改为“
  • 配置ReSharper以获得最佳性能(可能是另一篇文章的主题)

请随时在评论中添加您的想法,高度赞赏!

布拉克·塔西(Burak Tasci)(fulls1z3)
https://www.linkedin.com/in/buraktasci
http://stackoverflow.com/users/7047325/burak-tasci
https://github.com/fulls1z3