1. 程式人生 > >Visual Studio 2005 IDE 技巧和竅門

Visual Studio 2005 IDE 技巧和竅門

適用於:

Microsoft Visual Studio 2005

摘要:Visual Studio 2005 是目前業內一流的開發工具,我想在此與大家分享一些使用技巧和竅門,使這個優秀的開發工具更顯威力。要充分利用一個工具,關鍵是要熟悉它,開發工具和 IDE 也不例外。不過,有了 C# 2.0、ASP .NET 2.0、Windows Workflow Foundation、Windows Presentation Foundation 和 Windows Communication Foundation 等等許多新技術,誰又會花費時間來了解 Visual Studio 本身呢?花費 10 分鐘閱讀本文將使您瞭解幾項實用內容,這些內容可以使您在使用 Visual Studio 時更加愜意和高效。

*
本頁內容

將雙手保持在鍵盤上

我最喜歡使用的鍵盤快捷方式

您可曾有過這樣的期望:在 Visual Studio 內部進行開發工作時雙手不必離開鍵盤?如果您是一名高階使用者,您肯定會享受到使用鍵盤快捷方式執行各種操作所帶給您的飛速體驗。我確信大部分開發人員都已經熟悉了其中的某些快捷方式。使用 F5 執行 Debug.Start、F10 執行 Debug.StepOver、F4 執行 View.Properties,等等。不過仍有其他幾個不太為人所知但極其實用的鍵盤快捷方式。在下表中,我列出了自己最喜歡使用的一些快捷方式。

鍵盤快捷方式 命令

F7

在設計檢視和程式碼檢視之間切換。

F9

切換斷點。

F12

轉到變數、物件或函式定義。

Ctrl+Shift+7

Ctrl+Shift+8

在“轉到定義”堆疊中快速向前和向後導航。

Shift+F12

查詢某個函式或變數的所有引用。

Ctrl+M、Ctrl+M

在編輯器中展開和摺疊程式碼段結構。

Ctrl+K、Ctrl+C

Ctrl+K、Ctrl+U

分別用於為程式碼行添加註釋和取消註釋。

Shift+Alt+Enter

在全屏模式和正常模式之間切換。

Ctrl+I

漸進式搜尋。

建立鍵盤快捷方式速查表。

大部分開發人員都不瞭解這一點,但實際上,Visual Studio 預設提供了 450 多個鍵盤快捷方式。不過,對於如何找到 Visual Studio 內部的所有鍵盤快捷方式還沒有簡便的方法。您可以編寫一個簡單的巨集,對於所有預設鍵盤快捷方式進行遍歷,找到它們所對應的操作。以下內容(列表 1)列出了這個巨集的程式碼。

Public Module Module1    Public Sub ListShortcutsInHTML()        'Declare a StreamWriter    Public Sub WriteHTMLStart(ByVal sw As System.IO.StreamWriter)        sw.WriteLine("<html>")        sw.WriteLine("<head>")        sw.WriteLine("<title>")        sw.WriteLine("Visual Studio Keyboard Shortcuts")        sw.WriteLine("</title>")        sw.WriteLine("</head>")        sw.WriteLine("<body>")        sw.WriteLine("<h1>Visual Studio 2005 Keyboard Shortcuts</h1>")        sw.WriteLine("<font size=""2"" face=""Verdana"">")        sw.WriteLine("<table border=""1"">")        sw.WriteLine("<tr BGCOLOR=""#018FFF""><td align=""center""><b>Command</b></td><tdalign=""center""><b>Shortcut</b></td></tr>")    End Sub    Public Sub WriteHTMLEnd(ByVal sw As System.IO.StreamWriter)        sw.WriteLine("</table>")        sw.WriteLine("</font>")        sw.WriteLine("</body>")        sw.WriteLine("</html>")    End SubEnd Module

列表 1. 在 HTML 檔案中生成鍵盤快捷方式的巨集

