¿Qué significa "salió con el código 9009" durante esta compilación?

292

que significa este mensaje de error? ¿Qué podría hacer para corregir este problema?

AssemblyInfo.cs salió con el código 9009


El problema probablemente esté sucediendo como parte de un paso posterior a la compilación en una solución .NET en Visual Studio.

Anthony Mastrean
fuente
77
El OP no volverá para solucionar este problema, pero tiene muchas respuestas y mucho jugo de Google. Entonces, ¿vamos a tratar de inferir el problema?
Anthony Mastrean
13
La ventana de salida me dio una idea de este problema que también estaba teniendo
hanzolo

Respuestas:

241

¿Intentó dar la ruta completa del comando que se ejecuta en el comando de evento previo o posterior a la compilación?

Recibí el error 9009 debido a un xcopycomando de evento posterior a la compilación en Visual Studio 2008.

El comando "xcopy.exe /Y C:\projectpath\project.config C:\compilepath\"salió con el código 9009.

Pero en mi caso también fue intermitente. Es decir, el mensaje de error persiste hasta que se reinicia la computadora y desaparece después de un reinicio de la computadora. Está de vuelta después de algún problema relacionado de forma remota que aún no he descubierto.

Sin embargo, en mi caso, proporcionar el comando con su ruta completa resolvió el problema:

c:\windows\system32\xcopy.exe /Y C:\projectpath\project.config C:\compilepath\ 

En lugar de solo:

xcopy.exe /Y C:\projectpath\project.config C:\compilepath\

Si no tengo la ruta completa, se ejecuta durante un tiempo después de un reinicio y luego se detiene.

Además, como se menciona en los comentarios a esta publicación, si hay espacios en la ruta completa, entonces se necesitan comillas alrededor del comando . P.ej

"C:\The folder with spaces\ABCDEF\xcopy.exe" /Y C:\projectpath\project.config C:\compilepath\

Tenga en cuenta que este ejemplo con respecto a los espacios no se prueba.

