【51CTO.com快译】为了深入了解.NET工具的不同特点,我们采访了Microsoft、EPAM、AltexSoft、SocketLabs和其他技术公司的工程师们。让他们从软件开发、代码质量分析、调试、以及其他任务等方面,分享了他们认为***的23种.NET工具。
我们将这些工具分为了七组,它们分别是:IDE和代码编辑器、调试器和反编译器、包管理器、格式化工具、性能分析、管理工具、以及测试工具。
.NET的IDE和代码编辑器
Visual Studio IDE:Microsoft开发的***IDE
Visual Studio是由Microsoft所提供的全功能开发平台,它涵括了程序代码的创建、修改和转换等全部过程。Microsoft通过IDE的多步支付计划(https://visualstudio.microsoft.com/vs/pricing/),能让更多的个人和企业使用到其丰富的工具集。它拥有一个Visual Studio社区,免费向个人开发者、以及仅有五个用户的非企业组织进行开放。
- 代码自动完成。该平台的IntelliSense代码编辑器(https://code.visualstudio.com/docs/editor/intellisense)支持基于语言语义和源代码分析的自动完成,并提供针对代码的提示和API代码的编辑。
- 存储库集成。开发人员使用Team Explorer(https://docs.microsoft.com/en-us/visualstudio/ide/connect-team-project?view=vs-2019)将Visual Studio连接到项目或存储库中。该工具过去主要与Microsoft TFS合作,如今则提供了一整套丰富的选项来向GitHub、GitLab和Bitbucket,提供Git存储库方面的合作。另外,Team Explorer 也提供了简单、精细的图形化界面,方便用户在不离开Visual Studio窗口的情况下,开展大量日常任务。
- 数据库开发。SQL Server Explorer(https://visualstudio.microsoft.com/vs/features/ssdt/)是一款VS工具,可直接用于构建Visual Studio和管理SQL数据库。因此,它显著地简化了数据库的各项操作。
- 生产环境故障排除。如果您怀疑出现了内存泄漏或死锁问题,那么通过捕获内存dump,并在Visual Studio中进行分析,就能够找到明确的答案。凭借着VS优势,您只需右击任务管理器,便可方便地使用本地计算机上的工具选项进行分析。而此类分析对于生产环境中的主机几乎不产生任何影响。
- 调试。使用Visual Studio IDE,开发人员还可以访问到大量的调试工具。
总之,如果您是***上手.NET编程的话,Visual Studio是一个绝好的开始。
Visual Studio代码:适用于代码编辑的轻量级版本
如果您觉得Visual Studio过于庞复,而只需要代码编辑器的话,则可以选择轻量级的Visual Studio Code(https://code.visualstudio.com/)。它是免费的,可用于许多工程场景的跨平台开发之中(如:Linux、Mac OS和Windows)。与Visual Studio类似,Code也能够完全支持IntelliSense的编码、调试、Git集成、以及扩展。与其他诸如JetBrains的Rider的代码编辑器相比,Visual Studio Code具有更好的可扩展性。它不仅可被用于.NET和C#,而且支持几乎任何一种编程语言。
JetBrains的Rider:一种全新的IDE
Rider是一款相对较新的.NET IDE,虽然只提供30天的试用,但是Rider能够支持Windows、Mac OS X和Linux上的.NET和.NET的核心应用。Rider具有运行速度较快,版本控制集成、以及广泛的反编译功能。Rider能够提供各种项目所需的控制台、Web和库。同时,它还包含有导航、搜索、重构、代码检查、快速修复、以及与版本控制系统无缝集成等功能。
与Visual Studio相比,JetBrains' Rider不但体验更好、性能更佳,而且其许可证的***年只要139美元,而Visual Studio专业版每年的费用高达1,199美元,企业版更是每年5,999美元。
Visual Studio扩展
JetBrains的ReSharper:VS的必备附加组件
JetBrains的另一款产品是ReSharper(https://www.jetbrains.com/resharper/?gclid=CjwKCAjw7_rlBRBaEiwAc23rhvE2g2LuCdK1ErMYNIz1ZzMMwUsWeuYX8mQRUt315EIA5Y1ZTx2r4BoCe6MQAvD_BwE&gclsrc=aw.ds)。作为一种流行的开发扩展工具,它改进了重构、代码片段、模板引擎,并增加了额外的静态代码分析功能。另外,ReSharper可以检测各种错误、提供大量的自动修复、能够简化代码的修改,以及允许开发人员快速地浏览其代码。
通过分析代码的质量,ReSharper能够优化代码的性能、避免内存的泄漏、以及创建构造函数、条件块和新的类。
NDepend:彻底进行代码分析的***工具
作为Visual Studio的插件,NDepend(https://www.ndepend.com/)是另一种可以根据用户的特殊需求进行定制化代码分析的工具。它可以快速、准确地检查源代码、及其依赖项,并提供详细、精确的各类指标。
Visual Studio Cloud Explorer:能与Azure云交互的解决方案
Cloud Explorer(https://marketplace.visualstudio.com/items?itemName=ms-azuretools.CloudExplorerForVS)工具允许用户在Visual Studio里直接管理Azure云资源、检查其属性、以及执行开发人员的各项诊断操作。由于不需要访问Azure门户,用户完全可以在VS中看到所有的Azure云内容,因此大幅节省了时间。
包管理器
包管理器能够通过支持托管用户的各种包、模块、以及库,来实现整个团队的工作流,并在构建与发布上持续交付。因此,它是.NET生态系统的重要补充。
NuGet:用于创建、共享和使用.NET库的通用工具
NuGet(https://www.nuget.org/)包管理器、及其Gallery是一个能够与.NET一起使用的集中式包存储库。它拥有大约15万个独特的软件包,和超过150万个包的不同版本。由于NuGet将.NET框架、库和模块引入到了.NET项目中,因此您***将它与其他资源管理器工具一起使用。
NuGet Package Explorer:一种交互、浏览和发布NuGet包的新方法
该开源产品具有友好的用户界面,可用于创建、浏览、调试和分析NuGet包。同时,它拥有简洁且图形化的用户界面。
.NET库也适用于npm
近年来,为了方便给Web开发提供源代码,Microsoft Visual Studio还增加了对于npm的支持。同时各种现代化的Web实践工具,以及开源的代码,也都能够使用.NET Core在后端进行编写了。
调试和反编译工具
通过调试工具,开发人员能够查看代码,并在任何开发阶段识别问题的根本原因。为了进行排障,我们可以使用反编译工具,将已编译的第三方代码转换回C#程序。
WinDbg:适用于Windows的独立调试工具
由Microsoft分发的WinDBg(https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools),是专为调试Windows应用程序而构建的。不同于使用调试工具内置的IDE这一传统方式,WinDbg可以在Visual Studio之外被运行。因此它更适合那些喜欢开源和免费软件的开发人员。
该工具用于调试内核模式和用户模式代码,检查故障转储和CPU寄存器。
JetBrains的dotPeek:一款不错的免费反编译工具
dotPeek(https://www.jetbrains.com/decompiler/)是一款可靠的基于ReSharper的反编译器,它适用于调试第三方程序的代码集合。使用dotPeek,您可以在不直接访问源代码的前提下,检查第三方组件中出现的问题。可见,它是一款简单、高效且全面的工具。如果您需要根据某个应用程序特定版本的DLL文件,来恢复已有的代码,那么dotPeek就能够在最短的时间内恢复那些丢失的代码。
- LSpy:可以替代.NET Reflector
- LSpy(https://github.com/icsharpcode/ILSpy/releases)是一个.NET assembly浏览器与反编译器。它一款免费的工具,完全可以替代.NET Reflector。该工具可以将任意.NET DLL反编译回Visual Basic或C#。因此,如果您丢失了源代码,ILSpy可以让您了解各种框架DLL背后的代码工作机制。同时,您也可以通过各种插件(https://github.com/icsharpcode/ILSpy/wiki/Plugins)来增强其基本包。
格式化工具
格式化工具可以帮助用户通过遵循某些一致性的代码样式,来检测并修复各种样式上的漏洞。同时,您也可以在IDE中进行设置,以便它能够在您输入的时候,实时进行运作。
SonarQube:一种维护代码质量的简便工具
SonarQube(https://www.sonarqube.org/)是一种开源的静态代码审查工具,它是由一组静态分析工具、数据集市、以及门户所组成,您既可以在其中管理技术债(technical debt),又能够分析.NET的托管代码。除了具有强大的社区支持,SonarQube还能够以添加插件的方式,提供各种额外的分析工具。SonarQube不但易于设置与配置,而且具有丰富的内置规则集,包括:编码标准、***实践、以及各种安全规则。
在实际应用中,SonarQube允许用户标准化其代码、并可视化已审查的代码覆盖率,进而提高了代码的可维护性、整体质量、以及审查的工作量。
StyleCop:.NET代码样式的可配置工具
StyleCop是一个本地代码分析器,它能够对源代码强制执行样式、以及一致性规则的检查。它允许开发人员选择如下三种形式的自定义规则:
- StyleCop Visual Studio扩展(https://visualstudiogallery.msdn.microsoft.com/5441d959-387f-4cb2-a8c0-9998dd1fa49f):可以在Visual Studio中的任何文件、项目或解决方案上运行,无需修改任何源代码。
- StyleCop.MSBuild(https://www.nuget.org/packages/StyleCop.MSBuild):运行在.NET 4.0以上的项目中。
- StyleCop.ReSharper(https://github.com/StyleCop/StyleCop.ReSharper):是一个插件,可用于配置ReSharper,使用与StyleCop规则匹配的默认设置。
性能分析与管理
我们在开发过程中,如果遇到了性能问题,往往需要收集与问题相关的各种详细信息。使用如下工具,.NET开发人员可以跟踪计算机的性能,找出问题背后的原因。
PerfCollect和PerfView:标准的.NET性能优化工具箱
PerfCollect(https://raw.githubusercontent.com/dotnet/corefx-tools/master/src/performance/perfcollect/perfcollect)是一个自动化数据收集的Bash脚本,而PerfView(https://github.com/Microsoft/perfview#perfview-overview)则是一个基于Windows的性能工具。您可以使用PerfCollect来捕获perf的跟踪文件,然后使用PerfView来进行分析。
除了可以调整CPU和内存的分配,PerfView还具有如下优点:
- 无需安装,只需将应用程序复制到您希望从中捕获性能数据的Windows主机上,然后配置需要分析的内容,便可开始捕获。
- 无需为了进行分析而修改应用程序,或降低性能。
- 能以Chrome性能工具相似的方式呈现各种结果。
JetBrains的dotTrace和dotMemory:性能和内存分析
dotTrace(https://www.jetbrains.com/profiler/)和dotMemory(https://www.jetbrains.com/dotmemory/?gclid=Cj0KCQjwkoDmBRCcARIsAG3xzl8Tqjd2pnIRvxGDqXSTcZX33zS9MNEL7OVFXHjLJMyf_UgCRkXco8oaAsZZEALw_wcB&gclsrc=aw.ds)可跟踪与分析.NET应用程序的性能、以及内存问题。它们能够处理大量的数据,并以全面的方式呈现给用户。
dotTrace的功能包括:性能瓶颈检测、调用堆栈分析、性能时间线报告、以及许多其他类型的分析操作。而dotMemory的功能则包括:远程分析、自动检查内存问题、内存流量分析、以及内存快照比较等。
BenchmarkDotNet:用于基准测试的强大.NET库
作为一个开源项目,BenchmarkDotNet(https://benchmarkdotnet.org/)消除了用户对于性能的猜测,并能够通过自动隔离每一个基准,来运行并测试多次迭代。它是一个小型编程工具,通过各种示例,用户能够测量和比较自己的算法性能,进而得到可靠结果,并提高生产率。
测试工具
Visual Studio MSTest:一种流行的单元测试框架
MSTest框架在Visual Studio产品系列中占据着独特的位置。由于.NET模式的单元测试会为每个生产项目准备一个单独的测试项目,因此您可以直接在MSTest中通过File->New Project来生成。而在测试时,您可以在IDE中观察到测试结果。
NUnit:优秀的测试工具
NUnit(https://nunit.org/)非常适合在非Microsoft平台、以及自定义的测试中互动式运行。它不但能够实现快速的测试和对测试进行标注,而且可以针对给定测试的多个输入进行简单的规范化。不过,NUnit不能像MSTest那样,可以被无缝地集成到Visual Studio中。
同时,由于NUnit支持广泛的自定义属性,因此用户可以根据不同的参数分类,轻松地开展测试。此外,凭借着控制台运行程序,NUnit可以被轻松地将测试集成到CI流程中。
xUnit.NET:一种创新的.NET单元测试工具
xUnit为测试语言创建了一套直观的术语。它将测试划分为“事实”与“理论”,进而分别区分“始终为真”和“对于正确数据为真”等情况。作为一种扩展,xUnit可被用来开发.NET Core。
JetBrains dotCover:针对持续测试的代码覆盖工具
dotCover(https://www.jetbrains.com/dotcover/)是一个代码覆盖工具,它可以分析用户的代码、产生单元测试的覆盖范围报告。作为ReSharper软件包的一部分,dotCover既可以独立于ReSharper工作,也可以与ReSharper协同工作。
用户可以将dotCover作为持续集成流程中的一部分,与JetBrains的TeamCity CI服务器一起使用,以查看单元测试的代码涵盖率。
其他实用工具
LINQPad:连接数据库的多功能工具
LINQPad(https://www.linqpad.net/)是一个轻量级的.NET应用程序,可用于在没有IDE的情况下,交互式地编写C#代码。该工具不仅可以实现一系列的查询操作,还具有集成的调试器和自动完成等功能(支持IntelliSense)。
通过其数据库查询的能力,LINQPad能够将各种执行转换为纯SQL,以便用户修改数据、并转换数据库的架构。
另外,用户还可以使用LINQPad来开发自定义的计费平台,以实现快速原型设计、算法测试和LINQ查询验证等功能。
dotnet-script:简单的实验脚本
Dotnet-script(https://github.com/filipw/dotnet-script)是一个带有IntelliSense的跨平台.NET Core工具。它可以直接在Visual Studio Code中调试各种脚本。由于支持NuGet包,dotnet-script代码可以实现相互关联,并存放在同一个文件中。
如何选择自己的.NET工具集?
那么我们该如何在.NET项目的各种可用工具集中进行选择呢?下面是一些经验与建议:
- 根据项目目标与简单化原则,我们不应在选择工具上花费太多的时间,而应注意工具本身的易用性。
- 根据日常工作中的实际需求,在开发过程中避免重复性的工作。
- 能轻松地部署到生产环境中,且带来的影响最小。
- 在业界和社区里有良好的声誉。
- 是否提供免费试用或完全免费。
- 学习曲线是否陡峭复杂。
原文标题:Top 23 Tools for .NET Development: The Experts' Choices,作者:Kseniia Bezugla
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】