我正在尝试使用Visual Studio的 Devenv.exe 创建一个用于构建不同配置项目的应用程序(.exe)。我尝试创建一个批处理文件,如下所示:
cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE"
devenv "%PROJECT_PATH%\MySolution.sln" /Rebuild "Release" /project "MyProject" /out "%PROJECT_PATH%\AutoBuildErrorLog.txt"
其中 PROJECT_PATH 是保存 MySolution.sln 的目录。
MyProject 是 MySolution 解决方案
下的项目以上批处理文件正常运行并给出预期结果。即,MyProject正在成功建设。
现在我试图通过exe应用程序运行上面的命令。我试着调用命令如下:
const char devncmd[] = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/devenv.exe";
const char slncmd[] = "\"C:/Solution Folder with spaces in folder name/MySolution.sln\"";
const char rebuildCmd[] = "/Rebuild";
const char releasecfg[] = "Release";
const char projectcmd[] = "/project";
const char projectnamecmd[] = "MyProject";
const char outcmd[] = "/out";
const char outName[] = "\"C:/Solution Folder with spaces in folder name/AutoBuildErrorLog.txt\"";
int rc = _spawnlp(_P_WAIT, devncmd, slncmd,
rebuildCmd, releasecfg,
projectcmd, projectnamecmd,
outcmd, outName, NULL);
在运行上面的代码时,我收到了以下错误消息。
以上消息使我确信DevEnv.exe能够执行。
接下来,我尝试更改解决方案路径名称(slncmd []),如下所示:
const char slncmd[] = "C:/Solution Folder with spaces in folder name/MySolution.sln";
Devenv运行没有任何错误,但在我的文件 AutoBuildErrorLog.txt 中,它表明构建路径存在问题。
The following files were specified on the command line:
Folder
Name/MySolution.sln
These files could not be found and will not be loaded.
任何人都可以指出可能出现的问题吗?
答案 0 :(得分:0)
如果您查看包含devenv.exe
的文件夹,您会注意到还有devenv.com
。
自动化Visual Studio for build时,请使用devenv.com
。批处理文件将自动使用.com
而不是.exe
(因为PATHEXT
变量),您会发现批处理文件未指定扩展名。
PS。而不是将路径硬编码到devenv
- 可以在安装时更改 - 使用VS120COMNTOOLS
环境变量构建路径(在批处理文件中:%VS120COMNTOOLS%..\ide\devenv
)。
答案 1 :(得分:0)
首先可以运行命令行检查,然后尝试使用C代码自动执行。
devenv project.sln /Clean
devenv project.sln /Rebuild Debug /Out "Test.log"