Joh*_*dol 28 command-line build-process visual-studio
这可能很容易,但我遇到困难:当我在Visual Studio中构建解决方案时 - 如何为当前构建命令提取确切的cmd行,以便能够从VisualStudio控制台执行相同的构建?
在输出窗口中,我可以看到解决方案构建命令中的单个项目,但不能看到整个解决方案中的单个项目.
我在VS2005上.
任何帮助,将不胜感激
ice*_*ava 25
导航到"程序"菜单>"Microsoft Visual Studio 2005">"Visual Studio工具">" Visual Studio 2005命令提示符".
此命令提示符具有为命令行会话设置的所有必需的.NET环境变量.您可以将目录更改为解决方案目录(例如c:\ projects\mySolution)并运行
Msbuild.exe mySolution.sln
Run Code Online (Sandbox Code Playgroud)
您可以使用msbuild /查看各种可用选项?
Msbuild位于C:\ Windows\Microsoft.NET\Framework\v2.0.50727
在msbuild /?之上 快速选项检查,您可以参考MSBuild命令行参考页面以获取有关其用法的更多说明.以及如何在解决方案中构建特定目标.
ken*_*nny 16
除了@JohnIdol正确说的,我发现你需要设置一个VS环境变量.我没有在我面前的批处理文件的名称,但您可以修改或"我认为"使用它.它在某个地方的VS程序文件树中.此外,我记得你不想在标准的shell中,而是在一些路径等的.NET安装shell中.稍后当我在带有VS的Windows PC上时,我会添加细节.
编辑:提到的批处理文件是ProgFiles菜单中的快捷方式.以下是其属性的详细信息.
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat""x86"
Run Code Online (Sandbox Code Playgroud)
这是我的批处理文件,使用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
Run Code Online (Sandbox Code Playgroud)
小智 7
对于VS .NET 2003,您可以使用devenv.exe从命令行构建解决方案/项目.
devenv solutionfile.sln /build solutionconfig
Run Code Online (Sandbox Code Playgroud)
例如批处理文件中的用法:
call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
devenv Tools.sln /build "Release"
Run Code Online (Sandbox Code Playgroud)
如果要查看VS提供的确切命令行(而不是解决),则可以尝试使用自己的控制台应用程序替换MSBuild.exe,该控制台应用程序将所有参数打印到文件中。
您也可以写出提供的所有环境变量,以检查VS在后台提供了哪些环境变量。
| 归档时间: |
|
| 查看次数: |
62192 次 |
| 最近记录: |