65.9K
CodeProject 正在变化。 阅读更多。
Home

如何从 Windows Explorer Shell 调用 Visual Studio

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.47/5 (7投票s)

2009年12月7日

CPOL

4分钟阅读

viewsIcon

39405

本文展示了如何将 Visual Studio 集成到 Windows 资源管理器外壳程序中,并在不打开 IDE 的情况下调用 Visual Studio 命令。

引言

这是我的第一篇文章,所以我会从非常基础的内容开始。

本文适用的场景经常遇到。很多时候,我们需要在 Visual Studio 中构建一个解决方案或项目,但我们并不真正在乎看代码,所以我们不需要打开整个 IDE,这可能会浪费宝贵的时间。如果代码来自受信任的来源,或者是一段已知的代码(我们编写的),则可能发生这种情况。或者,我们只需要构建它!仅此而已。

我经常使用这个简单的技巧来清理我机器上的所有东西,并尝试从头开始构建我的解决方案,看看是否一切正常,然后再将任何代码提交到我们的 TFS 代码存储库。

背景

只需对 Windows 命令行解释器有一些基本了解。

分析 Visual Studio 提示

在 Visual Studio 中构建解决方案时,后台并没有什么“魔力”发生。实际上,是 devenv.exe 完成了所有工作,它只需要知道项目或解决方案文件的路径。这也可以通过打开 Visual Studio 命令提示符来完成,您可以在“开始”菜单的“工具”子文件夹中找到它。您会注意到,此菜单项只是指向命令行解释器的链接。

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86

其中

  • %comspec% 是一个 Windows 环境变量,指向命令行解释器 (cmd.exe)。
  • /kcmd.exe 的一个参数,它告诉它执行字符串指定的命令并保持打开状态。
  • vcvarsall.bat 的路径被引用了两次,既是为了保留空格,也是为了限制传递给命令行解释器的参数的作用域。
  • 相反,x86vcvarsall.bat 脚本文件的参数。

如果您以前使用过此工具,您就会知道它设置了正确的环境变量,以便从控制台使用 Visual Studio,因此您可以从这里开始,通过输入

devenv

devenv "C:\solution.sln"

来打开 Visual Studio 中的解决方案文件,甚至

devenv "C:\solution.sln" /[Build|Clean|Rebuild]

分别构建、清理或重新构建解决方案文件。

使用代码

现在是时候使用我们迄今为止所见的内容,并将此命令包装成一个菜单项,使我们能够直接从 Windows 资源管理器的上下文菜单中使用 Visual Studio。

您肯定知道,您可以自定义特定文件类型的上下文菜单中显示的菜单项。让我们从创建一个新的菜单项开始,方法是单击 Windows 资源管理器工具栏中的“工具”>“文件夹选项”菜单项。在出现的对话框中,转到“文件类型”选项卡,然后查找 SLN (Microsoft Visual Studio) 文件扩展名。单击“高级”,然后单击“新建”按钮。现在,我们可以插入一个新的菜单项,称为构建解决方案,并带有关联的命令,该命令必须是

cmd.exe /k "call "C:\Program Files\Microsoft Visual 
   Studio 9.0\VC\vcvarsall.bat" & devenv "%1" /Build"

有几点值得注意

  • 此命令行与 Visual Studio 命令提示符链接用于准备命令行解释器的命令不同。它使用了 %comspec% 系统变量(还记得吗?)而不是直接调用 cmd.exe 可执行文件。原因是您不能在菜单项命令行中使用 %comspec%
  • vcvarsall.bat 脚本不是在新打开的命令行解释器实例中直接执行,而是通过 call 命令执行。这允许在单个命令行解释器实例中组合命令。此脚本文件的路径可能与示例中的不同。请在您的 Visual Studio 安装文件夹中查找。
  • vcvarsall.bat 脚本在没有参数的情况下调用。如果未提供参数,它将自动使用 x86 开关。
  • & 用于连接命令。
  • %1 是当前文件名及其完整路径。已用引号括起来以保留空格。

关注点

您现在可以尽情尝试命令行解释器和 devenv 提供的任何参数组合。

例如,我使用的是

cmd.exe /c "echo === Building "%1" === & call 
  "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" & 
  devenv "%1" /Build & pause"

此命令将

  1. 打印一个标题,显示当前操作和文件名 (echo Building %1)。
  2. 准备命令行解释器以使用 Visual Studio (call ... )。
  3. 构建解决方案 (devenv %1 /Build)。
  4. 等待按任意键 (pause)。
  5. 退出 (由于传递给 cmd.exe/c 参数)。

您可以插入三个新的菜单项,它们使用 devenv 可用的三个主要参数:/Build/Clean/Rebuild,这样您就可以从上下文菜单执行这三个操作。

此外,如果您愿意,可以删除 pause 命令并将 /C 参数更改为 /K:这将使 Visual Studio 控制台在操作完成后保持打开状态。如果您想稍后做其他事情,这将非常方便。

历史

  • 2009/7/12:首次发布。
© . All rights reserved.