Une erreur s’est produite lors de la validation. HRESULT = ‘8000000A’

J’ai reçu cette erreur pendant un certain temps en utilisant devenv sur une construction automatique. J’ai parcouru chaque site Web que je peux trouver et les réponses habituelles mentionnent des dépendances rafraîchissantes (ce qui, à mon avis, le corrige pour le déploiement manuel, mais pas automatique) et la suppression du codage du contrôle source des projets.

L’erreur ne se produit pas à chaque fois que je crée, mais elle semble aléatoire sur différents projets de déploiement à chaque fois.

Quelqu’un at-il des conseils sur la raison exacte de cette erreur et sur la façon de la réparer?

Il s’agit d’un problème connu dans Visual Studio 2010 (une condition de concurrence). Voir cet élément de connexion .

Nous avons également rencontré ce problème et avons eu un appel de support très insatisfaisant sur ce problème avec Microsoft. En bref: il s’agit d’un problème connu, il ne sera pas résolu, et Microsoft conseille de ne plus recourir aux projets d’installation de Visual Studio (.vdproj).

Nous avons contourné ce problème en déclenchant la création de MSI une deuxième fois lorsque celle-ci échoue. Pas sympa, mais ça marche la plupart du temps (le taux d’erreur passe de ~ 10% à ~ 1%).

Mise à jour pour ceux qui ont eu ce problème pour VS2013 ou VS2015 après la mise à niveau d’un projet d’installation VS200X à l’aide de l’extension Microsoft Visual Studio Installer Projects.

Suite à la recette de la v1.0.0.0 de MS a finalement fonctionné pour moi:

Projets d’installation de Microsoft Visual Studio

Malheureusement, nous n’avons pas pu résoudre tous les problèmes liés à la ligne de commande pour cette version, car nous examinons toujours la manière appropriée de les résoudre. Ce que nous faisons est une solution de contournement qui, selon nous, fonctionnera pour presque tous. Si vous rencontrez toujours ce problème, vous pouvez essayer de modifier la valeur DWORD pour la valeur de Registre suivante à 0: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild (VS2013)
ou
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild (VS2015)
Si cela n’existe pas, vous pouvez le créer en tant que DWORD.

J’ai lu quelque part en ligne à ce sujet, et je l’ai réparé comme ceci (il a été suggéré par quelqu’un) :

  • Ouvrez votre fichier de projet d’installation (.vdproj) dans le Bloc-notes (ou tout autre éditeur de texte)
  • Supprimez ces lignes au début du fichier .vdproj:

     "SccProjectName" = "8:" "SccLocalPath" = "8:" "SccAuxPath" = "8:" "SccProvider" = "8:" 
  • construire à nouveau – l’erreur a disparu

Cette erreur ne m’a pas empêché de déployer, de construire, de déboguer (ou de modifier) ​​mon projet, cela m’agace juste. Et cela est arrivé même si je définissais tous les projets à construire dans une configuration actuelle et que le projet d’installation ne le faisait pas.

Mise à jour du 14/06/2017

L’extension Microsoft Visual Studio 2017 Installer Projects inclut désormais un outil d’assistance en ligne de commande pour rendre le paramètre de registre beaucoup plus facile à appliquer aux projets d’installation de Microsoft Visual Studio 2017

Exemple de chemins de l’outil (basé sur la version de Visual Studio installée)

Édition professionnelle: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe

Édition de communauté: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe

Du README


Cet outil simple est conçu pour aider les utilisateurs à définir la clé de registre nécessaire pour contourner cette erreur pouvant apparaître lors de la création de projets d’installation à l’aide de versions de ligne de commande:

ERROR: Une erreur est survenue lors de la validation. HRESULT = ‘8000000A’

L’outil est destiné à Visual Studio 2017+ et définit cette clé de Registre pour une instance Visual Studio particulière installée pour l’utilisateur actuel. Donc, si vous définissez ceci sur un agent de génération, veillez à utiliser le compte utilisateur que la version utilisera.

Exécutez l’aide “DisableOutOfProcBuild.exe” pour les détails d’utilisation.


Solution permanente (+ pour les machines de construction)

Visual Studio 2017

Pour VS 2017, appelez les utilisateurs suivants sous un utilisateur cible:

Édition communautaire
Édition professionnelle
Édition entreprise

TL; DR. Notes pour la mauvaise DisableOutOfProcBuild.exe La solution proposée par Microsoft que j’utilise pour VS 2017.

  1. DisableOutOfProcBuild.exe ne suppose pas que vous l’appellerez hors de son dossier d’installation . Par ailleurs, si vous voulez construire .vdproj, vous devez installer VS.
  2. DisableOutOfProcBuild.exe ne fonctionnera que si le répertoire CMD actuel est défini sur l’emplacement d’installation de DisableOutOfProcBuild.exe.

