Si è verificato un errore durante la convalida. HRESULT = '8000000A'


98

Ho ricevuto questo errore per un po 'di tempo quando uso devenv su una build automatica. Ho esaminato tutti i siti Web che riesco a trovare e le solite risposte menzionano le dipendenze di aggiornamento (che credo lo risolvano per la distribuzione manuale, ma non per quella automatica) e la rimozione della codifica del controllo del codice sorgente dai progetti, il che non mi ha aiutato.

L'errore non si verifica ogni volta che compilo, ma sembra casuale su diversi progetti di distribuzione ogni volta.

Qualcuno ha qualche consiglio sul perché si verifica esattamente questo errore e su come risolverlo?


hai finalmente ottenuto una soluzione più elegante ? hai appena riattivato la compilazione quando fallisce , forse utile put script ( elegant solution) in sintesi, IMHO.
Kiquenet

Risposte:


53

Si tratta di un problema noto in Visual Studio 2010 (una condizione di competizione). Vedi questo elemento di connessione .

Ci siamo imbattuti anche in questo e abbiamo ricevuto una chiamata di supporto molto insoddisfacente su questo problema con Microsoft. Per farla breve: è un problema noto, non verrà risolto e Microsoft consiglia di abbandonare i progetti di installazione di Visual Studio (.vdproj).

Abbiamo aggirato questo problema attivando la build MSI una seconda volta quando fallisce per la prima volta. Non carino, ma funziona la maggior parte del tempo (il tasso di errore è sceso da ~ 10% a ~ 1%).


Grazie mille. Avevo setacciato Internet per scoprire perché stesse accadendo esattamente e mi sono imbattuto in numerose risposte di Microsoft che erano vaghe e inutili, per non dire altro. Ho appena riattivato la build quando fallisce, ma speravo in una soluzione più elegante. Grazie ancora.
Chris C.

@ChrisC. stackoverflow.com/a/25054572/206730 la risposta ha più voti, hai provato così?
Kiquenet

@ oɔɯǝɹ potresti spiegare cosa intendi dicendo attivando la build MSI una seconda volta ?, hai lo stesso problema ..
Leon Barkan

123

Aggiornamento per coloro che hanno riscontrato questo problema per VS2013 o VS2015 dopo aver aggiornato un progetto di installazione VS200X utilizzando l'estensione Microsoft Visual Studio Installer Projects.

Seguire la ricetta per v1.0.0.0 da MS ha finalmente funzionato per me:

Progetti di installazione di Microsoft Visual Studio

Sfortunatamente non siamo riusciti a risolvere tutti i casi del problema della riga di comando per questa versione poiché stiamo ancora esaminando il modo appropriato per risolverli. Quello che abbiamo è una soluzione alternativa che riteniamo funzionerà per quasi tutti loro. Se il problema persiste, puoi provare a modificare il valore DWORD per il seguente valore di registro su 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)
Se non esiste, puoi crearlo come DWORD.


23
Tieni presente che gli aggiornamenti di Visual Studio 2013 cancelleranno questa variabile dal registro: dovrai aggiungerla di nuovo.
Derek W

4
Solo una nota, quando si lavora con Jenkins, è necessario aggiungere la chiave di registro per l'utente che esegue gli schiavi Jenkins.
Jirong Hu

3
TIENI A MENTE l'hive del registro è HKEY_CURRENT_USER quindi se questo viene chiamato da un account diverso da te (ad es. Tfs build account) dovrai accedere come quell'account e aggiungere l'impostazione.
Mike Cheel

3
Per aggiungere commenti a @DerekW, questo può anche essere cancellato dagli aggiornamenti automatici.
JustAnotherDeveloper

2
@MikeCheel puoi impostare HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild per risolverlo per tutti gli utenti :)
Ian Ellis

58

Aggiornamento dal 14/6/2017

l'estensione Microsoft Visual Studio 2017 Installer Projects ora include uno strumento di supporto della riga di comando per rendere molto più semplice l'applicazione delle impostazioni del registro di sistema Microsoft Visual Studio 2017 Installer Projects

Percorsi di esempio dello strumento (in base alla versione di Visual Studio installata)

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


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

