2010-04-28 20 views
8

Quiero construir una solución .NET usando un archivo por lotes.Cómo construir una solución usando el archivo por lotes

Soy consciente de que necesito utilizar siguiente declaración

devenv /build release "D:\Source Code\Source\test.sln" 

Pero no sé cómo crear archivo por lotes que ejecutará el símbolo del sistema VS.

+0

Su pregunta no está clara. ¿Qué has probado y cuál fue el resultado? – Will

+0

Si pongo el comando anterior en un archivo por lotes, se ejecutará en el símbolo del sistema de Windows. Pero quiero que se ejecute en el símbolo del sistema de VS. – Ram

Respuesta

14

El símbolo del sistema visual studio simplemente carga algunas variables y ajustes de ruta. Eso es todo lo que es, no es nada especialmente, no es un símbolo del sistema diferente, es el mismo símbolo del sistema con algunas configuraciones configuradas. Puede cargar los mismos ajustes en su propio archivo por lotes mediante la inclusión de la siguiente línea en la parte superior:

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 

(Obviamente, para diferentes versiones de VS, la ruta podría cambiar ligeramente)

Puede reemplazar " x86 "con la arquitectura adecuada para su máquina. Los valores permitidos son:

  • x 86
  • amd64
  • IA64
  • x86_amd64
  • x86_ia64

Dicho esto, ¿no le parece realmente necesita cargar todos los vars/paths todo lo que necesitas hacer es proporcionar la ruta completa al devenv.exe archivo. Usted podría intentar esto en su lugar:

"c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" /build release "D:\Source Code\Source\test.sln" 

(Una vez más, el camino va a cambiar para diferentes versiones de Visual Studio)

+0

Esto funcionará para mí.Pero cuando lo puse en un archivo bat y lo ejecuté, salió sin construir la solución. ¿Cómo puedo mantener abierta la ventana de comandos para mostrar el estado actual del proceso de compilación? – Ram

+0

@Ram Agregue el comando Pausa al final de su archivo por lotes y la ventana permanecerá abierta hasta que presione cualquier tecla. – Kildareflare

0

No estoy seguro si entiendo la pregunta.

Simplemente cree un archivo llamado test.bat, agregue la declaración que ha escrito arriba a ese archivo y luego simplemente abra un símbolo del sistema VS y escriba [pathtobatfile] \ test.bat.

+0

, bueno, no quiero ir al símbolo del sistema VS. Como es un archivo por lotes, quiero que se ejecute en el símbolo del sistema de VS cuando hago clic en él. – Ram

+0

Luego, como dice Simon, todo lo que necesita hacer es agregar una llamada al archivo de proceso por lotes ejecutado por el acceso directo de línea de VS en la parte superior del archivo por lotes y luego todo lo que necesita es crear un acceso directo a ese archivo por lotes. –

4

El archivo por lotes de ejemplo a continuación detectará el directorio que contiene devenv.exe instalación buscándola en el registro (para VS2005, se puede adaptar fácilmente para otras versiones) y ejecuta devenv.exe. Es esto lo que estás buscando?

@echo off 

CALL :GETVS2005DIR 
IF "%VS2005DIR%" == "" GOTO NOVS2005 
IF NOT EXIST "%VS2005DIR%" GOTO NOVS2005 

%VS2005DIR%devenv.exe ... 
GOTO :EOF 

:GETVS2005DIR 
for /f "tokens=1,2* delims= " %%i in ('reg query HKLM\Software\Microsoft\VisualStudio\8.0 /v InstallDir') do set VS2005DIR=%%k 
GOTO :EOF 

:NOVS2005 
echo. 
echo Visual Studio 2005 installation directory not found 
echo. 
GOTO :EOF 

Tenga en cuenta también que el tiempo que su solución no contiene un proyecto de instalación, que normalmente será capaz de construir utilizando MSBUILD, que es más simple y trabaja en una máquina sin Visual Studio instalado:

REM Check MsBuild is available (this is for V2.0, use a different version if desired) 
SET MSBUILD=%WINDIR%\Microsoft.NET\Framework\v2.0.50727\MsBuild.exe 
IF NOT EXIST "%MSBUILD%" GOTO NOMSB 

"%MSBUILD%" MySolution.sln /t:rebuild /p:configuration=Debug /verbosity:quiet 
GOTO :EOF 

:NOMSB 
echo. 
echo MSBUILD not found 
echo. 
GOTO :EOF 
Cuestiones relacionadas