Произошла ошибка при проверке. HRESULT = '8000000A'


98

Я получаю эту ошибку некоторое время при использовании devenv для автоматической сборки. Я просмотрел все веб-сайты, которые могу найти, и в обычных ответах упоминаются обновления зависимостей (которые, как я считаю, исправляют его для ручного развертывания, но не для автоматического) и удаление кодирования системы управления версиями из проектов, что мне не помогло.

Ошибка возникает не каждый раз, когда я создаю, но каждый раз она кажется случайной в разных проектах развертывания.

Есть ли у кого-нибудь советы о том, почему именно возникает эта ошибка и как ее исправить?


Вы наконец получили более элегантное решение ? вы только что повторно запускали сборку, когда она терпит неудачу , Может быть, полезно поместить script ( elegant solution) в суть, ИМХО.
Kiquenet

Ответы:


53

Это известная проблема в Visual Studio 2010 (состояние гонки). См. Этот элемент подключения .

Мы тоже столкнулись с этим, и нам очень неудовлетворительно позвонили в службу поддержки Microsoft по этой проблеме. Короче говоря: это известная проблема, она не будет решена, и Microsoft советует отказаться от проектов установки Visual Studio (.vdproj).

Мы обошли эту проблему, запустив сборку MSI во второй раз, когда она выйдет из строя в первый раз. Не очень хорошо, но большую часть времени он работает (частота ошибок снизилась с ~ 10% до ~ 1%).


Большое спасибо. Я искал в Интернете, почему именно это происходит, и наткнулся на многочисленные ответы Microsoft, которые были расплывчатыми и, мягко говоря, бесполезными. Я только что повторно запускал сборку, когда она терпела неудачу, но надеялся на более элегантное решение. Еще раз спасибо.
Chris C.

@ChrisC. stackoverflow.com/a/25054572/206730 ответ имеет больше голосов, вы пробовали это?
Kiquenet

@ oɔɯǝɹ не могли бы вы объяснить, что вы имеете в виду, говоря о запуске сборки MSI во второй раз? У вас та же проблема ..
Леон Баркан

123

Обновление для тех, у кого возникла эта проблема для VS2013 или VS2015 после обновления проекта установки VS200X с помощью расширения Microsoft Visual Studio Installer Projects.

Следуя рецепту v1.0.0.0 от MS, наконец, у меня все заработало:

Проекты установщика Microsoft Visual Studio

К сожалению, мы не смогли решить все случаи проблем с командной строкой в ​​этом выпуске, так как мы все еще исследуем подходящий способ их решения. Что у нас есть, так это обходной путь, который, как мы полагаем, будет работать почти для всех из них. Если у вас все еще возникает эта проблема, вы можете попробовать изменить значение DWORD для следующего значения реестра на 0: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild (VS2013)
или
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild(VS2015).
Если этого не существует, вы можете создать его как DWORD.


23
Обратите внимание, что обновления Visual Studio 2013 сотрут эту переменную из вашего реестра - вам нужно будет повторно добавить ее.
Derek W

4
Замечу, что при работе с Jenkins необходимо добавить ключ реестра для пользователя, запускающего подчиненные устройства Jenkins.
Джиронг Ху

3
СОБЛЮДАЙТЕ ВНИМАНИЕ, что куст реестра - HKEY_CURRENT_USER, поэтому, если он вызывается другой учетной записью, чем вы (например, учетной записью сборки tfs), вам нужно будет войти в систему как ЭТА учетная запись и добавить настройку.
Майк Чил,

3
Чтобы добавить в комментарии @DerekW, это также можно стереть с помощью автоматических обновлений.
JustAnotherDeveloper

2
@MikeCheel, вы можете установить HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild, чтобы исправить это для всех пользователей :)
Ян Эллис

58

Обновление от 14.06.2017

расширение Microsoft Visual Studio 2017 Installer Projects теперь включает вспомогательный инструмент командной строки для упрощения применения параметров реестра Microsoft Visual Studio 2017 Installer Projects.

Примеры путей к инструменту (в зависимости от установленной версии Visual Studio)