Dal README


Questo semplice strumento ha lo scopo di aiutare gli utenti a impostare la chiave di registro necessaria per aggirare questo errore che può apparire durante la creazione di progetti di installazione utilizzando build della riga di comando:

ERRORE: si è verificato un errore durante la convalida. HRESULT = '8000000A'

Lo strumento è pensato per Visual Studio 2017+ e imposta questa chiave reg per una particolare istanza di Visual Studio installata per l'utente corrente. Quindi, se lo stai impostando su un agente di compilazione, assicurati di utilizzare l'account utente che verrà utilizzato dalla build.

Eseguire "DisableOutOfProcBuild.exe help" per i dettagli sull'utilizzo.



5
Questa è la soluzione migliore per VS2017
Simon O'Beirne,

1
Penso che questa sia la terza volta in cui ho avuto questo problema, ho passato ore a cercare di risolverlo e poi finalmente ho riscoperto questa risposta. Grazie!
Hannes Sachsenhofer


1
Perfetto per me che uso Visual Studio 2019 Community Edition sulla mia macchina di compilazione.
Max Power

48

Ho letto da qualche parte online su questo e l'ho risolto in questo modo (è stato suggerito da qualcuno) :

  • apri il tuo file di progetto di installazione (.vdproj) nel blocco note (o qualsiasi altro editor di testo)
  • eliminare queste righe all'inizio del file .vdproj:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
  • costruire di nuovo - l'errore è sparito

Quell'errore non mi ha impedito di distribuire, costruire, eseguire il debug (o qualsiasi altra cosa) il mio progetto, mi ha solo infastidito. Ed è successo anche se ho impostato tutti i progetti per essere compilati in una configurazione corrente e il progetto di installazione non lo è.


3
Il problema con il problema è che si tratta di una condizione di gara. Effettuare una regolazione (casuale) e la ricostruzione farà sembrare che sia stato risolto. Anche solo la ricostruzione avrebbe fatto scomparire il problema. Vorrei sapere se rimane "riparato" dopo 100 build.
dal

6
Potrebbe essere una condizione di gara, ma la correzione di cui sopra funziona e mi permette di andare avanti con la mia vita (fino al prossimo numero che mi fa
scoppiare l'

39

Soluzione permanente (+ per macchine da costruzione)

Visual Studio 2017

Per VS 2017, chiama i seguenti script CMD con il tuo account Windows di destinazione:

Community edition
professionale edizione
Enterprise edition

TL; DR. Note per i poveri DisableOutOfProcBuild.exe, la soluzione offerta da Microsoft che uso per VS 2017.

  1. DisableOutOfProcBuild.exenon dà per scontato che lo chiamerai dalla sua cartella di installazione . Quindi, non puoi copiare questo file .exe. (A proposito, se vuoi creare .vdproj, devi installare VS.)
  2. DisableOutOfProcBuild.exe funzionerà solo se la directory CMD corrente è impostata sul percorso di installazione di DisableOutOfProcBuild.exe.

Ad esempio, per l'edizione VS Professional dobbiamo chiamare

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

Visual Studio 2015 e versioni precedenti

da CMD per l'attuale utente Windows

Per molte persone la creazione / correzione sotto HKEY_CURRENT_USER\..non sempre funziona o funziona in modo permanente.
Cercando di risolvere questo problema, ho scoperto che in effetti devo creare / modificare qualche strana chiave sotto HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

Ma ho anche scoperto che se userò una console CMD HKCUcon la correzione proposta,
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
questo scriverà il valore esattamente nella strana chiave HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ... , non in HKEY_CURRENT_USER .

Quindi, funziona da un primo scatto e per sempre. Usa 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)

Risolutore per build server

D'altra parte questo codice funziona sempre per un account utente corrente che lo avvia (a causa di HKEY_CURRENT_USER). Ma i build-server spesso usano account dedicati o Local System, ecc.

L'ho risolto sulle mie macchine di compilazione aggiungendo il seguente semplice file batch alle mie attività di compilazione (Jenkins, TeamCity, CruiseControl)

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


