VisualStudio神級插件Resharper的基本配置和使用技巧大全+Resharper性能優化


所謂工欲善其事,必先利其器。盡管visual studio本身已經非常強大,但優秀的插件仍然可以幫開發者大大提高效率。

ReSharper是一款由jetbrain開發的針對C#,VB.NET,ASP.NET,XML,和XAML的編輯器。沿襲了jetbrains開發工具一貫的優良傳統,ReSharper擁有高度智能的糾錯,30多種高級代碼重構功能,方便的單元測試工具,快速導航、檢索,以及一鍵格式化代碼,自動代碼生成和模板功能等很多特性。

ReSharper和之前版本相比較,重點包括以下幾點更新:JavaScript,CSS,支持和Razor視圖引擎捆綁反編譯器,增強導航,重新設計的設置管理,不同語言的新的代碼檢查功能。

以下是對Resharper的一些基本配置和使用技巧,在這里,小編和大家一起分享:

 

1:安裝后,Resharper會用他自己的英文智能提示

替換掉 vs2010的智能提示,所以我們要換回到vs2010的智能提示

懶得勤快的博客_全棧開發者_互聯網分享精神

 

2:快捷鍵。

是使用vs2010的快捷鍵還是使用 Resharper的快捷鍵呢?我是使用re的快捷鍵

懶得勤快的博客_全棧開發者_互聯網分享精神

 

3:resharper安裝后,會做幾件事情

這幾件事情對於除此使用者,比較麻煩,因此歸納總結一下,以資參考。

(1)、會將選項——文本編輯器——C#——常規——自動列出成員 這個選擇框的勾選去掉。這樣當你使用某個方法的時候,便不會提示參數,是一個很郁悶的事情。

可以手動勾上。

(2)、會將選項——文本編輯器——C#——高級——顯示實時語義錯誤、在編輯中用下划線標識錯誤這兩個選項去掉。這個本來沒有什么,但是如果卸載了Resharper,

vs編輯器變不會實時提示錯誤。因此卸載Resharper后,需要把這兩個選項重新勾選上。

 

4: use var

use implicitly typed local variable declaration

懶得勤快的博客_全棧開發者_互聯網分享精神

 

5:按 alt+enter 能解決很多問題。

下面是快捷鍵大全。

懶得勤快的博客_全棧開發者_互聯網分享精神

 

6: Alt+F7

將你光標所在位置的變量的所有使用以列表的方式顯示出來,顯示結果的窗體可以像其他窗體那樣停靠。

它的優點包括:

1
2
3
4
可以從所有使用中挑選只顯示read usage或者write usage,有時我們只是想知道某個變量在哪里被改變了。找到的位置前的圖標也告訴你這點。
可以在下方預覽,即使我們列出所有使用,也不想跳轉到每個使用它的地方,這時預覽可以幫你大忙。
當你在代碼編輯器中改動了某些使用時,比如刪除了某行,那么在查找結果的窗體中,會用刪除線表示出來。
默認的是尋找解決方案中所有的使用,並且按照命名空間來組織,非常便於選擇。

我現在已經記不起來在沒有Alt+F7之前我是怎么查找的。反正現在我幾乎不怎么樣Ctrl+F了,除非我忘記了某個變量的名字。如果是這樣,多半這個名字需要refactor,那也是Resharper的另一大塊功能所在。也許有人對這個功能嗤之以鼻,但是用過CAB的人都知道,訂閱和發布某個事件的簽名,完全是字符串,如果你不用搜索來找到它的話,你都不知道這個控件的鼠標點下去,到底有多少個處理程序在背后開始工作了。用了Alt+F7來搜索這個字符串,等於在查找背后所有的調用者。

不過提示你,當光標停留在一個類型上時,要慎用Alt+F7,假設是一個string,你應該能想象到得找到多少個使用

 

7:威力無比的Alt+Enter回車

萬能的Alt+Enter能夠幫你完成很多編寫代碼過程中的dirtywork,總結起來大概是這么些:

  1. 幫你實現某個接口或抽象基類的方法;

  2. 提供你處理當前警告的一些建議;

  3. 為你提供處理當前錯誤的一些建議(不一定是真的錯誤);

  4. 為你簡化當前的臃腫代碼;

 

