Bei der Validierung ist ein Fehler aufgetreten. HRESULT = '8000000A'

98

Ich habe diesen Fehler für eine Weile erhalten, wenn ich devenv für einen automatischen Build verwende. Ich habe jede Website durchgesehen, die ich finden kann, und die üblichen Antworten erwähnen erfrischende Abhängigkeiten (von denen ich glaube, dass sie für die manuelle Bereitstellung, aber nicht für die automatische Bereitstellung behoben werden) und das Entfernen der Quellcodeverwaltung aus den Projekten, was mir nicht geholfen hat.

Der Fehler tritt nicht jedes Mal auf, wenn ich ihn erstelle, aber er scheint bei verschiedenen Bereitstellungsprojekten jedes Mal zufällig zu sein.

Hat jemand einen Rat, warum genau dieser Fehler auftritt und wie man ihn behebt?

Chris C.
quelle
Hast du endlich eine elegantere Lösung bekommen ? Sie haben gerade den Build erneut ausgelöst, wenn er fehlschlägt . Vielleicht nützlich, setzen Sie script ( elegant solution) in gist, IMHO.
Kiquenet

Antworten:

53

Dies ist ein bekanntes Problem in Visual Studio 2010 (eine Racebedingung). Siehe dieses Verbindungselement .

Wir sind auch darauf gestoßen und hatten einen sehr unbefriedigenden Supportanruf zu diesem Problem bei Microsoft. Lange Rede, kurzer Sinn: Es ist ein bekanntes Problem, das nicht gelöst werden kann, und Microsoft empfiehlt, sich von Visual Studio Setup-Projekten (.vdproj) zu entfernen.

Wir haben dieses Problem umgangen, indem wir den MSI-Build ein zweites Mal ausgelöst haben, wenn er zum ersten Mal fehlschlägt. Nicht schön, aber es funktioniert meistens (die Fehlerrate ist von ~ 10% auf ~ 1% gesunken).

oɔɯǝɹ
quelle
Vielen Dank. Ich hatte das Internet durchsucht, um herauszufinden, warum genau es geschah, und war auf zahlreiche Microsoft-Antworten gestoßen, die, gelinde gesagt, vage und nicht hilfreich waren. Ich habe den Build gerade erneut ausgelöst, wenn er fehlschlägt, aber auf eine elegantere Lösung gehofft. Danke noch einmal.
Chris C.
@ ChrisC. stackoverflow.com/a/25054572/206730 Antwort hat mehr Stimmen, haben Sie es so versucht?
Kiquenet
@ oɔɯǝɹ Könnten Sie erklären, was Sie damit meinen, dass Sie den MSI-Build ein zweites Mal auslösen? Haben Sie das gleiche Problem.
Leon Barkan
122

Update für diejenigen, die dieses Problem für VS2013 oder VS2015 nach dem Upgrade eines VS200X-Setup-Projekts mit der Erweiterung Microsoft Visual Studio Installer Projects erhalten haben.

Nach dem Rezept für v1.0.0.0 von MS hat es endlich für mich funktioniert:

Microsoft Visual Studio-Installationsprojekte

Leider konnten wir nicht alle Fälle des Befehlszeilenproblems für diese Version beheben, da wir noch nach der geeigneten Möglichkeit suchen, sie zu beheben. Was wir haben, ist eine Problemumgehung, von der wir glauben, dass sie für fast alle von ihnen funktioniert. Wenn dieses Problem weiterhin auftritt, können Sie versuchen, den DWORD-Wert für den folgenden Registrierungswert in 0 zu ändern: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild (VS2013)
oder
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild(VS2015)
Wenn dies nicht vorhanden ist, können Sie ihn als DWORD erstellen.

