C++ 如何在MSVS Dev提示符之外运行MSBuild?
我最近一直忙着为我一直在设计的代码库编写适当的构建脚本,一直在为我的Windows构建正确编译MSBuild。我试图做的是从批处理脚本调用MSBuild,而不打开Visual Studio IDE,如果我不是在Visual Studio的开发人员命令提示符下执行它,它似乎会一直这样做。我的脚本很简单,只需调用C++ 如何在MSVS Dev提示符之外运行MSBuild?,c++,visual-studio,msbuild,visual-studio-2017,C++,Visual Studio,Msbuild,Visual Studio 2017,我最近一直忙着为我一直在设计的代码库编写适当的构建脚本,一直在为我的Windows构建正确编译MSBuild。我试图做的是从批处理脚本调用MSBuild,而不打开Visual Studio IDE,如果我不是在Visual Studio的开发人员命令提示符下执行它,它似乎会一直这样做。我的脚本很简单,只需调用 start C:\Program Files (x86)\...\MSBuild\15.0\Bin\MSBuild.exe <Project>.sln start C:\Pr
start C:\Program Files (x86)\...\MSBuild\15.0\Bin\MSBuild.exe <Project>.sln
start C:\Program Files(x86)\…\MSBuild\15.0\Bin\MSBuild.exe.sln
除了在它的末尾添加了一些其他的说明符之外,这就是我试图用来运行Windows构建的东西。这里的问题是,每当在VS Dev提示符之外调用此代码时,VisualStudio本身就会打开,而不是构建代码。我也找不到其他人在为同样的问题而挣扎,因为这似乎是MSBuild和VisualStudio集成的新问题。使用旧版本的MSBuild进行测试表明,我可以在Dev提示符之外按照自己的意愿构建项目。我可能缺少在Dev提示符中提供的一些环境变量,这些变量会改变可执行文件的行为吗?我似乎也找不到任何可以改变这一点的可执行说明符
也许我对这个问题采取了完全错误的方法?我的最终目标是为消费者提供一系列构建脚本,每个脚本针对他们所针对的平台,因此我肯定会接受其他解决方案。标准答案: 可以将devenv命令与/build命令行选项和项目文件名一起使用 或者,您可以运行一个vcvars*.bat脚本来设置必要的环境,然后使用msbuild 有关详细信息,请参阅 更新:与上面的官方建议相反,这是VS2017社区版适用于我的笔记本电脑的功能
msbuild My-project.vcxproj/p:Configuration=Release
mysolution.sln
”。执行它确实会启动VS。因此,您应该运行vcvars*.bat
脚本来设置必要的环境,然后使用msbuild。以下是我的批处理脚本,它已经运行了一段时间,您可以检查它:
@echo OFF
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
echo "Starting Build for all Projects with proposed changes"
MSBuild.exe "C:\Users\Admin\Source\repos\MyTestProject\MyTestProject.sln"
pause
echo "All builds completed."
以下是测试样本结果:
有关更多详细信息,请参阅。我尝试了列出的两种方法,但肯定是做错了什么。在MSBuild之前运行
调用…\vcvars64.bat
似乎没有效果,而启动…\devenv.exe Proj.sln/build Release
只会打开IDE,而不会生成代码。是否需要在生成服务器上运行该脚本安装了Visual Studio吗?@VladimirSerykh不,我要求构建平台安装了Visual Studio。为什么?看起来不正确。