Під час перевірки сталася помилка. HRESULT = '8000000A'


98

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

Помилка виникає не кожен раз, коли я будую, але кожен раз здається випадковим для різних проектів розгортання.

Хтось має поради щодо того, чому саме ця помилка виникає, і як рухатись до її виправлення?


ви отримали нарешті більш елегантне рішення ? Ви тільки що повторно запускали збірку, коли вона не виходить , можливо, корисно поставити script ( elegant solution) в gist, IMHO.
Кікенет

Відповіді:


53

Це відомий випуск у Visual Studio 2010 (стан перегонів). Дивіться цей елемент підключення .

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

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


Велике спасибі. Я шукав Інтернет, щоб дізнатись, чому саме це відбувається, і натрапив на численні відповіді Майкрософт, щонайменше, нечіткі та непомітні. Я щойно знову запускав збірку, коли не вдалося, але сподівався на більш елегантне рішення. Знову дякую.
Кріс С.

@ChrisC. stackoverflow.com/a/25054572/206730 відповідь має більше голосів, ви намагалися так?
Кікенет

@ 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 видалить цю змінну зі свого реєстру. Вам потрібно буде її знову додати.
Дерек Ш

4
Лише зауважте, що при роботі з Дженкінсом потрібно додати ключ реєстру для користувача, який працює з рабами Дженкінса.
Jirong Hu

3
ЗБЕРІГУЙТЕ МІНДУ у вулику реєстру є HKEY_CURRENT_USER, тому якщо це викликає інший обліковий запис, ніж ви (наприклад, tfs build account), вам потрібно буде увійти як ТОМУ акаунт та додати налаштування.
Майк Чіл

3
Щоб додати до коментарів @DerekW, це також можна видалити за допомогою автоматичних оновлень.
JustA AnotherDeveloper

2
@MikeCheel ви можете встановити HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild, щоб виправити це для всіх користувачів :)
Ian Ellis

57

Оновлення станом на 14.06.2017

розширення Microsoft Installer Visual Studio 2017 тепер включає в себе допоміжний інструмент командного рядка для того, щоб зробити налаштування реєстру значно простішим у застосуванні проектів Microsoft Visual Studio 2017 Installer

Приклад контурів інструменту (на основі встановленої версії Visual Studio)

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


Видання спільноти: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe

З ПРОЧИТАННЯ


Цей простий інструмент призначений для того, щоб допомогти користувачам встановити ключ реєстру, необхідний для усунення цієї помилки, яка може з’явитися при складанні проектів інсталятора за допомогою збірок командного рядка:

ПОМИЛКА. Під час перевірки сталася помилка. HRESULT = '8000000A'

Інструмент призначений для Visual Studio 2017+ і встановлює цей ключ ключа для конкретного встановленого екземпляра Visual Studio для поточного користувача. Отже, якщо ви встановлюєте це для агента збирання, обов'язково використовуйте обліковий запис користувача, який буде використовувати збірка.

Запустіть "DisableOutOfProcBuild.exe" довідки про використання інформації.



4
Це найкраще рішення для VS2017
Simon O'Beirne,

Я думаю, що це вже третій раз, коли у мене виникла ця проблема, витрачав години, намагаючись виправити, а потім, нарешті, знову виявив цю відповідь. Дякую!
Ганнес Саксенхофер

2
Вам потрібно змінити дір на це місце, щоб воно працювало належним чином. Див. Github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/isissue/… та github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/…
GilesDMiddleton

Ідеально підходить для використання Visual Studio 2019 Community Edition на моїй верстаті.
Max Power

48

Я читав десь в Інтернеті про це, і це виправив так (це хтось запропонував) :

  • відкрийте файл проекту налаштування (.vdproj) у блокноті (або будь-якому іншому текстовому редакторі)
  • видаліть ці рядки на початку файлу .vdproj:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
    
  • будувати заново - помилка відсутня

Ця помилка не завадила мені розгортати, створювати, налагоджувати (або робити що-небудь) мій проект, він мене просто дратував. І це сталося, навіть якщо я встановив, що всі проекти будуватимуться в поточній конфігурації, а проект налаштування - не робити.


3
Проблема в тому, що це гонка. Здійснення (випадкового) коригування та відновлення дозволить здатися, що воно зафіксовано. Просто перестроювання призведе до того, що проблема також не зникне. Мені хотілося б дізнатися, чи він залишається "виправленим" після 100 версій.
окт

6
Можливо, це буде умова перегонів, але вищевказаний виправлення працює і дозволяє мені продовжувати своє життя (до наступного випуску, в якому я перебираю стек переповнення :))
gls123,

39