8: Ctrl + F11

當我們看別人的代碼,或者是看自己的代碼的時候,總是覺得代碼太多,於是我們就用 region來把代碼進行了封裝注釋,可是這樣之后別人看代碼就很郁悶,Resharper的 File Structure功能,就可以把region和你的方法都展示出來。

說了這么多,其實就是把對象瀏覽器和region的長處結合起來,既可以清晰的分類,又能一目了然的找到需要的方法。Resharper這時幫上你的大忙了。用Ctrl+F11,就彈出一個像右邊這樣的窗口來。

這里面,按照你的region來顯示,這樣讀你的代碼的人也受益了。每個方法的參數,返回值都如UML一樣列出來。

1
2
3
4
如果需要瀏覽到某個方法,直接雙擊它的名字;
如果要把某幾個方法裝進一個新的region,則可以選中方法,點工具欄上的像框的那個圖標;點叉則會刪除這個region並把相應的方法移到外面來。
如果要調整某個方法的位置,比如把它移到別的region里面去,只需要在這里拖動這個方法即可。
更可喜的是,你想要的從這里瀏覽、找到所有使用和重構的功能也在這里提供了,在某個方法上右鍵你就能開始操作。

懶得勤快的博客_全棧開發者_互聯網分享精神9:重構才是王道(上)

重構是一種精神,證明你在致力於提供高效的、精煉的、健壯的代碼,而不是凌亂的、晦澀的、漏洞百出的代碼。

在Visual Studio 2005中,微軟第一次提供了重構工具。但是不夠,遠遠不夠。我們需要的重構是非常廣義的,我們想要對代碼進行快速的調整,快到我在想什么我的工具就能做什么。這才是追求重構的境界。所以在這個意義上,幾乎Resharper為你提供了巨大的生產力。
Visual Studio 2005提供的重構包括了如下:

1
2
3
4
5
6
7
封裝字段
提取方法
提取接口
提升局部變量
移除參數
重命名
重新排列參數

這些方法在Resharper中全部都支持(但Resharper的重構遠不止這些),它們對應的變成了:

1
2
3
4
5
6
7
封裝字段 —— Introduce Field
提取方法 —— Extract Method
提取接口 —— Extract Interface(另增加了Extract Superclass提取為基類)
提升局部變量 —— Introduce Variable
移除參數 —— 移到Change Signature(改變方法簽名)中
重命名 —— Rename(Resharper會根據對象的類型名稱,提供你幾個可選的最合適的名稱)
重新排列參數 —— 移到Change Signature(改變方法簽名)中

我知道很多人都聲稱自己E文不好,但是,這確實都是很簡單的單詞,難不倒任何人的。這些重構的功能是人所共知的,下面就告訴大家一些Resharper特有的,首先,重構的快捷鍵是Ctrl+Shift+R:
1、對於類,除了提取接口、基類,你還可以移動它到其他的命名空間和移動到別的文件里,這是一個實用的功能,也許你不信,但是我這真的有個人,把所有的business entity都寫在一個DataObject.cs里面。你難以想象,我打開它時嘴張了多大。
2、對於字段,提供了:

Safe Delete,會檢測所有使用到的地方,並詢問如何刪除;

Pull Member Up和Push Member Down,可以把這個字段在基類和繼承類中移動;

Use base type where possible,盡可能的使用基類,由於ArcGIS平台是基於com組件的,很多時候我們需要的是IGeometry, IPointCollection這樣的接口所公開的屬性或者方法,於是你沒有必要保存一個polygon對象,而可以使用基類型;

Encapsulate Field,封裝字段,但是這個功能遠沒有另一個提供同樣功能的操作有用。我可以在后文中來講。

3、對於方法,提供了:

與字段類似的功能,此外;

Change Signature,更改函數簽名,包括更改名稱,返回值類型,參數的各種信息,添加和刪除參數,相當實用。如果你是在重寫方法上操作,會提示你是否到基類中更改。

Make Static,如果Resharper檢測到這個方法並沒有與非靜態成員相關聯的話,往往會自動地提示你(以黃色橫杠的形式出現)可以改為static,如果你自作主張的對一些方法進行修改也無不妥,但后果自負。

