首页 > 解决方案 > Visual Studio 2017:从命令行调用打开并构建解决方案

问题描述

在 Visual Studio 2017(或可能任何版本)中,我想在 IDE 中打开一个解决方案并从命令行开始构建它。如果解决方案已经打开,那么我只希望它开始构建(在 IDE 中)。

所以我可以像这样打开解决方案:

devenv solution.sln

或者我可以像这样构建它:

devenv /build solution.sln

还有这个:

devenv solution.sln /command ...

但是关于“命令”的文档很难找到......这个例子是一些用户制作的宏,但我假设还有其他内置命令?- 这可能有帮助...?

但我不确定如何:

有没有办法做到这一点?

我的用例是从 IBM Rhapsody 内部开始构建。在 MSVS2012 中,它支持执行这些任务的 Rhapsody 插件......但插件自 2013 年以来已被弃用,因此我可以通过重写其 make 文件内容让 Rhapsody 做我想做的事 - makefile 只会调用一个批处理文件脚本将执行我在这个问题中尝试执行的命令 - 然后完成 Rhapsody 插件 :)

标签: windowsvisual-studiocommand-linevisual-studio-2017

解决方案


实际上请注意:

  1. devenv solution.sln仅在新的 VS IDE 实例中打开解决方案。
  2. devenv /build solution.sln仅在不打开 VS IDE 的情况下构建自上次构建以来已更改的项目。要在解决方案中构建所有项目,请改用 /rebuild。

所以,如果你想

在 IDE 中打开一个解决方案并立即构建它

您应该连续运行这两个命令:

devenv solution.sln  
devenv /rebuild solution.sln

然后在第二次使用 /rebuild 来避免打开一个新的 VS 实例。

更新:您可以使 .cmd.bat文件包含以下内容:

tasklist /fi "imagename eq devenv.exe" /v | find /i "solution" 2>NUL
    if "%ERRORLEVEL%"=="0" goto solution_is_running
    if "%ERRORLEVEL%"=="1" goto solution_is_closed

:solution_is_running
devenv /rebuild solution.sln
goto:eof

:solution_is_closed
devenv solution.sln
devenv /rebuild solution.sln
goto:eof

或使用:

Taskkill /IM devenv.exe /F
devenv solution.sln  
devenv /rebuild solution.sln

推荐阅读