要使用這個巨集,請轉到“工具”,選擇“巨集”,然後選擇“巨集 IDE. . .”啟動“巨集 IDE”。展開 MyMacros 工程,MyMacros 名稱空間,然後雙擊“Module1”。將列表 1 中的內容複製到“巨集 IDE”然後執行巨集即可。執行巨集之後,將會生成 Visual Studio 的鍵盤快捷方式參考資訊。開啟包含輸出內容的 C:/demo/Shortcuts.html 檔案。“圖 1”顯示了部分輸出內容。如果方便就將它打印出來,貼在計算機附近,以便學習新的鍵盤快捷方式。

.

圖 1. Visual Studio 2005 鍵盤快捷方式列表(部分)

自定義鍵盤快捷方式

如果某個您喜歡使用的鍵盤快捷方式預設沒有設定,您總是可以通過單擊“工具”>“選項...”>“環境”>“鍵盤”來自定義這個快捷方式(參見圖 2)。不過,如果要在您的使用環境中新增多個鍵盤快捷方式,則可以通過編輯自動儲存的設定檔案直接新增這些快捷方式。可以通過以下步驟來實現:

.

圖 2. “選項”對話方塊 - 自定義“鍵盤快捷方式”

步驟 1:匯出當前的“鍵盤快捷方式”。轉到“工具”>“匯入和匯出設定. . .”,啟動“匯入/匯出設定嚮導”。選擇“匯出選定的環境設定”,單擊“下一步”。單擊“所有設定”,取消選中所有複選框,然後展開“選項”、“環境”節點,選擇“鍵盤”複選框(圖 3)。單擊“下一步”轉到嚮導的最後一頁。將新的設定檔案命名為“MyKeyboardShorcuts.vssettings”,路徑使用預設目錄(圖 4)。單擊“完成”。

.

圖 3. 只選擇匯出“鍵盤”設定類別

.

圖 4. 將設定檔案重新命名為 MyKeyboardShortcuts.vssettings

步驟 2:開啟並編輯設定檔案。該檔案的路徑為 My Documents/Visual Studio 2005/Settings/MyKeyboardShortcuts.vssettings。Visual Studio 的設定檔案就是 XML 格式的檔案,您可以使用任何編輯器開啟該檔案。我推薦使用 Visual Studio 來開啟該檔案,因為這樣可以使用 Visual Studio 中的為語法標註顏色的功能以及文件格式設定功能。開啟檔案之後,按下 Ctrl+K、Ctrl+D,讓 Visual Studio 對其自動進行格式設定。然後,查詢 <UserShortcuts> 標籤。在此 XML 元素內部,您可以新增自己的一列快捷方式。下面的“列表 2”顯示了一個示例。

...<UserShortcuts>   <Shortcut Command="View.CommandWindow" Scope="Global">Ctrl+W, Ctrl+C</Shortcut>   <Shortcut Command="View.SolutionExplorer" Scope="Global">Ctrl+W, Ctrl+S</Shortcut>   <Shortcut Command="View.ErrorList" Scope="Global">Ctrl+W, Ctrl+E</Shortcut>   <Shortcut Command="View.TaskList" Scope="Global">Ctrl+W, Ctrl+T</Shortcut>   <Shortcut Command="View.Output" Scope="Global">Ctrl+W, Ctrl+O</Shortcut></UserShortcuts>...

列表 2. 直接在設定檔案中新增“鍵盤快捷方式”

此處的 XML 是非常容易理解的。只要為要新增的每個快捷方式設定一個 <Shortcut> 元素即可。將快捷方式本身指定為該元素的內容,要將 Shift、Ctrl 和 Alt 等修改鍵結合起來使用,可以使用“+”字元將它們串連起來(例如,Ctrl+Alt+J)。在“Command”屬性中為快捷方式所要繫結的命令指定規範的命令名稱。“Scope”屬性總是為“Global”,因此這裡不再贅述。此操作過程中最困難的部分可能就是確定特定命令的規範名稱。特定命令的規範名稱的格式為:頂級選單名稱加“.”字元再加命令名稱,採用“駝峰式”大小寫格式,不包含任何空格。

