gpt4 book ai didi

batch-file - 如何从命令行为 Visual Studio 创建简单的构建脚本?

转载 作者:行者123 更新时间:2023-12-04 13:26:41 24 4
gpt4 key购买 nike

我在多个目录中有很多 Visual Studio 项目解决方案(都带有 .sln 扩展名),我想编写一个简单的批处理脚本,该脚本将自动构建批处理文件中列出的所有解决方案。

我可以通过启动 Visual Studio Command Prompt 手动构建解决方案(这只是一个命令行实例,执行了以下命令
"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
之后我然后通过调用来构建项目:
devenv "path\to\solutionFile\projectSolution1.sln" /build Debug
这将构建项目(假设项目没有错误),然后我冲洗并重复我想要构建的每个项目。

然而当我在名为 build.bat 的批处理文件中有以下内容时:

"%comspec%" /k "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86  
echo "Starting Build for all Projects with proposed changes"
echo .
devenv "path\to\solutionFile\projectSolution2.sln" /build Debug
devenv "another\path\to\solutionFile\projectSolution3.sln" /build Debug
devenv "yet\another\path\to\solutionFile\projectSolution4.sln" /build Debug
echo "All builds completed."
pause

批处理脚本只执行第一行 ,然后等到我输入 exit在执行其他人之前。根据我对批处理文件和所有 StackOverflow 问题所做的研究,我对此的理解是 cmd实际上调用了自己的另一个实例来执行 vcvarsall.bat设置构建环境。

这不会像键入 exit 那样工作用 devenv 杀死该实例设置后的命令不能作为 devenv 执行不是可识别的命令(因为导出的路径将不再存在)

总之 ,如何在单个批处理文件中实现(将其余命令传递给定义了 devenv 的 cmd 实例)?我知道这不是一种强大的调用构建的方法(并且有很多工具可以做到这一点),但我只是希望有一个批处理脚本来自动化单独调用这些项目的手动工作。

最佳答案

找到了解决方案,正如 Jimmy 所指出的,需要删除环境变量 %comspec%因为那是 CMD.exe 的快捷方式。

但是,只需删除 "%comspec" /k将导致 CMD 实例打开,然后在一秒钟后退出。我之前也试过 call%comspec% 一起使用时创建单独的 CMD 实例的函数

解决办法是到添加 call在第一行前面,删除 %comspec
这是使事情按预期工作的最终批处理文件。

@echo OFF 
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
echo "Starting Build for all Projects with proposed changes"
echo .
devenv "path\to\solutionFile\projectSolution2.sln" /build Debug
devenv "another\path\to\solutionFile\projectSolution3.sln" /build Debug
devenv "yet\another\path\to\solutionFile\projectSolution4.sln" /build Debug
echo .
echo "All builds completed."
pause

请注意 @echo OFF告诉批处理脚本不要将命令(例如那个 call 命令)回显到终端中(但是仍然会显示错误和警告)

关于batch-file - 如何从命令行为 Visual Studio 创建简单的构建脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com