Extract class from parameter,如果你的參數有七個八個,那是否考慮用一個類來封裝這些參數呢,於是這個功能應運而生。

Method to Property,顧名思義,如果還在使用GetField()或者SetField(..)的話,你一定是從非.net星來的。

4、在方法體內部:

Extract Method,不用介紹了吧。
Introduce Variable/Parameter/Field,取決於你光標所在的對象,可以提供轉化的功能。
Inline Variable:就是把:

IPoint point = new PointClass();
point.PutCoords(_point.X, _point.Y);

變成這樣子:

new PointClass().PutCoords(_point.X, _point.Y); //這是個糟糕的例子

5、重命名:

為什么重命名值得挑出來講,因為Resharper提供了命名建議這一金子般的功能。於是,想改名為易讀性強的名字,不是那么費腦子的事情了。Resharper會根據這個變量的類型,為你提供幾個備選名字,名字列表是列在光標位置上的(對方法重命名會彈出對話框),你只需要用方向鍵選擇並敲回車即可,這種名字多是將類型的名字首字母改為小寫得來的,甚至刨根到基類的類型名,你還可以在此基礎上加以改進。如果你還在用i,j這種晦澀的名稱,請迅速的把他們改為outIndex, pointCount之類可讀的名稱。

Resharper其實提供了更先進的功能,在你命名一個變量時,就有快捷鍵為你提供備選名字,但是Ctrl+Space是我們寶貴的輸入法切換鍵,於是,我對變量名的敲定,往往是先起了一個較爛的,然后重命名的。
還有一些更廣義上的,幫助你對代碼進行調整的功能,我另寫一篇吧,不然太長了。

 

10:重構才是王道

 

插入代碼

Resharper的Alt+Insert快捷鍵提供給你插入代碼的功能。由於這兩個鍵非常難按(這是我的感受),真正在使用的時候,我用的是Alt-R-C-G,意指打開Resharper菜單——Code——Generate,都只需要你的左手,這樣你可以右手一邊比划,一邊還在寫代碼,多酷啊。

生成的代碼中最常用的是構造函數和屬性,當你沒有私有字段的時候,只會生成一個空的默認構造函數,而且沒有生成屬性的功能。在你有私有字段的情況下,生成之前會讓你選擇哪些私有字段需要作為構造函數的參數,並生成初始化的代碼,這樣編寫重載極其方便。生成屬性也類似。

再次常用的就是重寫基類或者接口的方法了。選擇Implement Interface Member或者Override Inheritate Member,Resharper會查找當前類的基類或接口,然后按繼承層次列出來,根據你的選擇重寫或實現這些方法。

不是太常用的是生成Equals和GetHashCode方法,在我的應用場景中很少重寫它們。但是根據《.NET設計規范》,不管是值類型還是引用類型的Equals都建議重寫,並且應該重寫GetHaseCode方法,因為它們相互依賴。如果你有這個需求,那么生成這三個函數一定能夠幫你的大忙。

 

包圍代碼

Visual Studio也提供了外側代碼這個功能,你可以按Ctrl+K,Ctrl+S來激活這個功能,雖然我並沒有任何鄙視Visual Studio的意思,但是Resharper的快捷鍵確實更加合理(我在按下Ctrl的時候真的很難按下S),條目也更加清晰。Resharper中這個功能的快捷鍵是Ctrl+Alt+J,然后你就可以選擇將當前行的代碼包圍到try-catch塊或者using中了。這是很高效的方法,我們傾向於在開發的早期盡量不捕獲異常,而在中后期才加入異常處理機制。於是你某一個時期有大量的工作是把他們擴到try-catch塊中。而你要使用支持dispose對象時,最好的方法是使用using塊。(賣蛋糕的,當我知道我的代碼不是最優的時候,我總是寢食難安),這里自然也有把代碼擴到region塊中的功能,也是常用功能之一。

 

調整方法的位置