Par exemple, pour l’édition VS Professional, nous devons appeler

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

Visual Studio 2015 et versions antérieures

par CMD pour un utilisateur actuel

Pour beaucoup de gens, la création / correction sous HKEY_CURRENT_USER\.. ne fonctionne pas toujours ou fonctionne de manière permanente.
En essayant de résoudre ce problème, j’ai découvert que je devais créer / modifier une clé bizarre sous HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

Mais j’ai aussi trouvé que si j’utiliserais une console CMD avec le correctif proposé
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
cela va écrire la valeur exactement dans cette clé étrange HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx … , pas dans HKEY_CURRENT_USER .

Donc, cela fonctionne à partir d’un premier coup. Il suffit d’utiliser la console 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

D’autre part, ce code fonctionne toujours pour un compte d’utilisateur actuel qui le lance (à cause de HKEY_CURRENT_USER). Mais les serveurs de build utilisent souvent des comptes dédiés (Local System, etc.).

Je l’ai corrigé sur mes machines de génération en ajoutant le simple fichier batch suivant à mes tâches de génération (Jenkins, TeamCity, CruiseControl)

VS-2015 , VS-2013 , VS-2017-Communauté , VS-2017-Professionnel , VS-2017-Entreprise

Comme indiqué dans les commentaires ici , pour VS2017, vous devrez créer DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild Remplacez [IDKey] par le suffixe ID de la sous-clé 15.0 existante de VisualStudio .

Par exemple, si sous VisualStudio, vous voyez la clé “15.0_abcd1234”, ce serait “15.0_abcd1234_Config”.

exemple de regedit

J’ai été confronté à ce problème après avoir déplacé mon projet vers un autre PC (VS 2010, plusieurs projets dans une solution).

Il était déjà construit mon projet sur l’ordinateur source, mais après avoir copié sur la cible, je ne pouvais pas construire mon projet d’installation et avoir cette erreur.

J’ai ouvert le dossier /Debug sous le chemin racine de mon projet d’installation, il y avait des fichiers MyProject.msi et setup.exe , je les ai supprimés et j’ai reconstruit mon projet, cela a fonctionné. J’espère que cela fonctionne pour certains gars aussi.

La vérification des dépendances du projet peut aider.

Dans VS 2010, cliquez avec le bouton droit de la souris dans l’explorateur de solutions, puis cliquez sur Dépendances et actualisations actualisées, cela résout parfois le problème.

Visual Studio 2017 stocke les informations précédemment stockées dans le registre public dans un nouveau registre privé: C: \ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin

C’est ici que vous devez append EnableOutOfProcBuild conformément aux instructions de VS2013 / VS2015.

Pour mettre à jour le registre privé, vous pouvez utiliser Regedit.

Cliquez pour sélectionner le nœud HKEY_USERS.

Sélectionnez Fichier> Charger la hive et accédez au fichier privateregistry.bin. Lorsque vous le sélectionnez, Regedit vous demandera un nom – peu importe ce que vous appelez, nous le ferons bientôt.

Maintenant, la structure du registre apparaîtra et vous pourrez naviguer jusqu’à Microsoft \ VisualStudio \ 15.0_Config \ MSBuild

Créez un nouveau fichier DWORD EnableOutOfProcBuild avec une valeur de 0.

Une fois cela fait, sélectionnez la racine de la hive (peu importe ce que vous avez nommé précédemment) et utilisez Fichier> Décharger la hive pour la détacher.

Maintenant ça devrait marcher: o)

Mon Visual Studio 2013 est en quelque sorte devenu expérimental , il a donc commencé à utiliser une autre clé de registre pour EnableOutOfProcBuild

entrer la description de l'image ici

Pour être sûr d’avoir juste ajouté une autre ligne dans mon fichier de commandes pour définir la valeur du registre et que cela a commencé à fonctionner:

 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 

avec moi, c’était dû à un mauvais fichier .suo. (causé par skydrive) la suppression de ce fichier a résolu le problème.

Si vous renconsortingez ce problème aujourd’hui, essayez de redémarrer Visual Studio. Si ce n’est pas le cas, créez un nouveau projet, enregistrez-le, puis copiez les fichiers du projet en question. Les deux méthodes ont fonctionné pour moi.

Nettoyez d’abord la solution, créez la solution et essayez de créer le programme d’installation. Cela supprimera l’erreur.