1
dopo aver patchato il registro per pochi mesi da 2 anni ormai, e il file CMD non funziona bene, qualche soluzione
CMS

1
Lo stesso problema è apparso dal nulla durante la creazione di un MSI dal progetto di installazione su un server di compilazione. Il processo di compilazione ha sempre funzionato prima e non era cambiato, ma ha iniziato a fallire costantemente. Aggiunto questo allo script di build appena prima della chiamata a devenv.exe e ha funzionato per me in VS 2013. Grazie mille.
Jim,

In VS 15.8.x ottengo questo errore anche dopo aver eseguito l'EXE, tuttavia chiudendo VS, quindi eseguendo l'EXE e quindi riavviando VS, l'errore viene risolto. Quindi qualcosa in VS sta ripristinando l'impostazione reg e la soluzione è chiudere VS, eseguire nuovamente DisableOutOfProcBuild.exe e quindi avviare VS.
user2728841

1
Questa correzione ha funzionato per le build di VS2015 TFS vNext. Usiamo l'account locale NT Authority \ Servizio di rete per le build automatiche, quindi l'aggiunta manuale della chiave reg da RDPing nella VM di build non ha risolto l'errore di compilazione automatica. Ho aggiunto il passaggio per creare la chiave reg subito prima del passaggio per chiamare Devenv.com per il file VDPROJ. Dopo aver lottato così a lungo per trovare una soluzione per questo, voglio ringraziare it3xl per averlo pubblicato !!!
ckkkitty

6

Come sottolineato nei commenti qui , per VS2017 sarà necessario creare DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild Sostituisci [IDKey] con il suffisso ID della sottochiave 15.0 esistente di VisualStudio .

Ad esempio, se in VisualStudio vedi la chiave "15.0_abcd1234", sarebbe "15.0_abcd1234_Config".

esempio di regedit



4

Ho riscontrato questo problema dopo aver spostato il mio progetto su un altro PC (VS 2010, più progetti in una soluzione).

Il mio progetto era già stato creato nel computer di origine ma dopo averlo copiato nella destinazione, non sono stato in grado di creare il mio progetto di installazione e ho riscontrato questo errore.

Ho aperto la /Debugcartella sotto il percorso principale del mio progetto di installazione, c'erano MyProject.msie setup.exefile, li ho cancellati e ho ricostruito il mio progetto, ha funzionato. Spero che funzioni anche per alcuni ragazzi.


un altro +1, la semplice eliminazione dei file .msi e setup.exe e la ricostruzione del progetto di installazione ha fatto scomparire il messaggio di errore
George

e un -1, sembra risolvere questo problema solo temporaneamente, dopo aver riaperto la soluzione il problema è ricomparso
George

@ChrisSchiffhauer per risolverlo, solo elimini i file msi ed exe ?
Kiquenet

Ben detto da @kubilay, molte grazie per la tua soluzione !! Questo problema può causare durante il porting di progetti da un framework più vecchio a uno più recente, poiché impostiamo una versione più recente del framework nelle proprietà del progetto. È possibile che il progetto di installazione contenga file .msi e .exe nella posizione di destinazione. Con la nuova versione del framework, può generare errori durante la sovrascrittura dei file esistenti. Quindi, fai clic con il pulsante destro del mouse sul progetto di installazione -> vai a 'Nome file di output' (in Proprietà di configurazione \ Build) -> fai clic sul pulsante '...' (sfoglia) -> ottieni la posizione di destinazione ed elimina anche i file .msi .exe . Ora crea il progetto e dovrebbe funzionare.
Navin Pandit

1

Il controllo delle dipendenze del progetto può aiutare.

In VS 2010 fare clic con il pulsante destro del mouse in Esplora soluzioni, quindi fare clic su Dipendenze rilevate e Aggiorna dipendenze, a volte risolve il problema.


1

Sto usando VS 2017 ma nessuna delle soluzioni di cui sopra funziona. Quindi, aggiornata l'ultima versione di VS 2017 e applica la soluzione @AussieAsh e funziona bene ...

Spero che questa soluzione possa funzionare qualcuno.


0

con me è stato causato da un file .suo sbagliato. (causato da skydrive) l'eliminazione di questo file ha risolto il problema.