添加了所有快捷方式之後,儲存該檔案。

步驟 3:匯入設定檔案。既然已在設定檔案中添加了快捷方式,現在就可以將檔案導回到您的使用環境中。當然,也可以將您的設定檔案分享給其他人員使用。再次啟動“匯入和匯出設定嚮導”,但這次選擇“匯入選定的環境設定”;單擊“下一步”。選擇“否,僅匯入新設定,改寫我的當前設定”,然後單擊“下一步”。選擇“我的設定”資料夾下的“MyKeyboardShortcuts.vssettings”,然後單擊“下一步”。使用預設選擇,單擊“完成”。

在工具提示中顯示快捷方式

您可以實際指定環境在提示資訊中顯示快捷方式,將滑鼠移到工具欄命令的上方時可顯示相應的提示資訊。轉到“工具”>“自定義. . .”,確保選中“在螢幕提示中顯示快捷鍵”選項。

.

圖 5. 在工具提示中啟動快捷鍵顯示

返回頁首返回頁首

Window 佈局選擇器

Visual Studio 是一個功能強大的開發環境,它使用許多不同的工具視窗用於不同的任務和目的。對於 VS 2005 中新提供的 Team System 功能而言尤其如此。我們曾經聽到許多使用者反映,如果有一種可以在不同的窗口布局之間快速切換以適合當前要處理的任務的方式,會非常有用。實際上您可以在 VS 2005 內部自己建立這項功能,不過,這需要執行幾個步驟。

步驟 1. 建立設定檔案。Visual Studio 2005 中有一項可以匯入/匯出環境設定的新功能。實際上,可以將可對環境進行的所有自定義設定匯出到一個檔案中,這樣就可以將這些自定義設定與其他使用者分享使用、將其匯入到其他計算機,或者作為備份來儲存。可以匯入/匯出的設定包括:窗口布局、鍵盤快捷方式、選單自定義設定、字型與顏色以及“選項”對話方塊(“工具”>“選項. . .”)中實際存在的所有內容。可以根據需要,隨時匯出所有環境設定,也可以只匯出其中的一部分。

在建立我們的“視窗選擇器”時,第一個步驟是為每個想要使用的窗口布局建立單獨的設定檔案。在此示例中,我要建立 3 個設定檔案,分別對應 3 個我想要使用的窗口布局:CodeWriting、CodeBrowsing 和 FormsDesign。

第一步就是按照您編寫程式碼時喜歡的方式來佈置窗口布局。就我而言,我喜歡將所有可見的工具視窗設定為自動隱藏狀態以最大化編碼區域。圖 6 顯示了我是如何為這個窗口布局來佈置工具視窗的,不過您可以隨意將其調整為您喜歡的方式。然後,轉到“工具”>“匯入和匯出設定”,啟動“匯入和匯出設定嚮導”。選擇“匯出選定的環境設定”,單擊“下一步”。只選擇窗口布局複選框,然後單擊“下一步”。將設定命名為“CodeWritingWinLayout.vssettings”,然後單擊“完成”。現在,您已經建立了您所需的三個設定檔案中的第一個檔案。重複以上這些步驟,建立餘下的兩個設定檔案。顯然,您需要更改窗口布局並將檔案命名為其他名稱。我已將我的設定檔案命名為“CodeBrowsingWinLayout.vssettings”和“FormsDesignWinLayout.vssettings”。

.

圖 6. 用於編碼的窗口布局

步驟 2. 建立巨集來匯入設定檔案。在建立設定檔案之後,您需要建立 3 個巨集 - 分別用於匯入每個設定檔案。從下面的“列表 3”可以看出,這個程式碼並不複雜。

