Se produjo un error durante la validación. HRESULT = '8000000A'

98

He estado recibiendo este error durante un tiempo al usar devenv en una compilación automática. Revisé todos los sitios web que pude encontrar, y las respuestas habituales mencionan la actualización de dependencias (que creo que lo corrige para la implementación manual, pero no para la automática) y la eliminación de la codificación de control de fuente de los proyectos, lo que no me ha ayudado.

El error no ocurre cada vez que construyo, pero parece aleatorio en diferentes proyectos de implementación cada vez.

¿Alguien tiene algún consejo sobre por qué ocurre exactamente este error y cómo solucionarlo?

Chris C.
fuente
¿ Obtuviste una solución más elegante finalmente? acaba de volver a activar la compilación cuando falla , tal vez sea útil poner script ( elegant solution) en esencia, en mi humilde opinión.
Kiquenet

Respuestas:

53

Este es un problema conocido en Visual Studio 2010 (una condición de carrera). Vea este artículo de conexión .

También nos hemos encontrado con esto, y tuvimos una llamada de soporte muy insatisfactoria sobre este problema con Microsoft. En pocas palabras: es un problema conocido, no se resolverá y Microsoft aconseja alejarse de los proyectos de instalación de Visual Studio (.vdproj).

Hemos solucionado este problema activando la compilación de MSI por segunda vez cuando falla la primera vez. No es agradable, pero funciona la mayor parte del tiempo (la tasa de error ha bajado de ~ 10% a ~ 1%).

oɔɯǝɹ
fuente
Muchas gracias. Había estado buscando en Internet para encontrar exactamente por qué estaba sucediendo, y encontré numerosas respuestas de Microsoft que eran vagas e inútiles, por decir lo menos. Acabo de volver a activar la compilación cuando falla, pero esperaba una solución más elegante. Gracias de nuevo.
Chris C.
@ChrisC. stackoverflow.com/a/25054572/206730 La respuesta tiene más votos, ¿lo intentaste así?
Kiquenet
@ oɔɯǝɹ, ¿podría explicar lo que quiere decir al decir que saing activa la compilación de MSI por segunda vez ?, tiene el mismo problema ..
Leon Barkan
122

Actualización para aquellos que tuvieron este problema para VS2013 o VS2015 después de actualizar un proyecto de instalación VS200X usando la extensión Microsoft Visual Studio Installer Projects.

Seguir la receta para la v1.0.0.0 de MS finalmente hizo que me funcionara:

Proyectos del instalador de Microsoft Visual Studio

Desafortunadamente, no pudimos abordar todos los casos del problema de la línea de comandos para esta versión, ya que todavía estamos investigando la forma adecuada de abordarlos. Lo que sí tenemos es una solución que creemos funcionará para casi todos ellos. Si todavía sufre este problema, puede intentar cambiar el valor DWORD para el siguiente valor de registro a 0: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild (VS2013)
o
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild(VS2015)
Si esto no existe, puede crearlo como un DWORD.

kristian mo
fuente
23
Tenga en cuenta que las actualizaciones de Visual Studio 2013 borrarán esta variable de su registro; deberá volver a agregarla.
Derek W
4
Solo una nota, cuando se trabaja con Jenkins, se debe agregar la clave de registro para el usuario que ejecuta esclavos de Jenkins.
Jirong Hu
3
TENGA EN CUENTA que el subárbol del registro es HKEY_CURRENT_USER, por lo que si lo llama una cuenta diferente a la suya (por ejemplo, tfs build account), deberá iniciar sesión como ESA cuenta y agregar la configuración.
Mike Cheel
3
Para agregar a los comentarios de @DerekW, esto también se puede eliminar mediante actualizaciones automáticas.
JustAnotherDeveloper
2
@MikeCheel puede configurar HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild para arreglarlo para todos los usuarios :)
Ian Ellis
57

Actualización al 14/6/2017

la extensión Proyectos de instalación de Microsoft Visual Studio 2017 ahora incluye una herramienta auxiliar de línea de comandos para hacer que la configuración del registro sea mucho más fácil de aplicar Proyectos de instalación de Microsoft Visual Studio 2017

Rutas de ejemplo de la herramienta (según la versión de Visual Studio instalada)

