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

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

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

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

Ответ 1

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

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

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

Ответ 2

Обновление для тех, кто получил эту проблему для VS2013 или VS2015 после обновления проекта установки VS200X с использованием расширения Microsoft Project 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.

Ответ 3

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

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

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

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

Ответ 4

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

расширение 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+ и устанавливает этот ключ реестра для определенного установленного экземпляра Visual Studio для текущего пользователя. Поэтому, если вы устанавливаете это в агенте сборки, обязательно используйте учетную запись пользователя, которую будет использовать сборка.

Для получения информации об использовании запустите "DisableOutOfProcBuild.exe help".


Ответ 5

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

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

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

VS-2015, -2013 VS, VS-2017-сообщества, VS-2017-Professional, VS-2017-Enterprise

Ответ 6

Как указано в комментариях здесь, для 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 example

Ответ 8

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

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

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

Ответ 9

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

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

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

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

Чтобы обновить частный реестр, вы можете использовать Regedit.

Нажмите, чтобы выбрать HKEY_USERS node.

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

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

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

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

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

Ответ 13

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

enter image description here

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

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

Ответ 14

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

Ответ 15

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

Ответ 16

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

Ответ 17

Сначала очистите решение, создайте решение и попробуйте создать установщик. Он удалит ошибку.