【问题标题】:How to get cmd line build command for VS solution?如何获取 VS 解决方案的命令行构建命令?
【发布时间】:2010-09-21 18:54:19
【问题描述】:

这可能很简单,但我遇到了困难:当我在 Visual Studio 中构建解决方案时 - 如何提取当前构建命令的确切 cmd 行以便能够从 VisualStudio 控制台执行相同的构建?

在输出窗口中,我可以看到解决方案构建命令中的单个项目,但看不到整个解决方案的项目。

我在 VS2005 上。

任何帮助将不胜感激

【问题讨论】:

    标签: visual-studio command-line build-process


    【解决方案1】:

    我只想感谢 Bejoy 的例子。我在设置预构建事件的解决方案重建方面遇到了很大的问题,因为他们删除了大部分宏,这对我有很大帮助。

    这是我基于 Bejoy 的解决方案(考虑到 .bat 文件位于作为解决方案一部分的 setup 根文件夹中):

    call "%VS100COMNTOOLS%\vsvars32.bat"
    
    devenv "%CD%\..\soulutionfile.sln" /build "Release"
    

    【讨论】:

      【解决方案2】:

      对于 VS .NET 2003,您可以使用 devenv.exe 从命令行构建解决方案/项目。

      devenv solutionfile.sln  /build solutionconfig
      

      例如批处理文件中的用法:

      call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
      
      devenv Tools.sln /build "Release"
      

      【讨论】:

      • 哈...令人惊奇的是,添加“call”关键字如何改变行为!哈哈,我犯了一个愚蠢的错误。谢谢!
      • 这也适用于 Visual Studio 2005,但 vsvars32.bat 文件位于:C:\Program Files\Microsoft Visual Studio 8\Common7\Tools
      【解决方案3】:

      导航到您的程序菜单 > Microsoft Visual Studio 2005 > Visual Studio 工具 > Visual Studio 2005 命令提示符

      此命令提示符为命令行会话设置了所有必要的 .NET 环境变量。您可以将目录更改为您的解决方案目录(例如 c:\projects\mySolution)并运行

      Msbuild.exe mySolution.sln
      

      您可以使用 msbuild /?

      查看各种可用选项

      Msbuild 位于 C:\Windows\Microsoft.NET\Framework\v2.0.50727

      在 msbuild /?快速选项检查,您可以参考MSBuild Command Line Reference 页面以获取有关其用法的更多说明。还有how to build specific targets in solutions

      【讨论】:

      【解决方案4】:

      如果您想查看 VS 提供的确切命令行(而不是解决它),那么您可以尝试将 MSBuild.exe 替换为您自己的控制台应用程序,该应用程序将所有参数打印到文件中。

      您还可以写出所有提供的环境变量,以检查 VS 在后台提供了哪些环境变量。

      【讨论】:

        【解决方案5】:

        除了@JohnIdol 所说的正确之外,我发现您需要设置一些 VS 环境变量。我面前没有批处理文件的名称,但是您可以修改或“我认为”使用它。它在某处的VS程序文件树中。另外,我记得您不想使用标准外壳,而是使用 .NET 设置外壳,用于某些路径等。稍后我会在使用 VS 的 Windows PC 时添加详细信息。

        编辑:提到的批处理文件是 ProgFiles 菜单中的快捷方式。这是其属性的详细信息。

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

        这是我的批处理文件,使用 MSBuild 调用解决方案。

        @echo off
        
        :: setup VS2005 command line build environment
        set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
        set VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC
        set FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
        set FrameworkVersion=v2.0.50727
        set FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
        set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
        set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Com
        mon7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft
         Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
        set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual
         Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
        set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC
        \PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
        set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB
        
        echo %0 %*
        echo %0 %* >> %MrB-LOG%
        cd
        if not ""=="%~dp1" pushd %~dp1
        cd
        if exist %~nx1 (
                echo VS2005 build of '%~nx1'.
                echo VS2005 build of '%~nx1'. >> %MrB-LOG%
                set MrB-BUILDLOG=%MrB-BASE%\%MrB-WORK%.%MrB-NICEDATE%.%MrB-NICETIME%.build-errors.log
                msbuild.exe %~nx1 /t:Rebuild /p:Configuration=Release > %MrB-BUILDLOG%
                findstr /r /c:"[1-9][0-9]* Error(s)" %MrB-BUILDLOG%
                if not errorlevel 1 (
                        echo ERROR: sending notification email for build errors in '%~nx1'.
                        echo ERROR: sending notification email for build errors in '%~nx1'. >> %MrB-LOG%
                        call mrb-email "Mr Build isn't happy about build errors in '%~nx1'" %MrB-BUILDLOG%
                ) else (
                        findstr /r /c:"[1-9][0-9]* Warning(s)" %MrB-BUILDLOG%
                        if not errorlevel 1 (
                                echo ERROR: sending notification email for build warnings in '%~nx1'.
                                echo ERROR: sending notification email for build warnings in '%~nx1'. >> %MrB-LOG%
                                call mrb-email "Mr Build isn't happy about build warnings in '%~nx1'" %MrB-BUILDLOG%
                        ) else (
                                echo Successful build of '%~nx1'.
                                echo Successful build of '%~nx1'. >> %MrB-LOG%
                        )
                )
        ) else (
                echo ERROR '%1' doesn't exist.
                echo ERROR '%1' doesn't exist. >> %MrB-LOG%
        )
        popd
        

        【讨论】:

          【解决方案6】:

          您可以从命令行启动 msbuild。 msbuild 理解 .sln(解决方案)文件。您可以从命令行指定 .sln 文件和构建配置(调试、发布等)。

          http://msdn.microsoft.com/en-us/library/ms164311.aspx
          这是有关您可以使用 msbuild 做什么的文档。 MSBuild.exe 与 .net 框架一起安装,而不是与 Visual Studio 一起安装。您可以在 c:\windows\microsoft.net\framework\v3.5(或 v2.0.50727)中找到它

          我搜索了一下,发现您也可以使用 devenv.exe /build 使用 Visual Studio 进行命令行构建,更多信息在这里:
          http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx

          【讨论】:

          • 谢谢 - 我一直在寻找一种获取特定命令行的方法(VS 在执行 msbuild 时使用的参数)
          猜你喜欢
          • 2016-01-09
          • 1970-01-01
          • 2017-08-02
          • 2015-07-31
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多