強(qiáng)力推薦!.NET開發(fā)的這23種優(yōu)秀工具
譯文【51CTO.com快譯】為了深入了解.NET工具的不同特點(diǎn),我們采訪了Microsoft、EPAM、AltexSoft、SocketLabs和其他技術(shù)公司的工程師們。讓他們從軟件開發(fā)、代碼質(zhì)量分析、調(diào)試、以及其他任務(wù)等方面,分享了他們認(rèn)為***的23種.NET工具。
我們將這些工具分為了七組,它們分別是:IDE和代碼編輯器、調(diào)試器和反編譯器、包管理器、格式化工具、性能分析、管理工具、以及測(cè)試工具。
.NET的IDE和代碼編輯器
Visual Studio IDE:Microsoft開發(fā)的***IDE
Visual Studio是由Microsoft所提供的全功能開發(fā)平臺(tái),它涵括了程序代碼的創(chuàng)建、修改和轉(zhuǎn)換等全部過(guò)程。Microsoft通過(guò)IDE的多步支付計(jì)劃(https://visualstudio.microsoft.com/vs/pricing/),能讓更多的個(gè)人和企業(yè)使用到其豐富的工具集。它擁有一個(gè)Visual Studio社區(qū),免費(fèi)向個(gè)人開發(fā)者、以及僅有五個(gè)用戶的非企業(yè)組織進(jìn)行開放。
- 代碼自動(dòng)完成。該平臺(tái)的IntelliSense代碼編輯器(https://code.visualstudio.com/docs/editor/intellisense)支持基于語(yǔ)言語(yǔ)義和源代碼分析的自動(dòng)完成,并提供針對(duì)代碼的提示和API代碼的編輯。
- 存儲(chǔ)庫(kù)集成。開發(fā)人員使用Team Explorer(https://docs.microsoft.com/en-us/visualstudio/ide/connect-team-project?view=vs-2019)將Visual Studio連接到項(xiàng)目或存儲(chǔ)庫(kù)中。該工具過(guò)去主要與Microsoft TFS合作,如今則提供了一整套豐富的選項(xiàng)來(lái)向GitHub、GitLab和Bitbucket,提供Git存儲(chǔ)庫(kù)方面的合作。另外,Team Explorer 也提供了簡(jiǎn)單、精細(xì)的圖形化界面,方便用戶在不離開Visual Studio窗口的情況下,開展大量日常任務(wù)。
- 數(shù)據(jù)庫(kù)開發(fā)。SQL Server Explorer(https://visualstudio.microsoft.com/vs/features/ssdt/)是一款VS工具,可直接用于構(gòu)建Visual Studio和管理SQL數(shù)據(jù)庫(kù)。因此,它顯著地簡(jiǎn)化了數(shù)據(jù)庫(kù)的各項(xiàng)操作。
- 生產(chǎn)環(huán)境故障排除。如果您懷疑出現(xiàn)了內(nèi)存泄漏或死鎖問(wèn)題,那么通過(guò)捕獲內(nèi)存dump,并在Visual Studio中進(jìn)行分析,就能夠找到明確的答案。憑借著VS優(yōu)勢(shì),您只需右擊任務(wù)管理器,便可方便地使用本地計(jì)算機(jī)上的工具選項(xiàng)進(jìn)行分析。而此類分析對(duì)于生產(chǎn)環(huán)境中的主機(jī)幾乎不產(chǎn)生任何影響。
- 調(diào)試。使用Visual Studio IDE,開發(fā)人員還可以訪問(wèn)到大量的調(diào)試工具。
總之,如果您是***上手.NET編程的話,Visual Studio是一個(gè)絕好的開始。
Visual Studio代碼:適用于代碼編輯的輕量級(jí)版本
如果您覺得Visual Studio過(guò)于龐復(fù),而只需要代碼編輯器的話,則可以選擇輕量級(jí)的Visual Studio Code(https://code.visualstudio.com/)。它是免費(fèi)的,可用于許多工程場(chǎng)景的跨平臺(tái)開發(fā)之中(如:Linux、Mac OS和Windows)。與Visual Studio類似,Code也能夠完全支持IntelliSense的編碼、調(diào)試、Git集成、以及擴(kuò)展。與其他諸如JetBrains的Rider的代碼編輯器相比,Visual Studio Code具有更好的可擴(kuò)展性。它不僅可被用于.NET和C#,而且支持幾乎任何一種編程語(yǔ)言。
JetBrains的Rider:一種全新的IDE
Rider是一款相對(duì)較新的.NET IDE,雖然只提供30天的試用,但是Rider能夠支持Windows、Mac OS X和Linux上的.NET和.NET的核心應(yīng)用。Rider具有運(yùn)行速度較快,版本控制集成、以及廣泛的反編譯功能。Rider能夠提供各種項(xiàng)目所需的控制臺(tái)、Web和庫(kù)。同時(shí),它還包含有導(dǎo)航、搜索、重構(gòu)、代碼檢查、快速修復(fù)、以及與版本控制系統(tǒng)無(wú)縫集成等功能。
與Visual Studio相比,JetBrains' Rider不但體驗(yàn)更好、性能更佳,而且其許可證的***年只要139美元,而Visual Studio專業(yè)版每年的費(fèi)用高達(dá)1,199美元,企業(yè)版更是每年5,999美元。
Visual Studio擴(kuò)展
JetBrains的ReSharper:VS的必備附加組件
JetBrains的另一款產(chǎn)品是ReSharper(https://www.jetbrains.com/resharper/?gclid=CjwKCAjw7_rlBRBaEiwAc23rhvE2g2LuCdK1ErMYNIz1ZzMMwUsWeuYX8mQRUt315EIA5Y1ZTx2r4BoCe6MQAvD_BwE&gclsrc=aw.ds)。作為一種流行的開發(fā)擴(kuò)展工具,它改進(jìn)了重構(gòu)、代碼片段、模板引擎,并增加了額外的靜態(tài)代碼分析功能。另外,ReSharper可以檢測(cè)各種錯(cuò)誤、提供大量的自動(dòng)修復(fù)、能夠簡(jiǎn)化代碼的修改,以及允許開發(fā)人員快速地瀏覽其代碼。
通過(guò)分析代碼的質(zhì)量,ReSharper能夠優(yōu)化代碼的性能、避免內(nèi)存的泄漏、以及創(chuàng)建構(gòu)造函數(shù)、條件塊和新的類。
NDepend:徹底進(jìn)行代碼分析的***工具
作為Visual Studio的插件,NDepend(https://www.ndepend.com/)是另一種可以根據(jù)用戶的特殊需求進(jìn)行定制化代碼分析的工具。它可以快速、準(zhǔn)確地檢查源代碼、及其依賴項(xiàng),并提供詳細(xì)、精確的各類指標(biāo)。
Visual Studio Cloud Explorer:能與Azure云交互的解決方案
Cloud Explorer(https://marketplace.visualstudio.com/items?itemName=ms-azuretools.CloudExplorerForVS)工具允許用戶在Visual Studio里直接管理Azure云資源、檢查其屬性、以及執(zhí)行開發(fā)人員的各項(xiàng)診斷操作。由于不需要訪問(wèn)Azure門戶,用戶完全可以在VS中看到所有的Azure云內(nèi)容,因此大幅節(jié)省了時(shí)間。
包管理器
包管理器能夠通過(guò)支持托管用戶的各種包、模塊、以及庫(kù),來(lái)實(shí)現(xiàn)整個(gè)團(tuán)隊(duì)的工作流,并在構(gòu)建與發(fā)布上持續(xù)交付。因此,它是.NET生態(tài)系統(tǒng)的重要補(bǔ)充。
NuGet:用于創(chuàng)建、共享和使用.NET庫(kù)的通用工具
NuGet(https://www.nuget.org/)包管理器、及其Gallery是一個(gè)能夠與.NET一起使用的集中式包存儲(chǔ)庫(kù)。它擁有大約15萬(wàn)個(gè)獨(dú)特的軟件包,和超過(guò)150萬(wàn)個(gè)包的不同版本。由于NuGet將.NET框架、庫(kù)和模塊引入到了.NET項(xiàng)目中,因此您***將它與其他資源管理器工具一起使用。
NuGet Package Explorer:一種交互、瀏覽和發(fā)布NuGet包的新方法
該開源產(chǎn)品具有友好的用戶界面,可用于創(chuàng)建、瀏覽、調(diào)試和分析NuGet包。同時(shí),它擁有簡(jiǎn)潔且圖形化的用戶界面。
.NET庫(kù)也適用于npm
近年來(lái),為了方便給Web開發(fā)提供源代碼,Microsoft Visual Studio還增加了對(duì)于npm的支持。同時(shí)各種現(xiàn)代化的Web實(shí)踐工具,以及開源的代碼,也都能夠使用.NET Core在后端進(jìn)行編寫了。
調(diào)試和反編譯工具
通過(guò)調(diào)試工具,開發(fā)人員能夠查看代碼,并在任何開發(fā)階段識(shí)別問(wèn)題的根本原因。為了進(jìn)行排障,我們可以使用反編譯工具,將已編譯的第三方代碼轉(zhuǎn)換回C#程序。
WinDbg:適用于Windows的獨(dú)立調(diào)試工具
由Microsoft分發(fā)的WinDBg(https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools),是專為調(diào)試Windows應(yīng)用程序而構(gòu)建的。不同于使用調(diào)試工具內(nèi)置的IDE這一傳統(tǒng)方式,WinDbg可以在Visual Studio之外被運(yùn)行。因此它更適合那些喜歡開源和免費(fèi)軟件的開發(fā)人員。
該工具用于調(diào)試內(nèi)核模式和用戶模式代碼,檢查故障轉(zhuǎn)儲(chǔ)和CPU寄存器。
JetBrains的dotPeek:一款不錯(cuò)的免費(fèi)反編譯工具
dotPeek(https://www.jetbrains.com/decompiler/)是一款可靠的基于ReSharper的反編譯器,它適用于調(diào)試第三方程序的代碼集合。使用dotPeek,您可以在不直接訪問(wèn)源代碼的前提下,檢查第三方組件中出現(xiàn)的問(wèn)題??梢?,它是一款簡(jiǎn)單、高效且全面的工具。如果您需要根據(jù)某個(gè)應(yīng)用程序特定版本的DLL文件,來(lái)恢復(fù)已有的代碼,那么dotPeek就能夠在最短的時(shí)間內(nèi)恢復(fù)那些丟失的代碼。
- LSpy:可以替代.NET Reflector
- LSpy(https://github.com/icsharpcode/ILSpy/releases)是一個(gè).NET assembly瀏覽器與反編譯器。它一款免費(fèi)的工具,完全可以替代.NET Reflector。該工具可以將任意.NET DLL反編譯回Visual Basic或C#。因此,如果您丟失了源代碼,ILSpy可以讓您了解各種框架DLL背后的代碼工作機(jī)制。同時(shí),您也可以通過(guò)各種插件(https://github.com/icsharpcode/ILSpy/wiki/Plugins)來(lái)增強(qiáng)其基本包。
格式化工具
格式化工具可以幫助用戶通過(guò)遵循某些一致性的代碼樣式,來(lái)檢測(cè)并修復(fù)各種樣式上的漏洞。同時(shí),您也可以在IDE中進(jìn)行設(shè)置,以便它能夠在您輸入的時(shí)候,實(shí)時(shí)進(jìn)行運(yùn)作。
SonarQube:一種維護(hù)代碼質(zhì)量的簡(jiǎn)便工具
SonarQube(https://www.sonarqube.org/)是一種開源的靜態(tài)代碼審查工具,它是由一組靜態(tài)分析工具、數(shù)據(jù)集市、以及門戶所組成,您既可以在其中管理技術(shù)債(technical debt),又能夠分析.NET的托管代碼。除了具有強(qiáng)大的社區(qū)支持,SonarQube還能夠以添加插件的方式,提供各種額外的分析工具。SonarQube不但易于設(shè)置與配置,而且具有豐富的內(nèi)置規(guī)則集,包括:編碼標(biāo)準(zhǔn)、***實(shí)踐、以及各種安全規(guī)則。
在實(shí)際應(yīng)用中,SonarQube允許用戶標(biāo)準(zhǔn)化其代碼、并可視化已審查的代碼覆蓋率,進(jìn)而提高了代碼的可維護(hù)性、整體質(zhì)量、以及審查的工作量。
StyleCop:.NET代碼樣式的可配置工具
StyleCop是一個(gè)本地代碼分析器,它能夠?qū)υ创a強(qiáng)制執(zhí)行樣式、以及一致性規(guī)則的檢查。它允許開發(fā)人員選擇如下三種形式的自定義規(guī)則:
- StyleCop Visual Studio擴(kuò)展(https://visualstudiogallery.msdn.microsoft.com/5441d959-387f-4cb2-a8c0-9998dd1fa49f):可以在Visual Studio中的任何文件、項(xiàng)目或解決方案上運(yùn)行,無(wú)需修改任何源代碼。
- StyleCop.MSBuild(https://www.nuget.org/packages/StyleCop.MSBuild):運(yùn)行在.NET 4.0以上的項(xiàng)目中。
- StyleCop.ReSharper(https://github.com/StyleCop/StyleCop.ReSharper):是一個(gè)插件,可用于配置ReSharper,使用與StyleCop規(guī)則匹配的默認(rèn)設(shè)置。
性能分析與管理
我們?cè)陂_發(fā)過(guò)程中,如果遇到了性能問(wèn)題,往往需要收集與問(wèn)題相關(guān)的各種詳細(xì)信息。使用如下工具,.NET開發(fā)人員可以跟蹤計(jì)算機(jī)的性能,找出問(wèn)題背后的原因。
PerfCollect和PerfView:標(biāo)準(zhǔn)的.NET性能優(yōu)化工具箱
PerfCollect(https://raw.githubusercontent.com/dotnet/corefx-tools/master/src/performance/perfcollect/perfcollect)是一個(gè)自動(dòng)化數(shù)據(jù)收集的Bash腳本,而PerfView(https://github.com/Microsoft/perfview#perfview-overview)則是一個(gè)基于Windows的性能工具。您可以使用PerfCollect來(lái)捕獲perf的跟蹤文件,然后使用PerfView來(lái)進(jìn)行分析。
除了可以調(diào)整CPU和內(nèi)存的分配,PerfView還具有如下優(yōu)點(diǎn):
- 無(wú)需安裝,只需將應(yīng)用程序復(fù)制到您希望從中捕獲性能數(shù)據(jù)的Windows主機(jī)上,然后配置需要分析的內(nèi)容,便可開始捕獲。
- 無(wú)需為了進(jìn)行分析而修改應(yīng)用程序,或降低性能。
- 能以Chrome性能工具相似的方式呈現(xiàn)各種結(jié)果。
JetBrains的dotTrace和dotMemory:性能和內(nèi)存分析
dotTrace(https://www.jetbrains.com/profiler/)和dotMemory(https://www.jetbrains.com/dotmemory/?gclid=Cj0KCQjwkoDmBRCcARIsAG3xzl8Tqjd2pnIRvxGDqXSTcZX33zS9MNEL7OVFXHjLJMyf_UgCRkXco8oaAsZZEALw_wcB&gclsrc=aw.ds)可跟蹤與分析.NET應(yīng)用程序的性能、以及內(nèi)存問(wèn)題。它們能夠處理大量的數(shù)據(jù),并以全面的方式呈現(xiàn)給用戶。
dotTrace的功能包括:性能瓶頸檢測(cè)、調(diào)用堆棧分析、性能時(shí)間線報(bào)告、以及許多其他類型的分析操作。而dotMemory的功能則包括:遠(yuǎn)程分析、自動(dòng)檢查內(nèi)存問(wèn)題、內(nèi)存流量分析、以及內(nèi)存快照比較等。
BenchmarkDotNet:用于基準(zhǔn)測(cè)試的強(qiáng)大.NET庫(kù)
作為一個(gè)開源項(xiàng)目,BenchmarkDotNet(https://benchmarkdotnet.org/)消除了用戶對(duì)于性能的猜測(cè),并能夠通過(guò)自動(dòng)隔離每一個(gè)基準(zhǔn),來(lái)運(yùn)行并測(cè)試多次迭代。它是一個(gè)小型編程工具,通過(guò)各種示例,用戶能夠測(cè)量和比較自己的算法性能,進(jìn)而得到可靠結(jié)果,并提高生產(chǎn)率。
測(cè)試工具
Visual Studio MSTest:一種流行的單元測(cè)試框架
MSTest框架在Visual Studio產(chǎn)品系列中占據(jù)著獨(dú)特的位置。由于.NET模式的單元測(cè)試會(huì)為每個(gè)生產(chǎn)項(xiàng)目準(zhǔn)備一個(gè)單獨(dú)的測(cè)試項(xiàng)目,因此您可以直接在MSTest中通過(guò)File->New Project來(lái)生成。而在測(cè)試時(shí),您可以在IDE中觀察到測(cè)試結(jié)果。
NUnit:優(yōu)秀的測(cè)試工具
NUnit(https://nunit.org/)非常適合在非Microsoft平臺(tái)、以及自定義的測(cè)試中互動(dòng)式運(yùn)行。它不但能夠?qū)崿F(xiàn)快速的測(cè)試和對(duì)測(cè)試進(jìn)行標(biāo)注,而且可以針對(duì)給定測(cè)試的多個(gè)輸入進(jìn)行簡(jiǎn)單的規(guī)范化。不過(guò),NUnit不能像MSTest那樣,可以被無(wú)縫地集成到Visual Studio中。
同時(shí),由于NUnit支持廣泛的自定義屬性,因此用戶可以根據(jù)不同的參數(shù)分類,輕松地開展測(cè)試。此外,憑借著控制臺(tái)運(yùn)行程序,NUnit可以被輕松地將測(cè)試集成到CI流程中。
xUnit.NET:一種創(chuàng)新的.NET單元測(cè)試工具
xUnit為測(cè)試語(yǔ)言創(chuàng)建了一套直觀的術(shù)語(yǔ)。它將測(cè)試劃分為“事實(shí)”與“理論”,進(jìn)而分別區(qū)分“始終為真”和“對(duì)于正確數(shù)據(jù)為真”等情況。作為一種擴(kuò)展,xUnit可被用來(lái)開發(fā).NET Core。
JetBrains dotCover:針對(duì)持續(xù)測(cè)試的代碼覆蓋工具
dotCover(https://www.jetbrains.com/dotcover/)是一個(gè)代碼覆蓋工具,它可以分析用戶的代碼、產(chǎn)生單元測(cè)試的覆蓋范圍報(bào)告。作為ReSharper軟件包的一部分,dotCover既可以獨(dú)立于ReSharper工作,也可以與ReSharper協(xié)同工作。
用戶可以將dotCover作為持續(xù)集成流程中的一部分,與JetBrains的TeamCity CI服務(wù)器一起使用,以查看單元測(cè)試的代碼涵蓋率。
其他實(shí)用工具
LINQPad:連接數(shù)據(jù)庫(kù)的多功能工具
LINQPad(https://www.linqpad.net/)是一個(gè)輕量級(jí)的.NET應(yīng)用程序,可用于在沒(méi)有IDE的情況下,交互式地編寫C#代碼。該工具不僅可以實(shí)現(xiàn)一系列的查詢操作,還具有集成的調(diào)試器和自動(dòng)完成等功能(支持IntelliSense)。
通過(guò)其數(shù)據(jù)庫(kù)查詢的能力,LINQPad能夠?qū)⒏鞣N執(zhí)行轉(zhuǎn)換為純SQL,以便用戶修改數(shù)據(jù)、并轉(zhuǎn)換數(shù)據(jù)庫(kù)的架構(gòu)。
另外,用戶還可以使用LINQPad來(lái)開發(fā)自定義的計(jì)費(fèi)平臺(tái),以實(shí)現(xiàn)快速原型設(shè)計(jì)、算法測(cè)試和LINQ查詢驗(yàn)證等功能。
dotnet-script:簡(jiǎn)單的實(shí)驗(yàn)?zāi)_本
Dotnet-script(https://github.com/filipw/dotnet-script)是一個(gè)帶有IntelliSense的跨平臺(tái).NET Core工具。它可以直接在Visual Studio Code中調(diào)試各種腳本。由于支持NuGet包,dotnet-script代碼可以實(shí)現(xiàn)相互關(guān)聯(lián),并存放在同一個(gè)文件中。
如何選擇自己的.NET工具集?
那么我們?cè)撊绾卧?NET項(xiàng)目的各種可用工具集中進(jìn)行選擇呢?下面是一些經(jīng)驗(yàn)與建議:
- 根據(jù)項(xiàng)目目標(biāo)與簡(jiǎn)單化原則,我們不應(yīng)在選擇工具上花費(fèi)太多的時(shí)間,而應(yīng)注意工具本身的易用性。
- 根據(jù)日常工作中的實(shí)際需求,在開發(fā)過(guò)程中避免重復(fù)性的工作。
- 能輕松地部署到生產(chǎn)環(huán)境中,且?guī)?lái)的影響最小。
- 在業(yè)界和社區(qū)里有良好的聲譽(yù)。
- 是否提供免費(fèi)試用或完全免費(fèi)。
- 學(xué)習(xí)曲線是否陡峭復(fù)雜。
原文標(biāo)題:Top 23 Tools for .NET Development: The Experts' Choices,作者:Kseniia Bezugla
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】