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

98

Je reçois cette erreur depuis un certain temps lorsque j'utilise devenv sur une construction automatique. J'ai parcouru tous les sites Web que je peux trouver, et les réponses habituelles mentionnent des dépendances rafraîchissantes (ce qui, je crois, les corrige pour le déploiement manuel, mais pas pour l'automatique) et la suppression du codage de contrôle de source des projets, ce qui ne m'a pas aidé.

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

Quelqu'un a-t-il des conseils sur pourquoi exactement cette erreur se produit et comment y remédier?

Chris C.
la source
avez-vous enfin une solution plus élégante ? vous venez de re-déclencher la construction quand elle échoue , peut-être utile put script ( elegant solution) dans le gist, à mon humble avis.
Kiquenet

Réponses:

53

Il s'agit d'un problème connu dans Visual Studio 2010 (une condition de concurrence critique). 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. Pour faire court: c'est un problème connu, il ne sera pas résolu et Microsoft conseille de s'éloigner des projets d'installation de Visual Studio (.vdproj).

Nous avons contourné ce problème en déclenchant la génération MSI une deuxième fois lorsqu'elle échoue une première fois. Pas bien, mais cela fonctionne la plupart du temps (le taux d'erreur est passé de ~ 10% à ~ 1%).

oɔɯǝɹ
la source
Merci beaucoup. J'avais parcouru Internet pour trouver pourquoi exactement cela se produisait, et je suis tombé sur de nombreuses réponses de Microsoft qui étaient vagues et inutiles, c'est le moins qu'on puisse dire. Je viens de relancer la construction quand elle échoue, mais j'espérais une solution plus élégante. Merci encore.
Chris C.
@ChrisC. La réponse stackoverflow.com/a/25054572/206730 a plus de votes, avez-vous essayé comme ça?
Kiquenet
@ oɔɯǝɹ pourriez-vous expliquer ce que vous entendez par saing déclenchant la construction MSI une deuxième fois ?, avez le même problème ..
Leon Barkan
123

Mise à jour pour ceux qui ont rencontré 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.

Suivre la recette de la v1.0.0.0 de MS a finalement fait fonctionner pour moi:

Projets d'installation de Microsoft Visual Studio

Malheureusement, nous n'avons pas pu résoudre tous les cas de problème de ligne de commande pour cette version, car nous recherchons toujours la manière appropriée de les résoudre. Ce que nous avons, c'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 de la valeur de Registre suivante sur 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.

kristian mo
la source
23
Notez que les mises à jour de Visual Studio 2013 effaceront cette variable de votre registre - vous devrez la rajouter.
Derek W
4
Juste une note, lorsque vous travaillez avec Jenkins, la clé de registre doit être ajoutée pour l'utilisateur exécutant des esclaves Jenkins.
Jirong Hu
3
GARDEZ À L'ESPRIT que la ruche de registre est HKEY_CURRENT_USER, donc si cela est appelé par un compte différent de vous (par exemple, compte de build tfs), vous devrez vous connecter en tant que ce compte et ajouter le paramètre.
Mike Cheel
3
Pour ajouter aux commentaires @DerekW, cela peut également être effacé par des mises à jour automatiques.
JustAnotherDeveloper
2
@MikeCheel, vous pouvez définir HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild pour le réparer pour tous les utilisateurs :)
Ian Ellis
58

Mise à jour au 14/06/2017

L'extension Microsoft Visual Studio 2017 Installer Projects comprend désormais un outil d'assistance de ligne de commande pour rendre le paramètre de registre beaucoup plus facile à appliquer Microsoft Visual Studio 2017 Installer Projects

Exemples de chemins de l'outil (en fonction de la version de Visual Studio installée)

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


Edition communautaire: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe

À partir du README


Cet outil simple est destiné à aider les utilisateurs à définir la clé de registre nécessaire pour contourner cette erreur qui peut apparaître lors de la création de projets d'installation à l'aide de versions de ligne de commande:

ERREUR: une erreur s'est produite lors de la validation. HRESULT = '8000000A'

L'outil est destiné à Visual Studio 2017+ et définit cette clé de registre pour une instance de Visual Studio installée particulière pour l'utilisateur actuel. Donc, si vous définissez ceci sur un agent de build, assurez-vous d'utiliser le compte d'utilisateur que la build utilisera.

Exécutez «Aide DisableOutOfProcBuild.exe» pour plus de détails sur l'utilisation.


Aussie Ash
la source
5
C'est la meilleure solution pour VS2017
Simon O'Beirne
1
Je pense que c'est la troisième fois que j'ai ce problème, j'ai passé des heures à essayer de le réparer et, enfin, à redécouvrir cette réponse. Merci!
Hannes Sachsenhofer
2
Vous devez changer de répertoire à cet emplacement pour que cela fonctionne correctement. Voir github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/… et github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/…
GilesDMiddleton
1
Parfait pour moi en utilisant Visual Studio 2019 Community Edition sur ma machine de build.
Max Power le
48