Постійне рішення (+ для будівельних машин)

Візуальна студія 2017

Для VS 2017 викличте такі сценарії CMD під цільовим обліковим записом Windows:

Суспільне видання
Професійне видання
Enterprise edition

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)

Solver для серверів збірки

З іншого боку, цей код завжди працює для поточного облікового запису користувача, який його запускає (через HKEY_CURRENT_USER). Але сервери збирання часто використовують спеціальні облікові записи або локальну систему тощо.

Я виправив це на своїх складальних машинах, додавши наступний простий пакетний файл до моїх завдань збирання (Jenkins, TeamCity, CruiseControl)

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


1
після декількох місяців виправлення регiєвра вiдповiдає 2 мiсяцi, i файл CMD не працює надто якимось рішенням
CMS

1
Якщо ця проблема виникла з нізвідки, коли будували MSI з проекту установки на сервері збірки. Процес збирання завжди працював раніше і не змінювався, але починав постійно виходити з ладу. Додано це до сценарію збирання перед викликом devenv.exe, і він працював для мене в VS 2013. Дякую тонну.
Джим

У VS 15.8.x я отримую цю помилку навіть після запуску EXE, проте, закривши VS, потім запустивши EXE і перезапустивши VS, помилка усунена. Отже, щось у VS скидає налаштування reg, а рішення - закрити VS, повторно запустити DisableOutOfProcBuild.exe, а потім запустити VS.
user2728841

1
Це виправлення працювало для складання VS2015 TFS vNext. Ми використовуємо локальний обліковий запис NT Authority / Network Service для автоматичних збірок, тому вручну додавання ключа reg від RDPing у VM збірки не виправляло помилку автоматичної збірки. Я додав крок для створення ключа reg безпосередньо перед кроком для виклику Devenv.com для файлу VDPROJ. Після довгої боротьби, щоб знайти виправлення для цього, я хочу подякувати it3xl за публікацію!
ckkkitty

6

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

Наприклад, якщо під VisualStudio ви бачите ключ "15.0_abcd1234", це буде "15.0_abcd1234_Config".

regedit приклад


5

Як ви можете прочитати в елементі підключення, з яким я пов'язаний у своїй відповіді, виправлення не працює.
окт

4

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

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

Я відкрив /Debugпапку під своїм кореневим шляхом Setup Project, там були MyProject.msiі setup.exeфайли, я видалив їх і знову створив свій проект, він працював. Сподіваюся, що це працює і для деяких хлопців.


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

і -1, схоже, це питання вирішується лише тимчасово, після повторного відкриття рішення проблема з’явилася знову
Джордж

@ChrisSchiffhauer для вирішення цього питання, ви лише видаляєте файли msi та exe ?
Кікенет

Добре сказано @kubilay, велике спасибі за ваше рішення !! Ця проблема може спричинити під час перенесення проектів зі старих на новіші рамки, оскільки ми встановлюємо новішу версію фреймворку у властивостях проекту. Можливо, проект налаштування може містити файли .msi та .exe у своєму цільовому місці. З новою версією рамки вона може створювати помилки під час перезапису вихідних файлів. Отже, клацніть правою кнопкою миші на проект налаштування -> перейдіть «Ім'я вихідного файлу» (в розділі Властивості конфігурації \ Створення) -> натисніть кнопку «...» (переглянути) -> отримайте цільове розташування та видаліть .msi, а також .exe файли . Тепер будуйте проект, і він повинен працювати.
Навін Пандіт

1

Перевірка залежностей від проекту може допомогти.

У VS 2010 клацніть правою кнопкою миші у вашому досліднику рішень, а потім натисніть «Виявлені залежності» та «Оновлення залежностей», це колись вирішує проблему.


1

Я використовую VS 2017, але жодне з наведених вище рішень не працює. Отже, оновлена ​​остання версія VS 2017 і застосувати рішення @AussieAsh та його роботу чудово ...

Я сподіваюся, що це рішення може комусь спрацювати.


0

зі мною це було викликано неправильним файлом .suo. (викликано skydrive) видалення цього файлу вирішило проблему.


DisableOutOfProcBuild.exe деякий час працював, поки цього не сталося. Видалення файлу .suo вирішило проблему.
Цього

0

Visual Studio 2017 зберігає інформацію, раніше збережену в державному реєстрі, у новому приватному реєстрі: C: \ Користувачі \\ 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, щоб відірватися від нього.

Тепер це має працювати: 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

Просто запустіть цей екзе

(Суспільне видання Visual Studio 2017)

C: \ програмні файли (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe

(Видання Visual Studio 2017 Enterprise)

C: \ Файли програми (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.