強力推薦!.NET開發的這23種優秀工具
譯文【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】