kristian mo
quelle
22
Beachten Sie, dass Visual Studio 2013-Updates diese Variable aus Ihrer Registrierung löschen. Sie müssen sie erneut hinzufügen.
Derek W
4
Nur ein Hinweis, wenn Sie mit Jenkins arbeiten, muss der Registrierungsschlüssel für den Benutzer hinzugefügt werden, der Jenkins-Slaves ausführt.
Jirong Hu
3
BEACHTEN SIE, dass die Registrierungsstruktur HKEY_CURRENT_USER lautet. Wenn dies also von einem anderen Konto als Ihnen aufgerufen wird (z. B. tfs build account), müssen Sie sich als DIESES Konto anmelden und die Einstellung hinzufügen.
Mike Cheel
3
Zum Hinzufügen zu @ DerekW-Kommentaren kann dies auch durch automatische Updates gelöscht werden.
JustAnotherDeveloper
2
@ MikeCheel Sie können HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild so einstellen, dass es für alle Benutzer behoben wird :)
Ian Ellis
57

Update vom 14.06.2017

Die Microsoft Visual Studio 2017 Installer Projects-Erweiterung enthält jetzt ein Befehlszeilen-Hilfsprogramm, mit dem die Registrierungseinstellung für die Anwendung von Microsoft Visual Studio 2017 Installer Projects erheblich vereinfacht wird

Beispielpfade des Tools (basierend auf der installierten Version von Visual Studio)

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


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

Aus der README


Dieses einfache Tool soll Benutzern dabei helfen, den Registrierungsschlüssel festzulegen, der erforderlich ist, um diesen Fehler zu umgehen, der beim Erstellen von Installationsprojekten mithilfe von Befehlszeilen-Builds auftreten kann:

FEHLER: Beim Überprüfen ist ein Fehler aufgetreten. HRESULT = '8000000A'

Das Tool ist für Visual Studio 2017+ gedacht und legt diesen Registrierungsschlüssel für eine bestimmte installierte Visual Studio-Instanz für den aktuellen Benutzer fest. Wenn Sie dies für einen Build-Agenten festlegen, stellen Sie sicher, dass Sie das Benutzerkonto verwenden, das der Build verwendet.

Führen Sie die Hilfe "DisableOutOfProcBuild.exe" aus, um Details zur Verwendung zu erhalten.


Aussie Ash
quelle
4
Dies ist die beste Lösung für VS2017
Simon O'Beirne
Ich denke, dies ist das dritte Mal, dass ich dieses Problem hatte, stundenlang versuchte, es zu beheben und dann endlich diese Antwort wieder zu entdecken. Vielen Dank!
Hannes Sachsenhofer
2
Sie müssen das Verzeichnis an diesen Speicherort ändern, damit es ordnungsgemäß funktioniert. Siehe github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/… und github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/…
GilesDMiddleton
Perfekt für mich mit Visual Studio 2019 Community Edition auf meinem Build-Computer.
Max Power
48

Ich habe irgendwo online darüber gelesen und es so behoben (es wurde von jemandem vorgeschlagen) :

  • Öffnen Sie Ihre Setup-Projektdatei (.vdproj) im Editor (oder einem anderen Texteditor).
  • Löschen Sie diese Zeilen am Anfang der .vdproj-Datei:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
    
  • erneut erstellen - Fehler ist weg

Dieser Fehler hat mich nicht davon abgehalten, mein Projekt bereitzustellen, zu erstellen, zu debuggen (oder zu testen). Er hat mich nur geärgert. Und es kam auch dann zum Einsatz, wenn ich alle Projekte so eingestellt habe, dass sie in einer aktuellen Konfiguration erstellt werden und das Setup-Projekt nicht.

Cipi
quelle
3
Das Problem mit dem Problem ist, dass es sich um eine Rennbedingung handelt. Wenn Sie eine (zufällige) Anpassung und Neuerstellung vornehmen, scheint dies behoben zu sein. Nur ein Umbau hätte das Problem ebenfalls verschwinden lassen. Ich würde gerne wissen, ob es nach 100 Builds "behoben" bleibt.
o
6
Könnte eine Rennbedingung sein, aber das obige Update funktioniert und ermöglicht es mir, mit meinem Leben
weiterzumachen
39

Permanente Lösung (+ für Baumaschinen)

Visual Studio 2017

Rufen Sie für VS 2017 die folgenden CMD-Skripts unter Ihrem Windows-Zielkonto auf:

Community Edition
Professional Edition
Enterprise Edition