Edición profesional: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe


Edición comunitaria: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe

Del README


Esta sencilla herramienta está destinada a ayudar a los usuarios a establecer la clave de registro necesaria para evitar este error que puede aparecer al crear proyectos de instalación mediante compilaciones de línea de comandos:

ERROR: Se produjo un error durante la validación. HRESULT = '8000000A'

La herramienta está diseñada para Visual Studio 2017+ y establece esta clave de registro para una instancia de Visual Studio instalada en particular para el usuario actual. Entonces, si está configurando esto en un agente de compilación, asegúrese de usar la cuenta de usuario que usará la compilación.

Ejecute la "Ayuda de DisableOutOfProcBuild.exe" para obtener detalles de uso.


Ceniza australiana
fuente
4
Esta es la mejor solución para VS2017
Simon O'Beirne
Creo que esta es la tercera vez que tengo este problema, pasé horas tratando de solucionarlo y, finalmente, redescubriendo esta respuesta. ¡Gracias!
Hannes Sachsenhofer
2
Tienes que cambiar dir a esa ubicación para que funcione correctamente. Consulte github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/… y github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/…
GilesDMiddleton
Perfecto para mí usando Visual Studio 2019 Community Edition en mi máquina de compilación.
Max Power
48

Leí en algún lugar en línea sobre esto, y lo arreglé así (fue sugerido por alguien) :

  • abra su archivo de proyecto de instalación (.vdproj) en el bloc de notas (o cualquier otro editor de texto)
  • elimine estas líneas al principio del archivo .vdproj:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
  • construir de nuevo - el error se ha ido

Ese error no me impidió implementar, compilar, depurar (o cualquier cosa) mi proyecto, simplemente me molestó. Y se activó incluso si configuré todos los proyectos para que se compilen en una configuración actual y el proyecto de instalación no.