J'ai lu quelque part en ligne à ce sujet, et je l'ai corrigé comme ceci (cela 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:"
    
  • reconstruire - l'erreur a disparu

Cette erreur ne m'a pas empêché de déployer, construire, déboguer (ou quoi que ce soit) mon projet, cela m'a juste ennuyé. Et cela s'est produit même si je définissais tous les projets pour qu'ils soient construits dans une configuration actuelle et que le projet d'installation ne le soit pas.

Cipi
la source
3
Le problème avec le problème est qu'il s'agit d'une condition de concurrence. Faire un ajustement (aléatoire) et une reconstruction donnera l'impression que c'est corrigé. La simple reconstruction aurait également fait disparaître le problème. Je voudrais savoir s'il reste «corrigé» après 100 versions.
oɔɯǝɹ
6
Cela peut être une condition de
concurrence
39

Solution permanente (+ pour build-machines)

Visual Studio 2017

Pour VS 2017, appelez les scripts CMD suivants sous votre compte Windows cible:

Communauté Edition
professionnelle Edition
Enterprise Edition

TL et DR. Notes pour les pauvres DisableOutOfProcBuild.exe, la solution proposée par Microsoft que j'utilise pour VS 2017.

  1. DisableOutOfProcBuild.exene suppose pas que vous l'appellerez hors de son dossier d'installation . Donc, vous ne pouvez pas copier ce fichier .exe. (Au fait, 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.

À titre d'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 l'utilisateur Windows actuel

Pour de nombreuses personnes, la création / correction sous HKEY_CURRENT_USER\..ne fonctionne pas toujours ou ne fonctionne pas en permanence.
En essayant de résoudre cela, j'ai trouvé qu'en fait je dois créer / modifier une clé étrange sous HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

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

Donc, cela fonctionne dès le premier coup et pour toujours. Utilisez simplement 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)

Solveur pour les serveurs de construction

Par contre ce code fonctionne toujours pour un compte utilisateur actuel qui le lance (à cause de HKEY_CURRENT_USER). Mais les serveurs de build utilisent souvent des comptes dédiés ou un système local, etc.

Je l'ai corrigé sur mes machines de construction en ajoutant le fichier de commandes simple suivant à mes tâches de construction (Jenkins, TeamCity, CruiseControl)

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

it3xl
la source
1
après avoir patché le reg evrey quelques mois depuis 2 ans maintenant, et le fichier CMD ne fonctionne pas finement une solution
CMS
1
Le même problème est apparu de nulle part lors de la création d'un MSI à partir d'un projet d'installation sur un serveur de build. Le processus de construction fonctionnait toujours auparavant et n'avait pas changé, mais commençait à échouer systématiquement. Ajouté cela au script de construction juste avant l'appel à devenv.exe et cela a fonctionné pour moi dans VS 2013. Merci beaucoup.
Jim
Dans VS 15.8.x, j'obtiens cette erreur même après avoir exécuté le fichier EXE, mais en fermant VS, puis en exécutant le fichier EXE et en redémarrant VS, l'erreur est résolue. Donc, quelque chose dans VS réinitialise le paramètre reg, et la solution consiste à fermer VS, à réexécuter DisableOutOfProcBuild.exe, puis à démarrer VS.
user2728841
1
Ce correctif a fonctionné pour les versions VS2015 TFS vNext. Nous utilisons le compte NT Authority \ Network Service local pour les builds automatiques, donc l'ajout manuel de la clé de registre de RDPing dans la VM de build n'a pas corrigé l'erreur de build automatique. J'ai ajouté l'étape pour créer la clé de registre juste avant l'étape pour appeler Devenv.com pour le fichier VDPROJ. Après avoir lutté si longtemps pour trouver une solution à cela, je tiens à remercier beaucoup it3xl de l'avoir postée !!!
ckkkitty le
6

Comme indiqué dans les commentaires ici , pour VS2017, vous devrez créer le DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild Remplacer [IDKey] par le suffixe d'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

Nuit94
la source
4

J'ai été confronté à ce problème après avoir déplacé mon projet sur 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é vers la cible, je n'ai pas pu créer mon projet d'installation et j'ai cette erreur.

J'ai ouvert le /Debugdossier sous ma configuration chemin racine du projet, il y avait MyProject.msiet des setup.exefichiers, je les ai supprimés et rebâtit mon projet, il a travaillé. J'espère que cela fonctionne aussi pour certains gars.

Kubilay
la source
un +1 de plus, il suffit de supprimer les fichiers .msi et setup.exe et de reconstruire le projet d'installation pour faire disparaître le message d'erreur
George
et un -1, il semble ne résoudre ce problème que temporairement, après la réouverture de la solution, le problème est réapparu
George
@ChrisSchiffhauer pour le résoudre, vous ne supprimez que les fichiers msi et exe ?
Kiquenet
Bien dit par @kubilay, merci beaucoup pour votre solution !! Ce problème peut se produire lors du portage de projets d'un framework plus ancien vers un framework plus récent, car nous définissons une version plus récente du framework dans les propriétés du projet. Il est possible que le projet d'installation contienne des fichiers .msi et .exe dans son emplacement cible. Avec la nouvelle version du framework, il peut générer une erreur lors de l'écrasement des fichiers existants. Donc, faites un clic droit sur le projet d'installation -> allez à 'Nom du fichier de sortie' (sous Propriétés de configuration \ Construire) -> cliquez sur le bouton '...' (parcourir) -> obtenir l'emplacement cible, et supprimez également les fichiers .msi .exe . Maintenant, construisez le projet et cela devrait fonctionner.
Navin Pandit
1

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

Dans VS 2010, faites un clic droit dans votre explorateur de solutions, puis cliquez sur Dépendances détectées et actualiser les dépendances, cela résout parfois le problème.

Jla
la source
1

J'utilise VS 2017 mais aucune des solutions ci-dessus ne fonctionne. Donc, mise à niveau de la dernière version de VS 2017 et application de la solution @AussieAsh et de son bon fonctionnement ...

J'espère que cette solution peut que quelqu'un fonctionnera.

Rikin Patel
la source
0

avec moi, cela a été causé par un mauvais fichier .suo. (causé par skydrive) la suppression de ce fichier a résolu le problème.

Aswin
la source
DisableOutOfProcBuild.exe a fonctionné pendant un certain temps jusqu'à ce que ce ne soit pas le cas. La suppression du fichier .suo a résolu le problème.
Sego
0

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 là que vous devez ajouter EnableOutOfProcBuild selon les instructions pour 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 ruche et accédez au fichier privateregistry.bin. Lorsque vous le sélectionnez, Regedit vous demandera un nom - peu importe comment vous l'appelez car nous aurons bientôt terminé.

Maintenant, la structure du registre apparaîtra et vous pouvez accéder à Microsoft \ VisualStudio \ 15.0_Config \ MSBuild

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

Une fois terminé, sélectionnez la racine de la ruche (quel que soit votre nom) et utilisez Fichier> Décharger la ruche pour vous en détacher.

Maintenant ça devrait marcher: o)

