代码改变世界

【转载】Visual Studio 2005 IDE 技巧和窍门

2010-09-16 14:33  刺客之家  阅读(275)  评论(0编辑  收藏  举报

Visual Studio 2005 IDE 技巧和窍门

摘要: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 时更加惬意和高效。

键盘快捷方式

命令

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 一样。

本博客文章若非标记转载,均为原创,转载请注明出处~