Imports EnvDTEImports EnvDTE80Imports System.DiagnosticsImports System.IOPublic Module Module1  Public Sub ImportWinLayoutCodeWriting()    DTE.ExecuteCommand("Tools.ImportandExportSettings",    "-import:c:/demo/settings/CodeWritingWinLayout.vssettings")  End Sub  Public Sub ImportWinLayoutCodeBrowsing()    DTE.ExecuteCommand("Tools.ImportandExportSettings",    "-import:c:/demo/settings/CodeBrowsingWinLayout.vssettings")  End Sub  Public Sub ImportWinLayoutFormsDesign()    DTE.ExecuteCommand("Tools.ImportandExportSettings",    "-import:c:/demo/settings/FormsDesignWinLayout.vssettings")End SubEnd Module

列表 3. 用於匯入設定檔案的巨集程式碼

步驟 3. 在工具欄中新增按鈕。 現在可以建立更改窗口布局的實際按鈕。單擊“工具”>“自定義. . .”,單擊“命令”選項卡。從“類別”列表框中選擇“巨集”,然後在“命令”列表中向下滾動,找到剛才編寫的三個巨集。這些巨集的名稱應該為 MyMacros.Module1.ImportWinLayoutCodeWriting、MyMacros.Module1.ImportWinLayoutCodeBrowsing 和 MyMacros.Module1.ImportWinLayoutFormsDesign(參見圖 7)。單擊每個命令,將其拖動到 Visual Studio 工具欄上。您現在需要在工具欄中右鍵單擊新放置的命令,將這些命令的名稱更改為更短的名稱。

.

圖 7. 使用“自定義”對話方塊將巨集放置到工具欄上。

關閉“自定義”對話方塊,儲存您的自定義設定。您已經建立了您自己的“窗口布局”選擇器。單擊工具欄上的這些新按鈕,嘗試使用這些按鈕。您甚至可以轉到“工具”>“選項. . .”>“環境”>“鍵盤”頁面為這些命令指定鍵盤快捷方式。

返回頁首返回頁首

程式碼段

程式碼段是在 Visual Studio 2005 中引入的最能體現效率的特點之一。它可以避免單調乏味的輸入過程(例如鍵入 for 迴圈),使您能夠快速插入程式碼段,它還可以提供可完成特定任務(如通過網路傳送資料)的模板。大部分內建的 C# 程式碼段都屬於第一種型別 - 這些程式碼段可以幫助您將重複輸入降到最低,而很大一部分內建的 VB 程式碼段都屬於第二種型別 - 使用這些程式碼段可以更容易地編寫執行特定任務的程式碼。

有兩種插入程式碼段的方式。您可以在程式碼編輯器中鍵入程式碼段的別名,然後按兩次 Tab 鍵(對於 VB 只需按一次 Tab 鍵)即刻插入程式碼段。在插入程式碼段之後,您可以通過按 Tab 鍵和 Shift+Tab 鍵跳到程式碼段的不同區域。這允許您快速更改需要修改的程式碼部分。請注意:在 C# 中,程式碼段別名也具有 IntelliSense。您可以在 IntelliSense 列表中通過其程式碼段圖示指明某一項為程式碼段。

.

圖 8. IntelliSense 完全支援程式碼段

如果忘記了程式碼段的別名,還可以按“Ctrl+K、Ctrl+X”在程式碼編輯器內插入別名,也可單擊滑鼠右鍵,然後選擇“插入程式碼段...”。這會顯示程式碼段選取器,使用它可以瀏覽適用於當前程式語言的所有程式碼段以及選擇要插入的程式碼段。這種插入程式碼段的方法對於 C# 和 Visual Basic 均有效。對於 Visual Basic 使用者,還可以有另一種插入程式碼段的方式:您可以鍵入程式碼段別名的前幾個字母,後跟“?”,然後按 Tab 鍵。Visual Studio 會顯示一個按字母排序的列表,其中包含與突出顯示的內容最為匹配的所有程式碼段的別名。此功能僅適用於 Visual Basic 使用者。

.

圖 9. 在 C# 中插入程式碼段