Gwynge
la source
Pas besoin de jouer avec le fichier de registre privé, vous pouvez simplement créer vous-même la clé 15.0_ <x> _Config dans le registre régulier (voir ci-dessus)
Night94
0

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

entrez la description de l'image ici

Pour être sûr, je viens d'ajouter une autre ligne dans mon fichier de commandes pour définir la valeur de registre et 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
Hovhannes Hakobyan
la source
0

Lance juste cet exe

(Édition communautaire Visual Studio 2017)

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

(Édition Entreprise de Visual Studio 2017)

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe

Lakmal
la source
0

D'accord, j'ai examiné ce problème jusqu'à ce que je sois bleu au visage, rouge au visage, perdant mes cheveux et perdant la tête, et j'ai essayé chaque pas que je pouvais trouver. :-RÉ

Ma solution pour Visual Studio 2017 / TeamCity était une combinaison des deux solutions de @ it3xl et d'une assistance de @ Night94 .

Le problème semblait être que la clé de registre de l' utilisateur TeamCity était manquante.

  • L'exécution DisableOutOfProcBuild.exe comme mentionné par @AussieAsh ne fonctionnait donc pas car elle ajoutait la clé de registre pour mon utilisateur uniquement.
  • l'utilisation du script mentionné par @ it3xl a également échoué lors de l'exécution à partir de TeamCity

La solution était donc d'ajouter ce qui suit en tant qu'étape de construction de ligne de commande depuis TeamCity avant MSBuild:

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

Une fois cette étape exécutée, elle peut être supprimée si nécessaire.

Résumé de la solution

Soit:

  • s'exécuter en DisableOutOfProcBuild.exe tant qu'utilisateur TeamCity , ou
  • accédez à la clé de registre HKCU\SOFTWARE\Microsoft\VisualStudioet vérifiez la version répertoriée, puis modifiez ce qui précède REG ADDpour correspondre aux versions (n'oubliez pas d'ajouter _Config) comme étape dans la version TeamCity.

Encore une fois, ce qui précède ne devrait être fait qu'une seule fois. Vous pouvez désactiver pour accéder à TeamCity en le laissant pour référence si vous rencontrez à nouveau le problème.

SharpC
la source
0

Étape 1 J'ai "créé une clé DWORD avec le nom" EnableOutOfProcBuild "et défini sa valeur sur" 0 "sur le chemin ci-dessous

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

Remarque: assurez-vous que vous êtes connecté avec le même utilisateur que vous essayez de créer le projet

Cela fonctionne bien pour moi.

Dharti Sutariya
la source
-1

Eu ce problème aujourd'hui, essayez de redémarrer Visual Studio, si cela ne le fait pas, créez un nouveau projet, enregistrez-le, puis copiez les fichiers du projet problématique. les deux méthodes ont fonctionné pour moi.

FadingAway90
la source
-3

Veuillez d'abord nettoyer la solution, construire la solution et ensuite essayer de construire le programme d'installation. Cela supprimera l'erreur.

Keennary Pungyera
la source