前面我曾說過,如果要調整方法的位置,可以在代碼結構窗口中拖放操作。如果你覺得只是把一個方法移動到前面去,卻不得不打開代碼結構窗口太過重量級,那么有輕量級的方法:當光標位於方法的名稱上時,用Ctrl+Shift+上下鍵就可以移動方法的位置,包括方法的xml注釋,但如果你用的不是三個/的xml注釋而是兩個/的,那么就對不起了。

 

其他瑣碎的功能

你肯定常常會復制粘貼當前行的代碼,例如在使用StringBuilder.Append的時候,Ctrl+D可以簡化你Ctrl+C,Ctrl+V的工作。

曾經有一個組合鍵可以注釋掉當前行,還有另一個是取消注釋,但是我已經淡忘了,因為Ctrl+/才應該是真正屬於它的快捷鍵,再次按下就可以取消注釋。

關於Resharper的重構功能就是這些,我可能天真地把很多額外功能都算在重構里了,但是它確實能夠幫助你快速的對代碼進行調整和優化。所以,請不要深究我對重構的概念認識是不是混亂。

 

增強的瀏覽功能

瀏覽參數的方式:

輸入方法的時候,我們已經習慣了由IDE提供給我們的參數提示,極大了方便了我們選擇重載方法。在沒有Resharper的環境下,Visual Studio已經做到了。那么為什么Resharper還要增強這個功能並大獲好評的。試問,Visual Studio那窄窄的一行參數提示有沒有讓你覺得憋屈。我們有19寸的大屏幕,1600的分辨率,卻不得不盯着那窄條條,小心翼翼的按着上下鍵尋找我們需要的重載。至少,開發Resharper的家伙是受不了這種憋屈的,於是大開大闔版的參數列表出現了,長長的參數重載被以列表的形式展現出來,當你在使用GDT+方法,看到巨大的參數重載時,你會從心底里發出感嘆:賣蛋糕的。

同時,Resharper展示參數的快捷鍵變成了Ctrl+P,如果你覺得屏蔽了打印的快捷鍵簡直是在開玩笑的話,那么問問你自己有多少次打印過自己的代碼。

 

瀏覽打開過的文檔:

我竊以為你已經知道了在Visual Studio中切換文檔的方式,它們包括:

Ctrl+Alt+上下方向鍵,可以在打開的文檔中切換;
Ctrl+Tab,不僅可以在文檔之前切換,並可以切換到解決方案文件夾,屬性視圖去,需要按左右鍵。

但是怎么樣打開最近編輯后關閉的文件呢,Visual Studio很客氣的又沒有提供此功能,於是留給了Resharper。在我這里這個快捷鍵是Ctrl+E,Ctrl+E,沒錯,按兩次。如果你的不是,那么在Resharper-View-Recent Files菜單下看看它是什么。因為你會時常用到。打開一個文件的列表,用方向鍵選擇並回車就會在編輯器中打開。

很多人說Resharper的性能問題,我想,一個可能的原因是打開的文檔太多了,如果你有時刻關閉不需要的文檔的習慣,性能或許不會那么差,並且你可以隨時打開這些你關閉了的文檔,就像在已經打開的文檔中切換一樣的方便。

我的團隊中沒有用到敏捷開發那些高級的東西,但是我們還是保持着每次改動都僅涉及兩三個文件的好習慣,並且頻繁的commite到源代碼服務器上去。所以,我每次真正要編輯的文件不多,性能不是問題。

和大家分享了很多Resharper使用的技巧,點點滴滴都已經融入我日常的開發工作中了。當然很不全面,例如與Nunit的集成,由於我們不是測試驅動,所以沒有任何體驗,自然也不敢大放厥詞;也很主觀,我覺得它好,你可能覺得它不好,蘿卜青菜各有所愛。再說,它也不是沒有白痴的地方,在文檔上點右鍵增加的一個Close All功能,可以關閉所有打開的文檔,關閉了干什么,對着一個空白的屏幕發呆么?我覺得原生的“除此之外全部關閉”就夠了。還有一個定位的功能(Locate in Solution Explorer),真是沒用,如果你在VS選項中設置了,在解決方案管理器中跟蹤活動項,那么VS自動就給你定位了。

不管怎么說,它帶給我更快更方便的開發體驗,把我從一些瑣碎的,不人性化的功能中解放出來。從這一點上來說,我很希望越來越多的人喜歡上它,開始用它,並幫助它更好的發展。