Профессиональная версия: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe


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

Из README


Этот простой инструмент предназначен для помощи пользователям в установке ключа реестра, необходимого для обхода этой ошибки, которая может появиться при создании проектов установщика с использованием сборок из командной строки:

ОШИБКА: при проверке произошла ошибка. HRESULT = '8000000A'

Инструмент предназначен для Visual Studio 2017+ и устанавливает этот ключ reg для конкретного установленного экземпляра Visual Studio для текущего пользователя. Поэтому, если вы устанавливаете это в агенте сборки, обязательно используйте учетную запись пользователя, которую будет использовать сборка.

Запустите «DisableOutOfProcBuild.exe help» для получения подробной информации об использовании.



5
Это лучшее решение для VS2017
Саймон О'Бейрн

1
Я думаю, что это уже третий раз, когда у меня возникла эта проблема, я потратил часы, пытаясь исправить, а затем, наконец, заново открыл для себя этот ответ. Спасибо!
Hannes Sachsenhofer

2
Вы должны изменить каталог в этом месте, чтобы он работал правильно. См. Github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/… и github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/…
GilesDMiddleton

1
Идеально подходит для меня, использующего Visual Studio 2019 Community Edition на моем компьютере сборки.
Максимальная мощность

48

Я читал где-то в Интернете об этом, и я исправил это так (это было кем-то предложено) :

  • откройте файл вашего установочного проекта (.vdproj) в блокноте (или любом другом текстовом редакторе)
  • удалите эти строки в начале файла .vdproj:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
  • построить снова - ошибка исчезла

Эта ошибка не помешала мне развернуть, собрать, отладить (или что-то еще) мой проект, она просто меня раздражала. И это продолжалось, даже если я настроил все проекты на сборку в текущей конфигурации, а проект установки - на нет.


3
Проблема в том, что это состояние гонки. Выполнение (случайной) корректировки и перестройки покажет, что все исправлено. Простая перестройка также решила бы проблему. Я хотел бы знать, остается ли он «исправленным» после 100 сборок.
oɔɯǝɹ

6
Возможно, это состояние гонки, но вышеуказанное исправление работает и позволяет мне продолжать свою жизнь (до следующей проблемы, из-за которой я
перебираю

39

Постоянное решение (+ для сборочных машин)

Visual Studio 2017

Для VS 2017 вызовите следующие сценарии CMD под своей целевой учетной записью Windows:

Редакция сообщества
Профессиональная версия
Корпоративная версия

TL; DR. Примечания для бедных DisableOutOfProcBuild.exe, предлагаемое Microsoft решение, которое я использую для VS 2017.

  1. DisableOutOfProcBuild.exeне предполагает, что вы вызовете его из установочной папки . Таким образом, вы не можете скопировать этот EXE-файл. (Кстати, если вы хотите собрать .vdproj, вы должны установить VS.)
  2. DisableOutOfProcBuild.exe будет работать только в том случае, если в качестве текущего каталога CMD выбрана установка DisableOutOfProcBuild.exe.

Например, для версии VS Professional мы должны вызвать

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

Visual Studio 2015 и ранее

CMD для текущего пользователя Windows

Для многих людей создание / исправление HKEY_CURRENT_USER\..не всегда работает или работает постоянно.
Пытаясь решить эту проблему, я обнаружил, что на самом деле мне нужно создать / изменить какой-то странный ключ в HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

Но я также обнаружил, что если я буду использовать консоль CMD для HKCUпредлагаемого исправления,
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
это будет записывать значение точно в этот странный ключ HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ... , а не в HKEY_CURRENT_USER .

Итак, это работает с первого кадра и навсегда. Просто используйте консоль 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)

Решатель для серверов сборки

С другой стороны, этот код всегда работает для текущей учетной записи пользователя, которая его запускает (из-за HKEY_CURRENT_USER). Но сборочные серверы часто используют выделенные учетные записи или локальную систему и т. Д.

Я исправил это на своих сборочных машинах, добавив следующий простой командный файл в свои задачи сборки (Jenkins, TeamCity, CruiseControl)