TL; DR. Hinweise für Arme DisableOutOfProcBuild.exe, die von Microsoft angebotene Lösung, die ich für VS 2017 verwende.

  1. DisableOutOfProcBuild.exegeht nicht davon aus, dass Sie es aus dem Installationsordner aufrufen . Sie können diese EXE-Datei also nicht kopieren. (Wenn Sie .vdproj erstellen möchten, müssen Sie übrigens VS installieren.)
  2. DisableOutOfProcBuild.exe funktioniert nur, wenn das aktuelle CMD-Verzeichnis auf den Installationsort von DisableOutOfProcBuild.exe festgelegt ist.

Als Beispiel für die VS Professional Edition müssen wir anrufen

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

Visual Studio 2015 und früher

von CMD für den aktuellen Windows-Benutzer

Für viele Menschen HKEY_CURRENT_USER\..funktioniert die Erstellung / Korrektur unter nicht immer oder dauerhaft.
Beim Versuch, dies zu lösen, stellte ich fest, dass ich tatsächlich einen seltsamen Schlüssel unter HKEY_USERS erstellen / ändern muss HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

Ich habe aber auch festgestellt, dass, wenn ich eine CMD-Konsole HKCUmit dem vorgeschlagenen Fix verwende
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
, der Wert genau in diesen seltsamen Schlüssel HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ... geschrieben wird , nicht in den HKEY_CURRENT_USER .

Das funktioniert also von Anfang an und für immer. Verwenden Sie einfach die CMD-Konsole.

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 für Build-Server

Andererseits funktioniert dieser Code immer für ein aktuelles Benutzerkonto, das ihn startet (aufgrund von HKEY_CURRENT_USER). Build-Server verwenden jedoch häufig dedizierte Konten oder ein lokales System usw.

Ich habe es auf meinen Build-Maschinen behoben, indem ich meinen Build-Aufgaben die folgende einfache Batch-Datei hinzugefügt habe (Jenkins, TeamCity, CruiseControl).

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

it3xl
quelle
1
Nach dem Patchen der Reg Evrey einige Monate seit 2 Jahren, und die CMD-Datei funktioniert nicht gut eine Lösung
CMS
1
Beim Erstellen einer MSI aus einem Setup-Projekt auf einem Build-Server ist aus dem Nichts dasselbe Problem aufgetreten. Der Erstellungsprozess funktionierte immer zuvor und hatte sich nicht geändert, schlug jedoch konsequent fehl. Fügte dies dem Build-Skript kurz vor dem Aufruf von devenv.exe hinzu und es funktionierte für mich in VS 2013. Vielen Dank.
Jim
In VS 15.8.x wird dieser Fehler auch nach dem Ausführen der EXE-Datei angezeigt. Wenn Sie jedoch VS schließen, dann die EXE-Datei ausführen und VS neu starten, wird der Fehler behoben. Etwas in VS setzt also die Reg-Einstellung zurück, und die Lösung besteht darin, VS zu schließen, DisableOutOfProcBuild.exe erneut auszuführen und dann VS zu starten.
user2728841
1
Dieser Fix funktionierte für VS2015 TFS vNext-Builds. Wir verwenden das lokale NT Authority \ Network Service-Konto für automatische Builds. Durch manuelles Hinzufügen des Registrierungsschlüssels aus RDPing zur Build-VM wurde der Fehler beim automatischen Erstellen nicht behoben. Ich habe den Schritt zum Erstellen des Registrierungsschlüssels unmittelbar vor dem Schritt zum Aufrufen von Devenv.com für die VDPROJ-Datei hinzugefügt. Nachdem ich so lange darum gekämpft habe, eine Lösung dafür zu finden, möchte ich it3xl sehr dafür danken, dass sie es veröffentlicht hat !!!
ckkkitty
6

Wie in den Kommentaren hier ausgeführt , müssen Sie für VS2017 das DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild erstellen. Ersetzen Sie [IDKey] durch das ID-Suffix des vorhandenen 15.0-Unterschlüssels von VisualStudio .