Resharper和VisualStudio性能優化建議

 

提升性能

我們不斷地確保ReSharper的正常工作在現代硬件和中型和大型的解決方案,沒有任何調整。

我們相信,Visual Studio的開發人員正在努力實現同樣的事情,試圖通過加快ReSharper的過時的硬件,你剝奪了強大的功能,可以加快你的開發表現自己。

如果您遇到與Visual Studio和ReSharper的性能問題,應用性能優化的列表。所給出的一些技巧是ReSharper的特定的,而另一些會VS性能,你是否已經安裝了ReSharper的或沒有影響。

 

為ReSharper加速

 

禁用代碼分析當前文件

您可以按暫時禁用代碼分析當前文件的Ctrl + Alt + Shift + 8。再次按下該快捷方式將重新啟用的分析。你可以發現當前文件的狀態指示燈代碼分析的狀態:

懶得勤快的博客_全棧開發者_互聯網分享精神如果您要綁定一個不同的快捷方式進行此操作,尋找ReSharper_EnableDaemon命令。

 

禁用代碼分析特定的文件

你可以告訴ReSharper的跳過分析某些文件,而無需打開它們。例如,你可以跳過包含行之有效的算法文件,不發生大的變化。要做到這一點,到ReSharper|Options,然后選擇Code Inspection | Settings。點擊Project to ignore下的Add,並使用彈出的對話框中挑中的文件和文件夾跳過。您也可以跳過指定的文件的文件掩碼。最有可能的,你會發現,所有的文件,你禁用代碼分析的Ctrl + Alt + Shift + 8已經在那里。

 

關閉解決方案范圍的分析

在非常大的項目,打開解決方案范圍的分析可能會導致性能下降,特別是在那么強大的硬件。如果你覺得這個分析中占用太多的資源,只需將其關閉:右擊Visual Studio的右下角,選擇Analyze Errors in Solution或Pause Analysis。

一個對話框會彈出詢問您是否要關閉提示。點'Yes',你就大功告成了。

懶得勤快的博客_全棧開發者_互聯網分享精神

 

禁用上下文行動

在ReSharper的選項,進入CodeEditing|ContextAction和CodeEditing| [語言] |上下文的動作,然后取消選中不那么對您有所幫助的選項。

 

加快打字

如果您遇到減速打字時,你可以在關閉ReSharper | Environment |Options|IntelliSense|CompletionAppearance:

懶得勤快的博客_全棧開發者_互聯網分享精神

如果這樣沒有幫助,切換到下內置在Visual Studio智能感知的ReSharper | Options |Environment| IntelliSense |General:

懶得勤快的博客_全棧開發者_互聯網分享精神

 

禁止格式

為了加快打字,你還可以禁用下自動格式選項的ReSharper | Options | Environment | General ,以避免代碼打字時格式化:

懶得勤快的博客_全棧開發者_互聯網分享精神

 

加快代碼模板

為加快擴大代碼模板,你可以關掉重新格式化,並縮短合格的參考,您使用的選項模板:

懶得勤快的博客_全棧開發者_互聯網分享精神

有關編輯代碼模板的詳細信息,請參閱此幫助條目

 

禁止單元測試

如果你不使用ReSharper的單元測試運行,可以通過關閉它節省處理時間。去ReSharper|Options|Tools|UnitTesting,並明確了相應的復選框:

懶得勤快的博客_全棧開發者_互聯網分享精神

 

關閉導航欄

如果您使用的文件結構 的窗口,那么你可能不使用導航欄上的編輯器的頂部。如果是這樣,你可以通過取消選中相應的復選框以禁用工具|選項|文本編輯器| C#。

 

如果沒有幫助

如果你已經試過了上述的一切,表現仍下跌,你可以暫時禁用ReSharper的,並檢查是否有放緩的原因。禁用/啟用ReSharper的,到工具|擴展和更新| ReSharper ,點擊禁用/啟用。

如果禁用ReSharper的有助於提高性能,但你還是要偶爾使用它的代碼清理,格式化或分析,你可能想有一個快速切換ReSharper的開啟和關閉的快捷方式。這里是如何做到這一點:
轉到工具|選項|環境|鍵盤並找到ReSharper_ToggleSuspended命令,然后按一些快捷鍵,然后單擊分配