從個人角度將,最令人興奮的程式碼段功能部分是,您可以為個人使用而建立自己的程式碼段,也可以將其分享給其他同行使用。當然,您也可以下載其他開發人員建立好的程式碼段。

在 Visual Studio 內部非常容易就可以建立您自己的程式碼段。我將通過一個示例說明如何操作。我經常會編寫一些應急的實用程式來幫助我完成工作。其中的許多實用程式都有通用的模式:開啟某個檔案,執行一些處理,然後關閉該檔案。以下是我的程式碼段的建立步驟。

步驟 1: 建立 XML 檔案。每個程式碼段都包含在一個 XML 檔案中。在 Visual Studio 內部,只要轉到“檔案”>“新建. . .”>“檔案. . .”,然後選擇“XML 檔案”型別即可。

.

圖 10. 建立新的 XML 檔案

步驟 2:定義程式碼段。如果有足夠的興趣,甚至還有一個可建立程式碼段的程式碼段。只要在該檔案的第二行按下 Ctrl+K、Ctrl+X,選擇“Snippet”程式碼段,就會自動為您插入一個程式碼段檔案的模板。

.

圖 11. 使用 XML 程式碼段來建立其他程式碼段

標題、作者、快捷鍵和描述欄位這些內容不言自明,我就不再具體說明了。<Snippet> 標籤中的內容值得討論,我下面的例子可以對此給出最好的解釋。

實際上,您將所有程式碼放在了 <![CDATA[...]]> 標籤之內,而該標籤是在 </Code> 標籤的內部。對於那些希望使用者可以輕鬆替換的欄位,您可以在這些欄位兩邊放置一對“$”字元。在我的示例中,我設定了三個我的程式碼段使用者可以輕鬆替換的引數:StrmReader、FilePath 和 Line。這三個引數在 CDATA 部分的內部使用,每個引數兩側都有一對“$”字元。此外,每個引數也必須在 <Declarations> 元素中進行定義。為每個引數指定一個 ID 和一個預設值(可選)。

敏銳的讀者會注意到,在我的程式碼段內部還有另外一個我沒有定義的引數: $end$。這是一個特殊引數,用於指定使用者在程式碼段欄位中填寫完內容並按下 Enter 鍵後游標所在的位置。還有一個我在此處沒有列出的特殊引數:$selected$。$selected$ 引數只對 SurroundsWith 型別的程式碼段有意義。它用於定義在使用“Surround With...”插入此程式碼段時所選的程式碼段的放置位置。