Wenn Sie beispielsweise unter VisualStudio den Schlüssel "15.0_abcd1234" sehen, lautet dieser "15.0_abcd1234_Config".

regedit Beispiel

Nacht94
quelle
4

Ich habe dieses Problem festgestellt, nachdem ich mein Projekt auf einen anderen PC verschoben habe (VS 2010, mehrere Projekte in einer Lösung).

Mein Projekt wurde bereits auf dem Quellcomputer erstellt, aber nachdem ich es auf das Ziel kopiert hatte, konnte ich mein Setup-Projekt nicht erstellen und hatte diesen Fehler.

Ich habe den /DebugOrdner unter meinem Setup Project-Stammpfad geöffnet , es gab MyProject.msiund setup.exeDateien, ich habe sie gelöscht und mein Projekt erneut erstellt, es hat funktioniert. Hoffe, es funktioniert auch für einige Jungs.

Kubilay
quelle
eine weitere +1, nur das Löschen der .msi- und setup.exe-Dateien und das Neuerstellen des Setup-Projekts ließen die Fehlermeldung verschwinden
George
und ein -1, es scheint, dieses Problem nur vorübergehend zu lösen, nach dem erneuten Öffnen der Lösung trat das Problem wieder auf
George
@ChrisSchiffhauer für die Lösung, nur Sie löschen MSI und Exe-Dateien ?
Kiquenet
Gut gesagt von @kubilay, vielen Dank für Ihre Lösung! Dieses Problem kann beim Portieren von Projekten von einem älteren auf ein neueres Framework auftreten, da wir in den Projekteigenschaften eine neuere Framework-Version festlegen. Möglicherweise enthält das Setup-Projekt MSI- und EXE-Dateien am Zielspeicherort. Mit der neuen Framework-Version kann beim Überschreiben von Dateien, die beendet werden, ein Fehler auftreten. Klicken Sie also mit der rechten Maustaste auf Setup-Projekt -> gehen Sie zu 'Name der Ausgabedatei' (unter Konfigurationseigenschaften \ Erstellen) -> klicken Sie auf die Schaltfläche '...' (Durchsuchen) -> rufen Sie den Zielspeicherort ab und löschen Sie auch MSI- und EXE-Dateien . Erstellen Sie nun das Projekt und es sollte funktionieren.
Navin Pandit
1

Das Überprüfen der Projektabhängigkeiten kann hilfreich sein.

Klicken Sie in VS 2010 mit der rechten Maustaste in Ihren Lösungs-Explorer und dann auf Erkannte Abhängigkeiten und Abhängigkeiten aktualisieren. Das Problem wird manchmal behoben.

Jla
quelle
1

Ich verwende VS 2017, aber keine der oben genannten Lösungen funktioniert. Aktualisieren Sie also die neueste Version von VS 2017 und wenden Sie die @ AussieAsh-Lösung an.

Ich hoffe diese Lösung kann jemand funktionieren.

Rikin Patel
quelle
0

bei mir wurde es durch eine falsche .suo datei verursacht. (verursacht durch skydrive) Das Löschen dieser Datei löste das Problem.

Aswin
quelle
DisableOutOfProcBuild.exe funktionierte eine Weile, bis es nicht mehr funktionierte. Das Löschen der .suo-Datei hat das Problem behoben.
Sego
0

Visual Studio 2017 speichert die zuvor in der öffentlichen Registrierung gespeicherten Informationen in einer neuen privaten Registrierung: C: \ Benutzer \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin

Hier müssen Sie EnableOutOfProcBuild gemäß den Anweisungen für VS2013 / VS2015 hinzufügen.

Um die private Registrierung zu aktualisieren, können Sie Regedit verwenden.

Klicken Sie, um den Knoten HKEY_USERS auszuwählen.

Wählen Sie Datei> Hive laden und navigieren Sie zur Datei privateregistry.bin. Wenn Sie es auswählen, fragt Regedit nach einem Namen - es spielt keine Rolle, wie Sie es nennen, da wir bald fertig sind.

Nun wird die Registrierungsstruktur angezeigt und Sie können zu Microsoft \ VisualStudio \ 15.0_Config \ MSBuild navigieren