VS-2015 , VS-2013 , VS-2017-Сообщество , VS-2017-Профессиональный , VS-2017-Предприятие


1
после исправления reg evrey несколько месяцев в течение 2 лет, и файл CMD не работает нормально какое-то решение
CMS

1
Если бы такая же проблема возникла из ниоткуда при создании MSI из проекта установки на сервере сборки. Процесс сборки раньше всегда работал и не менялся, но стал стабильно давать сбой. Добавил это в сценарий сборки непосредственно перед вызовом devenv.exe, и он работал у меня в VS 2013. Большое спасибо.
Джим

В VS 15.8.x я получаю эту ошибку даже после запуска EXE, однако, закрыв VS, затем запустив EXE и затем перезапустив VS, ошибка устранена. Итак, что-то в VS сбрасывает настройку reg, и решение состоит в том, чтобы закрыть VS, повторно запустить DisableOutOfProcBuild.exe, а затем запустить VS.
user2728841 01

1
Это исправление работало для сборок VS2015 TFS vNext. Мы используем локальную учетную запись NT Authority \ Network Service для автоматической сборки, поэтому ручное добавление ключа reg из RDPing в виртуальную машину сборки не исправило ошибку автоматической сборки. Я добавил шаг для создания ключа reg прямо перед шагом для вызова Devenv.com для файла VDPROJ. После стольких попыток найти исправление для этого, я хочу поблагодарить it3xl за его публикацию !!!
ckkkitty

6

Как указано в комментариях здесь , для VS2017 вам нужно будет создать DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild Заменить [IDKey] суффиксом идентификатора существующего подраздела 15.0 VisualStudio .

Например, если в VisualStudio вы видите ключ «15.0_abcd1234», это будет «15.0_abcd1234_Config».

пример regedit


5

Исправление теперь загружено сюда:

http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=33186

Вы можете прочитать об этом здесь:

http://connect.microsoft.com/VisualStudio/feedback/details/595632/inconsistent-hanging-with-devenv-2010


Как вы можете прочитать в элементе подключения, на который я ссылался в своем ответе, исправление не работает.
oɔɯǝɹ

4

Я столкнулся с этой проблемой после того, как переместил свой проект на другой компьютер (VS 2010, несколько проектов в решении).

Мой проект уже был построен на исходном компьютере, но после того, как я скопировал его в целевой, я не смог создать свой проект установки и имел эту ошибку.

Я открыл /Debugпапку , в моей установке корневого пути проекта, были MyProject.msiи setup.exeфайлы, я удалил их и снова построил свой проект, он работал. Надеюсь, это сработает и для некоторых ребят.


еще один +1, просто удаление файлов .msi и setup.exe и повторная сборка проекта установки заставили сообщение об ошибке исчезнуть
Джордж

и -1, похоже, это решает эту проблему только временно, после повторного открытия решения проблема снова появилась
Джордж

@ChrisSchiffhauer, чтобы решить эту проблему, только вы удаляете файлы msi и exe ?
Kiquenet

Хорошо сказано @kubilay, большое спасибо за ваше решение !! Эта проблема может возникнуть при переносе проектов со старой на новую платформу, так как мы устанавливаем новую версию платформы в свойствах проекта. Возможно, проект установки может содержать файлы .msi и .exe в своем целевом расположении. В новой версии фреймворка может возникнуть ошибка при перезаписи существующих файлов. Итак, щелкните правой кнопкой мыши проект установки -> перейдите к «Имя выходного файла» (в разделе «Свойства конфигурации \ Сборка») -> нажмите кнопку «...» (просмотреть) -> получить целевое местоположение и удалить .msi, а также файлы .exe . Теперь соберите проект, и он должен работать.
Навин Пандит

1

Может помочь проверка зависимостей проекта.

В VS 2010 щелкните правой кнопкой мыши в обозревателе решений, затем выберите «Обнаруженные зависимости» и «Обновить зависимости», это иногда решает проблему.


1