Cipi
fuente
3
El problema con el problema es que es una condición de carrera. Hacer un ajuste (aleatorio) y reconstruir hará que parezca que está arreglado. La simple reconstrucción habría hecho que el problema también desapareciera. Me gustaría saber si permanece 'arreglado' después de 100 compilaciones.
2012
6
Podría ser una condición de carrera, pero la solución anterior funciona y me permite seguir con mi vida (hasta el próximo problema que me tiene
revisando el
39

Solución permanente (+ para máquinas de construcción)

Visual Studio 2017

Para VS 2017, llame a los siguientes scripts de CMD en su cuenta de Windows de destino:

Comunidad Edición
Profesional edición
de Enterprise edición

TL; DR. Notas para los pobres DisableOutOfProcBuild.exe, la solución ofrecida por Microsoft que uso para VS 2017.

  1. DisableOutOfProcBuild.exeno asume que lo llamará fuera de su carpeta de instalación . Por lo tanto, no puede copiar este archivo .exe. (Por cierto, si desea compilar .vdproj, debe instalar VS.)
  2. DisableOutOfProcBuild.exe solo funcionará si el directorio CMD actual está configurado en la ubicación de instalación de DisableOutOfProcBuild.exe.

Como ejemplo, para la edición VS Professional debemos llamar

CD "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild"
CALL DisableOutOfProcBuild.exe

Visual Studio 2015 y versiones anteriores

por CMD para el usuario actual de Windows

Para muchas personas, la creación / corrección de abajo HKEY_CURRENT_USER\..no siempre funciona o funciona de forma permanente.
Tratando de resolver esto, encontré que, de hecho, tengo que crear / cambiar alguna clave extraña en HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

Pero también descubrí que si voy a usar una consola CMD HKCUcon la solución propuesta,
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
esto escribirá el valor exactamente en esa clave extraña HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ... , no en HKEY_CURRENT_USER .

Entonces, esto funciona desde un primer disparo y para siempre. Simplemente use la consola CMD.

REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
@REM (use 12.0_Config for VS2013)

Solver para servidores de compilación

Por otro lado, este código siempre funciona para una cuenta de usuario actual que lo inicia (debido a HKEY_CURRENT_USER). Pero los servidores de compilación a menudo usan cuentas dedicadas o sistema local, etc.

Lo arreglé en mis máquinas de compilación agregando el siguiente archivo por lotes simple a mis tareas de compilación (Jenkins, TeamCity, CruiseControl)

VS-2015 , VS-2013 , VS-2017-Community , VS-2017-Professional , VS-2017-Enterprise

it3xl
fuente
1
después de parchear el reg evrey algunos meses durante 2 años, y el archivo CMD no funciona bien alguna solución
CMS
1
Tuve el mismo problema emergente de la nada al construir un MSI desde un proyecto de configuración en un servidor de compilación. El proceso de construcción siempre funcionó antes y no había cambiado, pero comenzó a fallar constantemente. Agregué esto al script de compilación justo antes de la llamada a devenv.exe y funcionó para mí en VS 2013. Muchas gracias.
Jim
En VS 15.8.x obtengo este error incluso después de ejecutar el EXE, sin embargo, al cerrar VS, luego ejecutar el EXE y luego reiniciar VS, el error se resuelve. Entonces, algo en VS está restableciendo la configuración de registro, y la solución es cerrar VS, volver a ejecutar DisableOutOfProcBuild.exe y luego iniciar VS.
user2728841
1
Esta corrección funcionó para las compilaciones VS2015 TFS vNext. Usamos la cuenta local NT Authority \ Network Service para compilaciones automáticas, por lo que agregar manualmente la clave de registro de RDPing a la VM de compilación no solucionó el error de compilación automática. Agregué el paso para crear la clave de registro justo antes del paso para llamar a Devenv.com para obtener el archivo VDPROJ. ¡Después de luchar tanto tiempo para encontrar una solución para esto, quiero agradecerle mucho a it3xl por publicarlo!
ckkkitty
6

Como se señala en los comentarios aquí , para VS2017 deberá crear el DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild Reemplace [IDKey] con el sufijo de ID de la subclave 15.0 existente de VisualStudio .

Por ejemplo, si en VisualStudio ve la clave "15.0_abcd1234", sería "15.0_abcd1234_Config".

ejemplo de regedit

Noche94
fuente
4

Me he enfrentado a este problema después de trasladar mi proyecto a otra PC (VS 2010, varios proyectos en una solución).

Ya se creó mi proyecto en la computadora de origen, pero después de copiar en el destino, no pude construir mi proyecto de instalación y tuve este error.

Abrí la /Debugcarpeta en la ruta raíz de mi proyecto de instalación, había archivos MyProject.msiy setup.exe, los eliminé y construí mi proyecto nuevamente, funcionó. Espero que también funcione para algunos muchachos.

kubilay
fuente
uno más +1, simplemente eliminar los archivos .msi y setup.exe y reconstruir el proyecto de instalación hizo que el mensaje de error desapareciera
George
y un -1, parece que solo resuelve este problema temporalmente, después de reabrir la solución, el problema reapareció
George
@ChrisSchiffhauer para resolverlo, ¿solo borras los archivos msi y exe ?
Kiquenet
Bien dicho por @kubilay, muchas gracias por tu solución !! Este problema puede producirse al migrar proyectos de un marco más antiguo a uno más nuevo, ya que establecemos una versión más reciente del marco en las propiedades del proyecto. Posiblemente, el proyecto de instalación puede contener archivos .msi y .exe en su ubicación de destino. Con la nueva versión del marco, puede generar errores al sobrescribir archivos existentes. Entonces, haga clic con el botón derecho en el proyecto de instalación -> vaya a 'Nombre del archivo de salida' (en Propiedades de configuración \ Compilación) -> haga clic en el botón '...' (examinar) -> obtenga la ubicación de destino y elimine los archivos .msi y .exe . Ahora cree el proyecto y debería funcionar.
Navin Pandit
1

Verificar las dependencias del proyecto puede ayudar.

En VS 2010, haga clic con el botón derecho en el explorador de soluciones y luego haga clic en Dependencias detectadas y Actualizar dependencias, en algún momento se resuelve el problema.

Jla
fuente
1

Estoy usando VS 2017 pero ninguna de las soluciones anteriores funciona. Entonces, actualice la última versión de VS 2017 y aplique la solución @AussieAsh y funciona bien ...

Espero que esta solución funcione.

Rikin Patel
fuente
0

conmigo fue causado por un archivo .suo incorrecto. (causado por skydrive) eliminar este archivo resolvió el problema.

Aswin
fuente
DisableOutOfProcBuild.exe funcionó durante un tiempo hasta que no lo hizo. Eliminar el archivo .suo solucionó el problema.
Sego
0

Visual Studio 2017 almacena la información previamente almacenada en el registro público dentro de un nuevo registro privado: C: \ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin

Aquí es donde debe agregar EnableOutOfProcBuild según las instrucciones para VS2013 / VS2015.

Para actualizar el registro privado puede utilizar Regedit.

Haga clic para seleccionar el nodo HKEY_USERS.

Seleccione Archivo> Cargar Hive y navegue hasta el archivo privateregistry.bin. Cuando lo seleccione, Regedit le pedirá un nombre; no importa cómo lo llame, ya que pronto terminaremos.

Ahora aparecerá la estructura del registro y podrá navegar hasta Microsoft \ VisualStudio \ 15.0_Config \ MSBuild

Cree un nuevo EnableOutOfProcBuild DWORD con un valor de 0.

Una vez hecho esto, seleccione la raíz de la colmena (como sea que la haya llamado antes) y use Archivo> Descargar Hive para separarse de ella.

Ahora debería funcionar: o)

