2011-03-02 11 views
9

Mientras que el 'no-log' construir parece funcionar sin problemas con algo como¿Cómo construye un .csproj desde la línea de comandos que tiene un registro escrito en una ubicación especificada?

"c:\Program Files\Microsoft Visual Studio 9.0\Common7\ide\VCSExpress" Project1.csproj /build

la siguiente falla:

"c:\Program Files\Microsoft Visual Studio 9.0\Common7\ide\VCSExpress" Project1.csproj /build /Log=log.txt

que muestra una ventana con este texto:

Missing switch argument. Configuration name required for /build switch.

Use: vcsexpress [solutionfile | projectfile | anyfile.ext] [switches]

The first argument for vcsexpress is usually a solution file or project file. You can also use any other file as the first argument if you want to have the file open automatically in an editor. When you enter a project file, the IDE looks for an .sln file with the same base name as the project file in the parent directory for the project file. If no such .sln file exists, then the IDE looks for a single .sln file that references the project. If no such single .sln file exists, then the IDE creates an unsaved solution with a default .sln file name that has the same base name as the project file.

Command line builds: vcsexpress solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ] Available command line switches:

/Log Logs IDE activity to the specified file for troubleshooting. /ResetSettings Restores the IDE's default settings, optionally resets to the specified VSSettings file. /SafeMode Launches the IDE in safe mode loading minimal windows.

Product-specific switches:

To attach the debugger from the command line, use: VsJITDebugger.exe -p

[ Estoy usando Visual Studio 2008 Express]

Por lo tanto, las preguntas son:

  • ¿Hay una manera de garantizar que el archivo de registro se escribe en alguna parte?

  • ¿O se supone que el conmutador /Log se usa cuando el IDE se ejecuta en modo GUI? Si es así, ¿hay soluciones?

+0

¿Por qué no usa MSBuild para construir? –

+0

@Fyodor Soikin En realidad, basta con tener un registro escrito probablemente sea suficiente (estoy haciendo solo una pequeña y sucia automatización a la vez). – mlvljr

+0

No estoy familiarizado con el producto Express, pero cuando quiero crear un registro con otras herramientas, simplemente redirijo la salida de la consola a un archivo. Esto supone, por supuesto, que hay algún resultado para redirigir. . . –

Respuesta

21

Bajo el capó, Visual Studio utiliza msbuild para todos es construir magia. Hasta donde yo sé, esto se aplica a las ediciones Express también.

Si aún no lo tiene, MSBuild es parte del .NET SDK.

Llamar a MSBuild tiene la ventaja de hacer la compilación directamente: llamar a VCSExpress solo introducirá sobrecarga.

Aquí está la línea de comandos de MSBuild que he utilizado:

msbuild.exe <solution> 
    /t:rebuild 
    /verbosity:quiet 
    /logger:FileLogger,Microsoft.Build.Engine;logfile=<filePath> 

debería funcionar de la misma con <project> en lugar de <solution>.

+0

Entonces, dado que tengo el (3.5?) SDK, ¿debo haber adquirido MSBuild también? (Una búsqueda rápida en "C: \ Archivos de programa" no revela nada .. - ¿Está de alguna manera oculto bajo un nombre diferente o smth?) – mlvljr

+2

Se encuentra en% SystemRoot% \ Framework \ v3.5 –

+2

Parece estar en '% SystemRoot% \ Microsoft.NET \ Framework \ v3.5', muchas gracias. – mlvljr

3

tiene que especificar la configuración después de la opción/construcción. Además, el archivo de registro ya debe existir, no crea uno desde cero. Por lo tanto:

copy con > log.txt 
^Z  // Type Ctrl+Z 
"c:\Program Files\Microsoft Visual Studio 9.0\Common7\ide\VCSExpress" Project1.csproj /build debug /log log.txt 
+0

(Por extraño que parezca) Esto todavía no hace nada en mi máquina. Incluso si el proyecto no se puede construir (se hace un dll referenciado (hecho deliberadamente) faltante), el archivo de registro está vacío. Pero de todos modos, gracias por la insinuación sobre la respuesta al 'Desafío del cambio de interruptor', hay que ser más cuidadoso y no suponer que le digan tonterías (como yo lo hice). – mlvljr

+0

La opción del archivo de registro es bastante rara. Tampoco registra mucho cuando lo intento. Esto no se usa a menudo con msbuild around. –

+0

¿El último MSBuild (el que viene con net 4 framework) permite construir proyectos net 3.5 con un compilador de red 3.5 fácilmente, por cierto? – mlvljr

2

En la ventana que aparece con toda la información ... le da el error: "Falta el argumento del modificador. Nombre de configuración requerido para/modificador de compilación". Y luego le da un montón de información que incluye esto: "Construye línea de comando: vcsexpress solutionfile.sln/build [solutionconfig]"

Solo quiere saber qué tipo de configuración de solución tiene, creo que ya sea "Release" o "Depurar". No estoy seguro de si vcsexpress tiene el "Administrador de configuración" o las páginas de propiedades de compilación de soluciones en el menú "Compilar" ... pero aquí es donde podría verificar dos veces su configuración actual. Consulte la "Configuración de la solución activa". Esta persona se encontró con esto, eche un vistazo a la captura de pantalla: MSBuild task configuration property

+0

Gracias, ..y bienvenido! – mlvljr

Cuestiones relacionadas