thehhv
fuente
44
También recibí el error 9009 en los eventos posteriores a la compilación. La comprobación de la pestaña Salida en Visual Studio muestra el problema. En mi caso, estaba tratando de acceder a una ruta que contiene un espacio
Phil Hale
16
Tuve un problema similar a esto, pero fue el resultado de espacios en los nombres de las carpetas. Poner las rutas entre comillas ( "$(SolutionDir)packages\NUnit.2.5.10.11092\tools\"nunit-console "$(TargetPath)") lo resolvió.
Justin Morgan
1
Encontré un problema similar con un evento previo a la compilación que usaba un applet de Java para precompilar JS y CSS ... resulta que habíamos descuidado poner Java Runtime en el servidor.
Salsa
2
¿Es posible que la PATHvariable de entorno se pierda de alguna manera? Me sale este error de vez en cuando. Lo npm installconfiguré como un evento previo a la compilación, e inicialmente funciona (así que supongo que todo está configurado), pero luego al azar dejará de funcionar durante el día (en general, al cambiar entre soluciones / ramas, creo), y ya no funcionará. saber acerca npm. Reiniciar VS lo 'arregla' ... lo que significa que mi PATHestá configurado correctamente, pero parece que VS lo levanta. Si hubiera una manera de ver las variables env desde dentro de VS, podría confirmar esto.
jamiebarrow
2
Si desea proteger su compilación para que no se bloquee en diferentes entornos, digamos, las ventanas instaladas en D: \, use vars de entorno junto con la respuesta @thehhv:%systemroot%\System32\xcopy ...
Dorival
110

El código de error 9009 significa que no se encontró el archivo de error. Todas las razones subyacentes publicadas en las respuestas aquí son una buena inspiración para descubrir por qué, pero el error en sí mismo simplemente significa un mal camino.

Chris Moschini
fuente
1
Mi problema con el archivo no encontrado fue que la referencia en el archivo csproj era $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ tsc y tenía que ser $ (PROGRAMFILES) \ Microsoft SDKs \ TypeScript \ 1.0 \ tsc
RHAD
Gracias por responder la primera pregunta.
AntonK
Y significa no encontrar ningún archivo que el comando intentado pueda involucrar, por lo tanto, incluso cuando no pudo encontrar el comando en sí. Estaba usando delete en lugar de del. Eso también te daría un 9009.
Mircea Ion
84

Ocurre cuando faltan algunas configuraciones de entorno para usar las herramientas de Microsoft Visual Studio x86.
Por lo tanto, intente agregar como primer comando en los pasos posteriores a la compilación:

Para uso de Visual Studio 2010:

call "$(DevEnvDir)..\Tools\vsvars32.bat"

Como @FlorianKoch mencionó en los comentarios, para VS 2017 use:

call "$(DevEnvDir)..\Tools\VsDevCmd.bat"

Debe colocarse antes que cualquier otro comando.
Establecerá el entorno para usar las herramientas de Microsoft Visual Studio x86.

HRKoder
fuente
3
¿Podría ayudarme? ¿Dónde y en qué archivo debo agregar la línea call "$(DevEnvDir)..\Tools\vsvars32.bat"? Gracias
surfmuggle
2
Tuve que agregar una entrada a mi Pathvariable de entorno. Consulte la ventana Salida para obtener más información.
paqogomez
Precaución. Esto fallará en muchos servidores de compilación: blogs.clariusconsulting.net/kzu/devenvdir-considered-harmful
George Mauer
2
Gracias por la cadena de herramientas de x64 bits que resolví así: "$ (DevEnvDir) .. \ VC \ vcvarsall.bat"
codekiddy
1
Para VS 2017 el archivo es"$(DevEnvDir)..\Tools\VsDevCmd.bat"
Florian Koch
57

Lo más probable es que tenga espacio en su camino resultante.

Puede solucionar esto citando los caminos, permitiendo así espacios. Por ejemplo:

xcopy "$(SolutionDir)\Folder Name\File To Copy.ext" "$(TargetDir)" /R /Y /I
NileshChauhan
fuente
99
+1: este es exactamente el problema que estaba teniendo. Un comando en mi postcompilación funcionó cuando construí el proyecto localmente, pero falló cuando se compiló en el servidor de compilación. Acabo de colocar el comando entre comillas dobles para arreglarlo. Gracias.
sheikhjabootie
Entonces, ¿es razonable especular que el error 9009 es "archivo no encontrado" ...? Personalmente, creo que la pregunta "¿qué es el error 9009 de MSBuild?" debería estar perfectamente bien como una pregunta independiente, ¡pero dirigida a Microsoft!
The Dag
11

Tenía la misma variable después de cambiar la variable PATH de Variables ambientales en Win 7. Cambiar de nuevo a predeterminado ayudó.

Radomir Szewczyk
fuente
10

He tenido el error 9009 cuando mi script de evento posterior a la compilación intentaba ejecutar un archivo por lotes que no existía en la ruta especificada.

SleepyBoBos
fuente
6

Causé este error cuando redacté mi variable de entorno Path. Después de editar, agregué accidentalmente Path=al comienzo de la cadena de ruta. Con una variable de ruta con este formato incorrecto, no pude ejecutar XCopy en la línea de comando (no se encontró ningún comando o archivo), y Visual Studio se negó a ejecutar el paso posterior a la compilación, citando el error con el código 9009.

XCopy comúnmente reside en C: \ Windows \ System32. Una vez que la variable de entorno Path permitió que XCopy se resolviera en el indicador de DOS, Visual Studio creó bien mi solución.

GregC
fuente
6

Mi error exacto fue

The command "iscc /DConfigurationName=Debug "C:\Projects\Blahblahblah\setup.iss"" exited with code 9009.

9009 significa archivo no encontrado, pero en realidad no pudo encontrar la parte "iscc" del comando.

Lo arreglé agregando ";C:\Program Files\Inno Setup 5 (x86)\"a la variable de entorno del sistema"path"

scw
fuente
5

Si el script realmente hace lo que tiene que hacer y solo Visual Studio te está molestando sobre el error, simplemente puedes agregar:

exit 0

hasta el final de tu guión.

hakksor
fuente
55
ocultar cualquier error potencial no debería ser el camino a seguir
igelineau
1
Estoy de acuerdo en que esto no debe enmascararse
AltF4_
5

Revisar la ortografía. Estaba tratando de llamar a un ejecutable pero tenía el nombre mal escrito y me dio el exited with code 9009mensaje.

marca
fuente
1
A eso agregue una verificación de la existencia del ejecutable en su sistema.
Joshua Drake
5

En mi caso, primero tenía que "CD" (Cambiar directorio) al directorio apropiado, antes de llamar al comando, ya que el ejecutable al que estaba llamando estaba en el directorio de mi proyecto.

Ejemplo:

cd "$(SolutionDir)"
call "$(SolutionDir)build.bat"
Mathias Lykkegaard Lorenzen
fuente
1
Esto solucionó el problema para mí al ejecutar devenv.exe de Visual Studio, pero no necesita especificar la carpeta la segunda vez, solo llame a
build.bat
4

Otra variante:

hoy llamo al intérprete de python desde cron en win32 y tomo ExitCode (% ERRORLEVEL%) 9009, porque la cuenta del sistema utilizada por cron no tiene ruta al directorio de Python.

Denis Barmenkov
fuente
4

El problema en mi caso ocurrió cuando intenté usar un comando en la línea de comandos para el evento Post-build en mi Biblioteca de clase de prueba. Cuando usa comillas así:

"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit" "$(TargetPath)" 

o si estás usando la consola:

"$(SolutionDir)\packages\NUnit.Runners.2.6.2\tools\nunit-console" "$(TargetPath)"

Esto solucionó el problema para mí.

pdvries
fuente
4

La respuesta de tfa ha sido rechazada, pero en realidad puede causar este problema. Gracias a Hanzolo, busqué en la ventana de resultados y encontré lo siguiente:

3>'gulp' is not recognized as an internal or external command,
3>operable program or batch file.
3>D:\dev\<filepath>\Web.csproj(4,5): error MSB3073: The command "gulp clean" exited with code 9009.

Después de ejecutar npm install -g gulp, dejé de recibir este error. Si obtiene este error en Visual Studio, verifique la ventana de salida y vea si el problema es una variable de entorno no establecida.

R. Salisbury
fuente
3

Además, asegúrese de que no haya saltos de línea en la ventana de edición del evento posterior a la compilación en su proyecto. A veces, copiar el comando xcopy de la web cuando es de varias líneas y pegarlo en VS causará un problema.

jesse p
fuente
Aunque jesse hace un buen punto acerca de no tener saltos de línea en el medio de un comando xcopy, tenga en cuenta que en el caso general es válido tener saltos de línea en este campo; cada línea debe interpretarse como su propio comando.
RJFalconer
3

Agregué "> myFile.txt" al final de la línea en el paso previo a la compilación y luego inspeccioné el archivo para detectar el error real.

Philip
fuente
2

Para mí, el espacio en disco era bajo y se esperaba que los archivos que no podían escribirse estuvieran presentes más tarde. Otras respuestas mencionaron archivos faltantes (o archivos mal nombrados / referenciados incorrectamente por nombre), pero la causa raíz fue la falta de espacio en disco.

ErikE
fuente
2

Para mí sucedió después de actualizar los paquetes nuget de una versión de PostSharp a la siguiente en una gran solución (proyecto ~ 80). Tengo errores de compilación para proyectos que tienen comandos en eventos PreBuild.

'cmd' no se reconoce como un comando interno o externo, programa operativo o archivo por lotes. C: \ Archivos de programa (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1249,5): error MSB3073: El comando "cmd / c C: \ GitRepos \ main \ ServiceInterfaces \ DEV.Config \ PreBuild.cmd ServiceInterfaces "salió con el código 9009.

La variable PATH se corrompió y se hizo demasiado larga con múltiples rutas repetidas relacionadas con PostSharp.Patterns.Diagnostics. Cuando cerré Visual Studio y lo abrí de nuevo, se solucionó el problema.

Michael Freidgeim
fuente
2

Otra variante de archivo no encontrada, debido a los espacios en la ruta. En mi caso en el script msbuild. Necesitaba usar el estilo HTML & quot; cadenas dentro del comando exec.

<!-- Needs quotes example with my Buildscript.msbuild file --> 
<Exec Command="&quot;$(MSBuildThisFileDirectory)\wix\wixscript.bat&quot; $(VersionNumber) $(VersionNumberShort)" 
    ContinueOnError="false" 
    IgnoreExitCode="false" 
    WorkingDirectory="$(MSBuildProjectDirectory)\wix" />
Ben Butzer
fuente
2

Igual que las otras respuestas, en mi caso fue por el archivo faltante. Para saber cuál es el archivo que falta, puede ir a la ventana de salida y le mostrará de inmediato lo que se perdió.

Para abrir la ventana de salida en Visual Studio:

  1. Ctrl + Alt + O
  2. Ver> Salida

ingrese la descripción de la imagen aquí

Marvin Glenn Lacuna
fuente
2

Solucioné esto simplemente reiniciando Visual Studio: acababa de ejecutar dotnet tool install xxxen una ventana de consola y VS aún no había recogido las nuevas variables de entorno y / o la configuración de ruta que se modificaron, por lo que un reinicio rápido solucionó el problema.

keithl8041
fuente
1

Esto es bastante básico, tuve este problema, y ​​un simple error vergonzoso.

Uso de la aplicación Argumentos de línea de comando, los eliminé y luego los volví a agregar. De repente, el proyecto no se pudo construir.

Visual Studio -> Propiedades del proyecto -> verifique que use la pestaña 'Depurar' (no la pestaña 'Crear eventos') -> Argumentos de línea de comandos

Utilicé el área de texto y Publicar / Precompilación, que estaba mal en este caso.

Niike2
fuente
1

Mi solución fue sencilla: ¿has intentado apagarlo y volver a encenderlo? Entonces reinicié la computadora y el problema desapareció.

krzyszt0fd
fuente
1

También me encontré con este 9009problema al enfrentar una situación de sobrescritura.

Básicamente, si el archivo ya existe y no ha especificado el /ymodificador (que se sobrescribe automáticamente), este error puede ocurrir cuando se ejecuta desde una compilación.

Travis Vroman
fuente
0

De hecho, noté que por alguna razón la variable de entorno% windir% a veces se borra. Lo que funcionó para mí fue restablecer la variable de entorno windir a c: \ windows, reiniciar VS, y eso es todo. De esta forma, evita tener que modificar los archivos de la solución.

Charles F
fuente
0

Al menos en Visual Studio Ultimate 2013, Versión 12.0.30723.00 Actualización 3, no es posible separar una instrucción if / else con un salto de línea:

trabajos:

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) else (echo server)

no funciona

if '$(BuildingInsideVisualStudio)' == 'true' (echo local) 
else (echo server)
it-freelancer-magazin.de
fuente
0

Otra razón más: si su evento previo a la compilación hace referencia a otra ruta de bin de proyectos y ve este error al ejecutar msbuild, pero no Visual Studio, entonces debe organizar manualmente los proyectos en el archivo * .sln (con un editor de texto) para que el proyecto al que se dirige en el evento se crea antes del proyecto del evento. En otras palabras, msbuild usa el orden en que los proyectos se enumeran en el archivo * .sln, mientras que VS usa el conocimiento de las dependencias del proyecto. Esto sucedió cuando una herramienta que crea una base de datos para ser incluida en un wixproj fue listada después del wixproj.

Novaterata
fuente
0

Creo que en mi caso había símbolos rusos en la ruta (todos los proyectos estaban en la carpeta del usuario). Cuando puse la solución en otra carpeta (directamente en el disco), todo se volvió correcto.

Dmitriy Dokshin
fuente
0

Mi solución fue crear una copia del archivo y agregar un paso a la tarea de compilación para copiar mi archivo sobre el original.

johnrizzo1
fuente
0

Debes asegurarte de haber instalado Grunt a nivel mundial

tfa
fuente