懶得勤快的博客_全棧開發者_互聯網分享精神

 

已知的性能問題

以下是已知的性能問題及其相應的解決方案的列表。

 

ReSharper的升級后的性能下降

如果您最近更新的ReSharper的觀察與被打開了與以前版本的解決方案,性能下降,你可以嘗試通過清除ReSharper的緩存和刪除解決方案,以加快事情了名為.suo文件。

要清除高速緩存,去ReSharper|Options|Environment|General,點擊ClearCaches:

懶得勤快的博客_全棧開發者_互聯網分享精神

性能注意事項: 儲存在系統臨時文件夾緩存可提供額外的好處,比如在項目的內容是通過Dropbox的或類似手段同步案件的能力。此外,性能可以的,如果你的系統臨時文件夾映射到一個更快的存儲介質,如高性能的固態硬盤或RAM盤得到改善。

 

已知的兼容性問題

 

其他Visual Studio擴展

主要的兼容性問題已經觀察到了以下產品:

  • DevExpress CodeRush/Refactor Pro (incompatible)

  • Telerik JustCode (incompatible)

  • Whole Tomato Visual Assist

  • Productivity Power Tools

性能下降已經觀察到了以下產品

  • Some versions of the StyleCop ReSharper plug-in

  • PowerCommands for Visual Studio

也有報道在網絡精華促進低性能的同時,編輯.cshtml文件。如果你受到這個問題,可以考慮將工具|選項|Web Essentials設置Auto-format HTML on Enter為false。

 

運行Parallels Desktop的Mac

如果你正在運行在Mac上使用的Parallels Desktop的Windows虛擬機的Visual Studio,ReSharper的智能感知列表可能會呈現很慢。

如果這種情況發生在你的設置中,考慮從相干模式切換到全屏模式。用於在兩個模式之間進行切換的准則,請參閱Parallels的知識庫條目

改進Visual Studio的性能

開始調整的Visual Studio設置之前,請檢查最新的Service Pack和修補程序的安裝。

下面是相關鏈接:http://connect.microsoft.com/VisualStudio/Downloads

 

加快滾動編輯

用編輯器滾動的問題就出現了,由於硬件加速渲染的編輯器。如果您遇到這個問題,嘗試下關閉下列選項工具|選項|環境|通用:

  • 基於客戶端性能自動調整視覺體驗

  • 使用硬件圖形加速(如果可用)

懶得勤快的博客_全棧開發者_互聯網分享精神

 

節省時間啟動

關閉起始頁和新聞頻道可能會節省一些時間啟動。要做到這一點,到工具|選項|環境並選擇開機時顯示空環境。

 

清除Web緩存

如果您使用的Web項目,Web緩存可能會放緩的Visual Studio。清理,刪除下的一切%LOCALAPPDATA%\ MICROSOFT \ WebSiteCache。

 

禁用未使用的擴展

轉到工具|擴展和更新,通過該列表,並檢查是否真的需要它們。您可以卸載或禁用未使用的。

 

卸載未使用的項目

如果你不工作的一些項目,你可以從Visual Studio卸載他們,並在需要時重新加載他們。對項目或解決方案資源管理器解決方案文件夾,右鍵單擊並選擇卸載項目,或在解決方案文件夾卸載項目-這將加快Visual Studio和ReSharper雙方。

 

禁用XAML可視化編輯器

在大型項目中,編輯XAML文件中可以感受到,即使在良好的硬件慢。如果你不使用可視化XAML編輯器,你可以部分通過禁用它解決問題。

要做到這一點,在Solution Explorer中的XAML文件單擊鼠標右鍵,然后選擇打開方式。在出現的對話框中,選擇源代碼(文本)編輯器,然后單擊設為默認值。

或者,去工具|選項|文本編輯器| XAML |雜項,然后取消選擇總是完全XAML視圖中打開的文檔。

英文出處:http://confluence.jetbrains.com/display/NETCOM/Ultimate+Guide+to+Speeding+Up+ReSharper+%28and+Visual+Studio%29

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM