Se produjo un error al validar. HRESULT = ‘8000000A’

He estado recibiendo este error por un tiempo cuando uso devenv en una comstackción automática. He revisado cada sitio web que puedo encontrar, y las respuestas habituales mencionan dependencias refrescantes (que creo que lo arreglan para el despliegue manual, pero no automático) y eliminar la encoding de control de origen de los proyectos, lo que no me ha ayudado.

El error no ocurre cada vez que compilo, 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?

Este es un problema conocido en Visual Studio 2010 (una condición de carrera). Ver este elemento de conexión .

Nos encontramos con esto también y recibimos una llamada de soporte muy insatisfactoria sobre este tema con Microsoft. Para resumir: 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 al activar la comstackción de MSI por segunda vez cuando falla por primera vez. No es agradable, pero funciona la mayor parte del tiempo (la tasa de error baja de ~ 10% a ~ 1%).

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

Seguir la receta de la versión 1.0.0 de MS finalmente me hizo funcionar:

Proyectos de instalador de Microsoft Visual Studio

Desafortunadamente no pudimos abordar todos los casos del problema de la línea de comando para este lanzamiento ya que todavía estamos investigando la forma adecuada de abordarlos. Lo que sí tenemos es una solución que creemos que funcionará para casi todos. Si aún 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 DWORD.

Leí en algún sitio en línea sobre esto, y lo he arreglado 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)
  • borre estas líneas al comienzo del archivo .vdproj:

     "SccProjectName" = "8:" "SccLocalPath" = "8:" "SccAuxPath" = "8:" "SccProvider" = "8:" 
  • construir de nuevo – el error se fue

Ese error no me impidió implementar, construir, depurar (o modificar) mi proyecto, solo me molestó. Y llegó incluso si configuré todos los proyectos para que se construyeran en una configuración actual y el proyecto de configuración no lo hiciera.

Actualización a partir del 14/06/2017

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

Ejemplos de rutas de acceso de la herramienta (basadas en 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 de comunidad: 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 instalador mediante comstackciones de línea de comandos:

ERROR: Se produjo un error al validar. 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 comstackción, asegúrese de usar la cuenta de usuario que utilizará la comstackción.

Ejecute la ayuda “DisableOutOfProcBuild.exe” para detalles de uso.


Solución permanente (+ para construir-máquinas)

Visual Studio 2017

Para VS 2017 llame a un usuario objective a continuación:

Edición de la comunidad
Edición profesional
Edición Enterprise

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

  1. DisableOutOfProcBuild.exe no supone que lo invocará fuera de su carpeta de instalación . Por cierto, si quieres construir .vdproj, debes 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 un usuario actual

Para muchas personas, la creación / corrección en HKEY_CURRENT_USER\.. no siempre funciona o funciona de forma permanente.
Al tratar de resolver esto, descubrí 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 encontré que si usaré una consola CMD con 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 extraña clave HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx … , no en HKEY_CURRENT_USER .

Entonces, esto funciona desde un primer disparo. Solo usa 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 for Build Servers

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 comstackción a menudo usan cuentas dedicadas (sistema local, etc.).

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

VS-2015 , VS-2013 , VS-2017-Comunidad , VS-2017-Profesional , VS-2017-Enterprise

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

Por ejemplo, si en VisualStudio aparece la clave “15.0_abcd1234”, sería “15.0_abcd1234_Config”.

ejemplo regedit

Me he enfrentado con este problema después de mover mi proyecto a otra PC (VS 2010, múltiples proyectos en una solución).

Ya se construyó mi proyecto en la computadora de origen, pero después de copiar al destino, no pude construir mi Proyecto de configuración y tener este error.

Abrí la carpeta /Debug debajo de la ruta de acceso de mi proyecto de instalación, había archivos MyProject.msi y setup.exe , los borré y volví a construir mi proyecto, funcionó. Espero que también funcione para algunos muchachos.

Verificar las dependencias del proyecto puede ayudar.

En VS 2010, haga clic derecho en su explorador de soluciones y luego haga clic en Dependencias detectadas y Dependencias de actualización, en algún momento resuelve el problema.

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 usar 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 lo haremos.

Ahora aparecerá la estructura de registro y puede navegar hasta Microsoft \ VisualStudio \ 15.0_Config \ MSBuild

Cree un nuevo DWORD EnableOutOfProcBuild con un valor de 0.

Una vez hecho esto, seleccione la raíz de la hive (cualquiera que sea su nombre anterior) y use Archivo> Descargar hive para desprenderse de ella.

Ahora debería funcionar: o)

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

enter image description here

Para estar seguro de que acabo de agregar otra línea en mi archivo por lotes para establecer 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 

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

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

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