DisableOutOfProcBuild.exe ha funzionato per un po 'fino a quando non ha funzionato. L'eliminazione del file .suo ha risolto il problema.
Sego

0

Visual Studio 2017 archivia le informazioni precedentemente memorizzate nel registro pubblico all'interno di un nuovo registro privato: C: \ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin

Qui è dove è necessario aggiungere EnableOutOfProcBuild secondo le istruzioni per VS2013 / VS2015.

Per aggiornare il registro privato puoi usare Regedit.

Fare clic per selezionare il nodo HKEY_USERS.

Seleziona File> Carica Hive e vai al file privateregistry.bin. Quando lo selezioni, Regedit chiederà un nome - non importa come lo chiami perché presto avremo finito.

Ora apparirà la struttura del registro e potrai navigare fino a Microsoft \ VisualStudio \ 15.0_Config \ MSBuild

Crea un nuovo DWORD EnableOutOfProcBuild con un valore di 0.

Una volta terminato, seleziona la radice dell'hive (qualunque sia il nome che hai chiamato in precedenza) e usa File> Scarica Hive per scollegarti da esso.

Ora dovrebbe funzionare: o)


Non c'è bisogno di fare confusione con il file del registro privato, puoi semplicemente creare la chiave 15.0_ <x> _Config nel registro regolare da solo (vedi sopra)
Night94

0

Il mio Visual Studio 2013 è diventato in qualche modo sperimentale, quindi ha iniziato a utilizzare un'altra chiave di registro per EnableOutOfProcBuild

inserisci qui la descrizione dell'immagine

Per essere sicuro ho appena aggiunto un'altra riga nel mio file batch per impostare il valore del registro e ha iniziato a funzionare:

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

0

Esegui solo questo exe

(Edizione Community di Visual Studio 2017)

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

(Edizione Visual Studio 2017 Enterprise)

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


0

Ok, ho esaminato questo problema fino a quando non ero blu in faccia, rosso in faccia, perdendo i capelli e perdendo la testa, e ho provato ogni passo che ho trovato. MrGreen

La mia soluzione per Visual Studio 2017 / TeamCity era una combinazione delle due soluzioni di @ it3xl e dell'assistenza di @ Night94 .

Il problema sembrava essere che mancava la chiave di registro per l' utente di TeamCity .

  • L'esecuzione DisableOutOfProcBuild.exe come menzionato da @AussieAsh quindi non ha funzionato poiché ha aggiunto la chiave di registro solo per il mio utente.
  • anche l'utilizzo dello script menzionato da @ it3xl non è riuscito se eseguito da TeamCity

La soluzione era quindi aggiungere quanto segue come passaggio di compilazione della riga di comando da TeamCity prima di MSBuild:

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

Una volta eseguito questo passaggio, è possibile rimuoverlo se necessario.

Riepilogo della soluzione

O:

  • eseguito DisableOutOfProcBuild.exe come utente di TeamCity , o
  • vai alla chiave di registro HKCU\SOFTWARE\Microsoft\VisualStudioe controlla la versione elencata, quindi modifica quanto sopra REG ADDin modo che corrisponda alle versioni (ricordati di aggiungere _Config) come passaggio nella build di TeamCity.

Anche in questo caso quanto sopra dovrebbe essere fatto solo una volta. Potresti disabilitare l'accesso a TeamCity lasciandolo come riferimento se dovessi riscontrare di nuovo il problema.


0

Passaggio 1 Ho "creato una chiave DWORD con il nome" EnableOutOfProcBuild "e ho impostato il suo valore su" 0 "nel percorso sottostante

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

Nota: assicurati di aver effettuato l'accesso con lo stesso utente con cui stai tentando di creare il progetto

Funziona bene per me.


-1

Hai avuto questo problema oggi, prova a riavviare Visual Studio, se ciò non fa, crea un nuovo progetto, salvalo e quindi copia i file dal progetto problematico. entrambi i metodi hanno funzionato per me.


-3

Si prega di pulire prima la soluzione, creare la soluzione e poi provare a creare il programma di installazione. Rimuoverà l'errore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.