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

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

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

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

19 ответов

Решение

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

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

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

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

Следуя рецепту 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.

Дополнение от 14.06.2017

Расширение Microsoft Visual Studio 2017 Projects Installer теперь включает вспомогательный инструмент командной строки для упрощения применения параметров реестра Microsoft Visual Studio 2017 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" для подробностей использования.


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

Visual Studio 2017

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

Общественное издание
Профессиональное издание
Корпоративная версия

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

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

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

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


Visual Studio 2015 и более ранние

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

Для многих людей создание / исправление под 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). Но build-серверы часто используют выделенные учетные записи (локальная система и т. Д.).

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

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

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

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

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

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

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

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

пример regedit

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

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

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

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

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

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

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

В итоге в той же проблеме мне помог этот блог https://spin.atomicobject.com/2022/05/17/visual-studio-installer-azure/

вот YML, который помог

      trigger:
- '*'

pool:
  vmImage: 'windows-2022'

variables:
  solution: '**/MySolution.sln'
  buildPlatform: 'Any CPU'
  devCmd: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.com'
  disableToolPath: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild'
  
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
  displayName: Restore NuGet packages
  inputs:
    restoreSolution: '$(solution)'

# https://github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/1#issuecomment-525435637
- task: BatchScript@1
  displayName: Enable .vdproj Builds
  inputs:
    filename: '"$(disableToolPath)\DisableOutOfProcBuild.exe"'
    workingFolder: '"$(disableToolPath)"'

- script: '"$(devCmd)" $(System.DefaultWorkingDirectory)\MySolution.sln /Build "Release" /Project $(System.DefaultWorkingDirectory)\Installer\MyInstaller.vdproj'
  displayName: Build Installer

Хорошо, я занимался этой проблемой, пока не стал синим лицом, красным лицом, потерял волосы и потерял рассудок, и пробовал каждый шаг, который мог найти.:-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, оставив его для справки, если снова столкнетесь с проблемой.

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

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

Просто запустите этот 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

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

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

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.

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

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

Моя 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

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

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

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

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

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

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

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

Другие вопросы по тегам