Erstellen Sie ein neues DWORD EnableOutOfProcBuild mit dem Wert 0.

Wenn Sie fertig sind, wählen Sie das Stammverzeichnis des Hives aus (wie auch immer Sie es zuvor genannt haben) und verwenden Sie Datei> Hive entladen, um sich von ihm zu trennen.

Jetzt sollte es funktionieren: o)

Gwynge
quelle
Sie müssen sich nicht mit der privaten Registrierungsdatei herumschlagen, sondern können den Schlüssel 15.0_ <x> _Config einfach selbst in der regulären Registrierung erstellen (siehe oben)
Night94,
0

Mein Visual Studio 2013 wurde irgendwie experimentell, sodass ein anderer Registrierungsschlüssel für EnableOutOfProcBuild verwendet wurde

Geben Sie hier die Bildbeschreibung ein

Um sicherzugehen, dass ich gerade eine weitere Zeile in meine Batchdatei zum Festlegen des Registrierungswerts eingefügt habe und es funktioniert hat:

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
quelle
0

Führen Sie einfach diese Exe aus

(Visual Studio 2017 Community Edition)

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

(Visual Studio 2017 Enterprise Edition)

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

Lakmal
quelle
0

Okay, ich habe mich mit diesem Thema befasst, bis ich blau im Gesicht war, rot im Gesicht, meine Haare und meinen Verstand verloren und jeden Schritt ausprobiert, den ich finden konnte. :-D

Meine Lösung für Visual Studio 2017 / TeamCity war eine Kombination der beiden Lösungen von @ it3xl und einige Unterstützung von @ Night94 .

Das Problem schien zu sein, dass der Registrierungsschlüssel für den TeamCity-Benutzer fehlte.

  • Das Ausführen DisableOutOfProcBuild.exe wie von @AussieAsh erwähnt funktionierte daher nicht, da der Registrierungsschlüssel nur für meinen Benutzer hinzugefügt wurde.
  • Die Verwendung des von @ it3xl erwähnten Skripts schlug auch fehl, wenn es von TeamCity ausgeführt wurde

Die Lösung bestand daher darin, Folgendes als Befehlszeilenerstellungsschritt von TeamCity vor MSBuild hinzuzufügen:

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

Sobald dieser Schritt ausgeführt wurde, kann er bei Bedarf entfernt werden.

Lösungsübersicht

Entweder:

  • laufen DisableOutOfProcBuild.exe als Teamcity Benutzer oder
  • Navigieren Sie zum Registrierungsschlüssel, HKCU\SOFTWARE\Microsoft\VisualStudioüberprüfen Sie die aufgelistete Version und ändern Sie die obigen REG ADDVersionen _Configals Schritt im TeamCity-Build , um sie an die Versionen anzupassen (denken Sie daran, sie hinzuzufügen ).

Auch hier sollte das oben genannte nur einmal durchgeführt werden müssen. Sie können das Betreten von TeamCity deaktivieren und es als Referenz belassen, falls Sie erneut auf das Problem stoßen.

SharpC
quelle
0

Schritt 1 Ich habe einen DWORD-Schlüssel mit dem Namen " EnableOutOfProcBuild " erstellt und seinen Wert im folgenden Pfad auf " 0 " gesetzt

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

Hinweis: Stellen Sie sicher, dass Sie sich mit demselben Benutzer angemeldet haben, mit dem Sie das Projekt erstellen möchten

Es funktioniert gut für mich.

Dharti Sutariya
quelle
-1

Wenn dieses Problem heute aufgetreten ist, starten Sie Visual Studio neu. Wenn dies nicht der Fall ist, erstellen Sie ein neues Projekt, speichern Sie es und kopieren Sie die Dateien aus dem Problemprojekt erneut. Beide Methoden haben bei mir funktioniert.

FadingAway90
quelle
-3

Bitte reinigen Sie zuerst die Lösung, erstellen Sie die Lösung und versuchen Sie dann, das Installationsprogramm zu erstellen. Der Fehler wird behoben.

Keennary Pungyera
quelle