Я использую VS 2017, но ни одно из вышеперечисленных решений не работает. Итак, обновили последнюю версию VS 2017 и применили решение @AussieAsh, и оно отлично работает ...

Надеюсь, это решение может кому-то сработать.


0

у меня это было вызвано неправильным файлом .suo. (вызвано Skydrive) удаление этого файла решило проблему.


DisableOutOfProcBuild.exe какое-то время работал, пока не перестало. Удаление файла .suo устранило проблему.
Sego

0

Visual Studio 2017 хранит информацию, ранее хранившуюся в общедоступном реестре, в новом частном реестре: C: \ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin

Здесь вам нужно добавить EnableOutOfProcBuild в соответствии с инструкциями для VS2013 / VS2015.

Для обновления частного реестра вы можете использовать Regedit.

Щелкните, чтобы выбрать узел HKEY_USERS.

Выберите «Файл»> «Загрузить куст» и перейдите к файлу privateregistry.bin. Когда вы выберете его, Regedit запросит имя - неважно, как вы его назовете, скоро мы закончим.

Теперь появится структура реестра, и вы можете перейти к Microsoft \ VisualStudio \ 15.0_Config \ MSBuild.

Создайте новый DWORD EnableOutOfProcBuild со значением 0.

После этого выберите корень улья (как бы вы его назвали ранее) и используйте «Файл»> «Выгрузить улей», чтобы отсоединиться от него.

Теперь должно работать: o)


Нет необходимости возиться с личным файлом реестра, вы можете просто создать ключ 15.0_ <x> _Config в обычном реестре самостоятельно (см. Выше)
Night94,

0

Моя Visual Studio 2013 каким-то образом стала экспериментальной, поэтому она начала использовать другой ключ реестра для EnableOutOfProcBuild.

введите описание изображения здесь

Конечно, я просто добавил в свой командный файл еще одну строку для установки значения реестра, и он начал работать:

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

Просто запустите этот exe

(Visual Studio 2017 Community edition)

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

(Visual Studio 2017 Enterprise edition)

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


0

Хорошо, я занимался этой проблемой, пока не стал синим лицом, красным лицом, потерял волосы и потерял рассудок, и пробовал каждый шаг, который мог найти. :-D

Мое решение для Visual Studio 2017 / TeamCity представляло собой комбинацию двух решений от @ it3xl и некоторой помощи от @ Night94 .

Похоже, проблема заключалась в том, что отсутствовал ключ реестра для пользователя TeamCity .

  • Запуск DisableOutOfProcBuild.exe как уже упоминалось @AussieAsh поэтому не работал , как он добавил ключ реестра для только моего пользователя.
  • использование сценария, упомянутого @ it3xl, также не удалось при запуске из TeamCity

Поэтому решение заключалось в том, чтобы добавить следующее в качестве этапа сборки командной строки из TeamCity до MSBuild:

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

После выполнения этого шага при необходимости его можно будет удалить.

Резюме решения

Либо:

  • бегать DisableOutOfProcBuild.exe как пользователь TeamCity , или
  • перейдите к разделу реестра HKCU\SOFTWARE\Microsoft\VisualStudioи проверьте версию, указанную в списке, затем измените приведенное выше, REG ADDчтобы оно соответствовало версиям (не забудьте добавить_Config ) в качестве шага в сборке TeamCity.

Опять же, описанное выше должно быть выполнено только один раз. Вы можете отключить переход в TeamCity, оставив его для справки, если снова столкнетесь с проблемой.


0

Шаг 1. Я "создал ключ DWORD с именем EnableOutOfProcBuild " и установил для него значение " 0 " по указанному ниже пути.

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

Примечание. Убедитесь, что вы вошли в систему с тем же пользователем, с которым пытаетесь создать проект.

У меня все работает нормально.


-1

Возникла эта проблема сегодня, попробуйте перезапустить Visual Studio, если это не поможет, создайте новый проект, сохраните его, а затем скопируйте файлы из проблемного проекта. у меня сработали оба метода.


-3

Пожалуйста, сначала очистите решение, соберите решение, а затем попробуйте собрать установщик. Это устранит ошибку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.