Gwynge
fuente
No es necesario meterse con el archivo de registro privado, simplemente puede crear la clave 15.0_ <x> _Config en el registro normal usted mismo (ver arriba)
Night94
0

Mi Visual Studio 2013 de alguna manera se convirtió en Experimental, por lo que comenzó a usar otra clave de registro para EnableOutOfProcBuild

ingrese la descripción de la imagen aquí

Para estar seguro, acabo de agregar otra línea en mi archivo por lotes para configurar el valor del registro y comenzó a funcionar:

REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\12.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\12.0Exp_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
Hovhannes Akobian
fuente
0

Solo ejecuta este exe

(Edición de la comunidad de Visual Studio 2017)

C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe

(Edición empresarial de Visual Studio 2017)

C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe

Lakmal
fuente
0

Bien, miré este problema hasta que me sentí azul en la cara, roja en la cara, perdiendo mi cabello y perdiendo la cabeza, e intenté cada paso que pude encontrar. :-RE

Mi solución para Visual Studio 2017 / TeamCity fue una combinación de las dos soluciones de @ it3xl y algo de ayuda de @ Night94 .

El problema parecía ser que faltaba la clave de registro del usuario de TeamCity .

  • Ejecutar DisableOutOfProcBuild.exe como lo menciona @AussieAsh, por lo tanto, no funcionó, ya que agregó la clave de registro solo para mi usuario.
  • el uso del script mencionado por @ it3xl también falló cuando se ejecutó desde TeamCity

Por lo tanto, la solución fue agregar lo siguiente como un paso de compilación de la línea de comandos desde TeamCity antes de MSBuild:

REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\15.0_2c79e3fe_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f

Una vez que se ejecutó este paso, podría eliminarse si es necesario.

Resumen de la solución

Ya sea:

  • ejecutar DisableOutOfProcBuild.exe como usuario de TeamCity , o
  • navegue hasta la clave de registro HKCU\SOFTWARE\Microsoft\VisualStudioy verifique la versión enumerada, luego modifique lo anterior REG ADDpara que coincida con las versiones (recuerde agregar _Config) como un paso en la compilación de TeamCity.

Nuevamente, lo anterior solo debería hacerse una vez. Puede deshabilitar el paso en TeamCity y dejarlo como referencia en caso de que vuelva a tener el problema.

SharpC
fuente
0

Paso 1 He "creado una clave DWORD con el nombre" EnableOutOfProcBuild "y establecí su valor en" 0 "en la ruta de abajo

HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild

Nota: asegúrese de haber iniciado sesión con el mismo usuario que está intentando construir el proyecto.

Está funcionando bien para mí.

Dharti Sutariya
fuente
-1

Tuve este problema hoy, intente reiniciar Visual Studio, si eso no funciona, cree un nuevo proyecto, guárdelo y luego copie los archivos del proyecto problemático. ambos métodos funcionaron para mí.

FadingAway90
fuente
-3

Primero limpie la solución, compile la solución y luego intente compilar el instalador. Eliminará el error.

Keennary Pungyera
fuente