<?xml version="1.0" encoding="utf-8"?><CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  <Header>    <Title>File Processing</Title>    <Author>James Lau</Author>    <Shortcut>fp</Shortcut>    <Description>Opens a file, does some processing, and then closes the file.</Description>    <SnippetTypes>      <SnippetType>SurroundsWith</SnippetType>      <SnippetType>Expansion</SnippetType>    </SnippetTypes>  </Header>  <Snippet>    <Declarations>      <Literal>        <ID>StrmReader</ID>        <Default>strmReader</Default>      </Literal>      <Literal>        <ID>FilePath</ID>        <Default>fPath</Default>      </Literal>      <Literal>        <ID>Line</ID>        <Default>strLine</Default>      </Literal>    </Declarations>    <Code Language="CSharp">      <![CDATA[            StreamReader $StrmReader$ = null;   try   {      $StrmReader$ = new StreamReader($FilePath$);      string $Line$;      while (($Line$ = $StrmReader$.ReadLine()) != null)      {         // Perform some processing         $selected$         $end$      }   }   catch (IOException ioex)   {      // Handle exception   }   finally   {      $StrmReader$.Close();   }    ]]>    </Code>  </Snippet></CodeSnippet>

列表 4. 程式碼段內容示例

返回頁首返回頁首

自定義 Visual Studio 起始頁

在 Visual Studio 2005 中,新的“起始頁”不只是包含可以提供有關 MSDN 新聞的最新資訊的實時 RSS 源。如果希望在“起始頁”上閱讀某些其他的 RSS 源,可以通過選擇“工具”、“選項. . .”、“環境”,然後選擇“啟動”頁面(在此可以編輯“起始頁新聞頻道”下面的 URL),自定義 RSS 新聞頻道。如果希望在每次啟動 Visual Studio 時不要自動顯示“起始頁”,您還可以通過在同一選項頁面中選擇“啟動時”下面的“顯示空環境”來更改此行為。

返回頁首返回頁首

團隊設定

Visual Studio 2005 中另外一個少有人知的新功能是“團隊設定”。如果您在團隊環境下工作(大部分情況下是如此),那麼“團隊設定”可以幫助您強制執行團隊編碼規則或者更快地設定 Visual Studio。

讓我們假定您要在團隊內部強制執行一組基本的程式碼格式規則。您可以只建立設定檔案,讓您的團隊成員指向該檔案,而不必指定這些規則的內容並讓每個團隊成員自定義其 IDE 選項以遵從這些規則。無論何時更新團隊設定檔案,該檔案都會在使用者下次啟動 Visual Studio 時自動匯入來改寫已有的設定。以下步驟說明了如何使用這個強大的功能。

步驟 1:建立設定檔案。您可以使用“團隊設定”來強制執行任何您需要的 IDE 自定義設定。開發人員使用“團隊設定”最常進行的設定應該是程式碼格式設定。不過,您也可以將此功能用於任何可以匯出的 Visual Studio 設定,如“字型與顏色”、“SourceSafe 設定”、“鍵盤快捷方式”和“選單自定義”,等等。只要在 Visual Studio 內部自定義所需的設定,然後使用“工具”>“匯入/匯出設定. . .”將其匯入到已知位置即可。請僅匯入要與團隊享的那組設定,這一點很重要。

步驟 2:在 UNC 路徑中放置設定檔案。將步驟 1 中匯出的設定檔案複製到您的團隊成員可以訪問的網路路徑中。在我的計算機上,我在 //jameslau/public/teamsettings.settings 路徑下共享了我的團隊設定檔案。

步驟 3:更改“團隊設定”路徑。讓團隊成員更改他們的“團隊設定”路徑,使其指向您的團隊設定檔案。他們可以轉到“工具”>“選項. . .”>“環境”>“匯入和匯出設定”來完成此操作。選擇(選中)“使用團隊設定檔案”複選框,指定團隊設定檔案的路徑。

.

圖 12. 用於更改“團隊設定”路徑的“選項”對話方塊

返回頁首返回頁首

/resetuserdata 引數

我要與大家分享的最後一個技巧與 /resetuserdata 引數有關。如果 Visual Studio 在執行時被損壞,且無法從損壞狀態進行恢復,您可以使用此引數將 Visual Studio 重置到其使用之初的狀態。這些問題的例子可能包括:窗口布局檔案被破壞、選單自定義檔案被破壞,或者鍵盤快捷方式檔案被破壞。免責宣告:如果使用此引數,您將丟失所有的環境設定和自定義設定。出於這個原因,Microsoft 不公開支援使用此引數,而且也沒有將這個引數公之於眾(如果在命令提示行中鍵入 devenv.exe /?,您不會看到顯示此引數)。如果遇到環境方面的問題,應該將這個方法作為不得已而為之的辦法,並且確保在使用此引數前,已通過匯出環境設定對其進行了備份。

要使用此引數,請執行以下操作:

1.

關閉所有 Visual Studio 2005 例項。

2.

單擊“開始”,選擇“執行...”。

3.

鍵入“devenv.exe /resetuserdata”。

此命令會執行幾分鐘時間,與此同時,Visual Studio 清除設定並將其自身重置到其最初的狀態。此時,您可以開啟“工作管理員”來檢查 devenv.exe 程序是否仍在執行。在結束執行後,可以重新啟動 Visual Studio。此時會再次出現首次啟動對話方塊,就像在計算機上第一次執行 Visual Studio 一樣。