Terjadi kesalahan saat memvalidasi. HRESULT = '8000000A'

98

Saya telah menerima kesalahan ini untuk sementara waktu saat menggunakan devenv pada pembuatan otomatis. Saya telah melalui setiap situs web yang dapat saya temukan, dan jawaban yang biasa menyebutkan ketergantungan yang menyegarkan (Yang saya yakin memperbaikinya untuk penerapan manual, tetapi tidak untuk otomatis) dan menghapus kode kontrol sumber dari proyek, yang tidak membantu saya.

Kesalahan tidak terjadi setiap kali saya membuat, tetapi tampaknya acak pada proyek penerapan yang berbeda setiap kali.

Apakah ada yang punya saran tentang mengapa tepatnya kesalahan ini terjadi dan bagaimana cara memperbaikinya?

Chris C.
sumber
apakah Anda akhirnya mendapatkan solusi yang lebih elegan ? Anda baru saja memicu kembali build ketika gagal , Mungkin berguna menempatkan script ( elegant solution) di intinya, IMHO.
Kiquenet

Jawaban:

53

Ini adalah masalah yang diketahui di Visual Studio 2010 (kondisi balapan). Lihat item koneksi ini .

Kami juga mengalami ini, dan mendapat panggilan dukungan yang sangat tidak memuaskan tentang masalah ini dengan Microsoft. Singkat cerita: ini adalah masalah yang diketahui, ini tidak akan terpecahkan, dan Microsoft menyarankan untuk menjauh dari proyek Visual Studio Setup (.vdproj).

Kami telah mengatasi masalah ini dengan memicu MSI build untuk kedua kalinya ketika gagal untuk pertama kalinya. Tidak bagus, tetapi berfungsi sebagian besar waktu (tingkat kesalahan turun dari ~ 10% menjadi ~ 1%).

oɔɯǝɹ
sumber
Terima kasih banyak. Saya telah menjelajahi internet untuk menemukan mengapa hal itu sebenarnya terjadi, dan menemukan banyak balasan Microsoft yang tidak jelas dan tidak membantu, untuk sedikitnya. Saya baru saja memicu kembali build ketika gagal, tetapi berharap untuk solusi yang lebih elegan. Terima kasih lagi.
Chris C.
@Tokopedia stackoverflow.com/a/25054572/206730 jawaban memiliki lebih banyak suara, apakah Anda mencoba seperti itu?
Kiquenet
@ oɔɯǝɹ bisakah Anda menjelaskan apa yang Anda maksud dengan saing memicu MSI membangun untuk kedua kalinya ?, memiliki masalah yang sama ..
Leon Barkan
123

Pembaruan bagi mereka yang mendapat masalah ini untuk VS2013 atau VS2015 setelah memutakhirkan proyek penataan VS200X menggunakan ekstensi Proyek Penginstal Microsoft Visual Studio.

Mengikuti resep untuk v1.0.0.0 dari MS akhirnya berhasil untuk saya:

Proyek Penginstal Microsoft Visual Studio

Sayangnya, kami tidak dapat mengatasi semua kasus masalah baris perintah untuk rilis ini karena kami masih menyelidiki cara yang tepat untuk mengatasinya. Apa yang kami miliki adalah solusi yang kami yakin akan berhasil untuk hampir semua dari mereka. Jika Anda masih mengalami masalah ini, Anda dapat mencoba mengubah nilai DWORD untuk nilai registri berikut ini menjadi 0: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild (VS2013)
atau
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild(VS2015)
Jika ini tidak ada, Anda dapat membuatnya sebagai DWORD.

kristian mo
sumber
23
Perhatikan bahwa pembaruan Visual Studio 2013 akan menghapus variabel ini dari registri Anda - Anda harus menambahkannya kembali.
Derek W
4
Sekadar catatan, saat bekerja dengan Jenkins, kunci registri perlu ditambahkan untuk pengguna yang menjalankan budak Jenkins.
Jirong Hu
3
PERHATIAN: kumpulan registri HKEY_CURRENT_USER jadi jika ini dipanggil oleh akun yang berbeda dari Anda (misalnya akun build tfs), Anda harus masuk sebagai akun ITU dan menambahkan pengaturan.
Mike Cheel
3
Untuk menambah komentar @DerekW, ini juga dapat dihapus dengan pembaruan otomatis.
JustAnotherDeveloper
2
@MikeCheel Anda dapat mengatur HKEY_USERS \ .DEFAULT \ Software \ Microsoft \ VisualStudio \ 14.0_Config \ MSBuild \ EnableOutOfProcBuild untuk memperbaikinya untuk semua pengguna :)
Ian Ellis
58

Update per 14/6/2017

ekstensi Proyek Penginstal Microsoft Visual Studio 2017 sekarang menyertakan alat bantu baris perintah untuk membuat pengaturan registri lebih mudah untuk menerapkan Proyek Penginstal Microsoft Visual Studio 2017

Contoh jalur alat (berdasarkan versi Visual Studio yang diinstal)

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


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

Dari README


Alat sederhana ini dimaksudkan untuk membantu pengguna mengatur kunci registri yang diperlukan untuk mengatasi kesalahan ini yang dapat muncul saat membangun proyek penginstal menggunakan build baris perintah:

EROR: Terjadi kesalahan saat memvalidasi. HRESULT = '8000000A'

Alat ini dimaksudkan untuk Visual Studio 2017+ dan menetapkan kunci reg ini untuk contoh Visual Studio tertentu yang diinstal untuk pengguna saat ini. Jadi, jika Anda menyetel ini di agen build, pastikan untuk menggunakan akun pengguna yang akan digunakan build tersebut.

Jalankan "bantuan DisableOutOfProcBuild.exe" untuk detail penggunaan.


Aussie Ash
sumber
5
Ini adalah solusi terbaik untuk VS2017
Simon O'Beirne
1
Saya pikir ini adalah ketiga kalinya saya mengalami masalah ini, menghabiskan waktu berjam-jam mencoba untuk memperbaikinya dan, dan akhirnya menemukan kembali jawaban ini. Terima kasih!
Hannes Sachsenhofer
2
Anda harus mengubah dir ke lokasi itu agar berfungsi dengan benar. Lihat github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/issues/… dan github.com/it3xl/MSBuild-DevEnv-Build-Server-Workarounds/blob/…
GilesDMiddleton
1
Sempurna untuk saya yang menggunakan Visual Studio 2019 Community Edition di mesin build saya.
Max Power
48

Saya membaca di suatu tempat secara online tentang ini, dan saya telah memperbaikinya seperti ini (disarankan oleh seseorang) :

  • buka file proyek setup Anda (.vdproj) di notepad (atau editor teks lainnya)
  • hapus baris ini di awal file .vdproj:

    "SccProjectName" = "8:"
    "SccLocalPath" = "8:"
    "SccAuxPath" = "8:"
    "SccProvider" = "8:"
    
  • membangun lagi - kesalahan hilang

Kesalahan itu tidak menghentikan saya untuk menerapkan, membangun, men-debug (atau melakukan apa pun) proyek saya, itu hanya mengganggu saya. Dan itu datang bahkan jika saya mengatur semua proyek untuk dibangun dalam konfigurasi saat ini dan proyek penyiapan tidak.

Cipi
sumber
3
Masalah dengan masalah ini adalah kondisi balapan. Membuat penyesuaian (acak) dan membangun kembali akan membuatnya tampak seperti sudah diperbaiki. Hanya dengan membangun kembali akan membuat masalah hilang juga. Saya ingin tahu apakah ini tetap 'diperbaiki' setelah 100 build.
oɔɯǝɹ
6
Mungkin kondisi balapan, tetapi perbaikan di atas berfungsi dan memungkinkan saya untuk melanjutkan hidup saya (sampai masalah berikutnya yang membuat saya menjelajahi tumpukan overflow :))
gls123
39

Solusi permanen (+ untuk mesin rakitan)

Visual Studio 2017

Untuk VS 2017, panggil skrip CMD berikut di bawah akun Windows target Anda:

Komunitas edisi
Professional edition
Perusahaan edisi

TL; DR. Catatan untuk yang buruk DisableOutOfProcBuild.exe, solusi yang ditawarkan Microsoft yang saya gunakan untuk VS 2017.

  1. DisableOutOfProcBuild.exetidak menganggap Anda akan memanggilnya keluar dari folder instalasinya . Jadi, Anda tidak dapat menyalin file .exe ini. (Ngomong-ngomong, jika Anda ingin membangun .vdproj, Anda harus menginstal VS.)
  2. DisableOutOfProcBuild.exe hanya akan berfungsi jika direktori CMD saat ini disetel ke lokasi instalasi DisableOutOfProcBuild.exe.

Sebagai contoh, untuk edisi VS Professional kami harus memanggil

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

Visual Studio 2015 dan yang lebih lama

oleh CMD untuk pengguna Windows saat ini

Bagi banyak orang, kreasi / koreksi di bawah HKEY_CURRENT_USER\..tidak selalu bekerja atau bekerja secara permanen.
Mencoba menyelesaikan ini, saya menemukan bahwa sebenarnya saya harus membuat / mengubah beberapa kunci aneh di bawah HKEY_USERS HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild

Tetapi saya juga menemukan bahwa jika saya akan menggunakan konsol CMD untuk HKCUdengan perbaikan yang diusulkan
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
ini akan menulis nilai persis ke dalam kunci aneh HKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ... , bukan ke HKEY_CURRENT_USER .

Jadi, ini berfungsi dari bidikan pertama dan selamanya. Cukup gunakan konsol 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)

Pemecah untuk Server Bangun

Di sisi lain, kode ini selalu berfungsi untuk akun pengguna saat ini yang meluncurkannya (karena HKEY_CURRENT_USER). Tetapi server build sering menggunakan akun khusus atau Sistem Lokal, dll.

Saya memperbaikinya di mesin build saya dengan menambahkan file batch sederhana berikut ke tugas build saya (Jenkins, TeamCity, CruiseControl)

VS-2015 , VS-2013 , VS-2017-Komunitas , VS-2017-Profesional , VS-2017-Perusahaan

it3xl
sumber
1
setelah menambal reg evrey beberapa bulan selama 2 tahun sekarang, dan file CMD tidak berfungsi dengan baik beberapa solusi
CMS
1
Memiliki masalah yang sama muncul entah dari mana saat membuat MSI dari proyek penyiapan di server build. Proses pembangunan selalu berhasil sebelumnya dan tidak berubah, tetapi mulai gagal secara konsisten. Menambahkan ini ke skrip build tepat sebelum panggilan ke devenv.exe dan itu berhasil untuk saya di VS 2013. Terima kasih banyak.
Jim
Di VS 15.8.x saya mendapatkan kesalahan ini bahkan setelah menjalankan EXE, namun dengan menutup VS, kemudian menjalankan EXE dan kemudian memulai ulang VS, kesalahan teratasi. Jadi sesuatu di VS mengatur ulang pengaturan reg, dan solusinya adalah menutup VS, jalankan kembali DisableOutOfProcBuild.exe dan kemudian mulai VS.
pengguna2728841
1
Perbaikan ini berfungsi untuk versi VS2015 TFS vNext. Kami menggunakan akun NT Authority \ Network Service lokal untuk pembuatan otomatis, jadi secara manual menambahkan kunci reg dari RDPing ke dalam VM build tidak memperbaiki kesalahan build otomatis. Saya menambahkan langkah untuk membuat kunci reg tepat sebelum langkah untuk memanggil Devenv.com untuk file VDPROJ. Setelah berjuang sekian lama untuk menemukan perbaikan untuk ini, saya ingin berterima kasih banyak kepada it3xl untuk mempostingnya !!!
ckkkitty
6

Seperti yang ditunjukkan dalam komentar di sini , untuk VS2017 Anda perlu membuat DWORD HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0_ [IDKey] _Config \ MSBuild \ EnableOutOfProcBuild Replace [IDKey] dengan akhiran ID dari subkunci 15.0 VisualStudio yang ada .

Misalnya, jika di bawah VisualStudio Anda melihat kunci "15.0_abcd1234" itu akan menjadi "15.0_abcd1234_Config".

contoh regedit

Malam94
sumber
4

Saya telah menghadapi masalah ini setelah saya memindahkan proyek saya ke PC lain (VS 2010, beberapa proyek dalam satu solusi).

Itu sudah membangun proyek saya di komputer sumber tetapi setelah saya menyalin ke target, saya tidak dapat membangun Proyek Pengaturan saya dan mengalami kesalahan ini.

Saya membuka /Debugfolder di bawah jalur root Proyek Pengaturan saya, ada MyProject.msidan setup.exefile, saya menghapusnya dan membangun proyek saya lagi, itu berhasil. Semoga berhasil untuk beberapa teman juga.

kubilay
sumber
satu lagi +1, hanya menghapus file .msi dan setup.exe dan membangun kembali proyek pengaturan membuat pesan kesalahan hilang
George
dan -1, tampaknya hanya menyelesaikan masalah ini untuk sementara, setelah membuka kembali solusi, masalah muncul kembali
George
@ChrisSchiffhauer untuk mengatasinya, hanya Anda menghapus file msi dan exe ?
Kiquenet
Diucapkan dengan baik oleh @kubilay, terima kasih banyak atas solusinya !! Masalah ini dapat terjadi saat memindahkan proyek dari kerangka kerja yang lebih lama ke kerangka kerja yang lebih baru, karena kami menetapkan versi kerangka kerja yang lebih baru di properti proyek. Mungkin, proyek penyiapan mungkin berisi file .msi dan .exe di lokasi targetnya. Dengan versi kerangka kerja baru, ini dapat menghasilkan kesalahan saat menimpa file yang keluar. Jadi, klik kanan pada proyek pengaturan -> goto 'Nama file keluaran' (Di bawah Properti Konfigurasi \ Build) -> klik tombol '...' (jelajahi) -> dapatkan lokasi target, dan hapus file .msi juga .exe . Sekarang bangun proyek dan seharusnya berhasil.
Navin Pandit
1

Memeriksa ketergantungan proyek dapat membantu.

Di VS 2010, klik kanan di penjelajah solusi Anda lalu klik Ketergantungan Terdeteksi dan Segarkan Ketergantungan, terkadang menyelesaikan masalah.

Jla
sumber
1

Saya menggunakan VS 2017 tetapi tidak ada solusi di atas yang berfungsi. Jadi, tingkatkan versi terbaru VS 2017 dan terapkan solusi @AussieAsh dan berfungsi dengan baik ...

Saya berharap solusi ini semoga seseorang akan berhasil.

Rikin Patel
sumber
0

dengan saya itu disebabkan oleh file .suo yang salah. (disebabkan oleh skydrive) menghapus file ini memecahkan masalah.

Aswin
sumber
DisableOutOfProcBuild.exe bekerja untuk sementara waktu sampai tidak. Menghapus file .suo memperbaiki masalah tersebut.
Sego
0

Visual Studio 2017 menyimpan informasi yang sebelumnya disimpan di registri publik dalam registri pribadi baru: C: \ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin

Di sinilah Anda perlu menambahkan EnableOutOfProcBuild sesuai petunjuk untuk VS2013 / VS2015.

Untuk memperbarui registri pribadi Anda dapat menggunakan Regedit.

Klik untuk memilih node HKEY_USERS.

Pilih File> Load Hive dan arahkan ke file privateregistry.bin. Saat Anda memilihnya, Regedit akan menanyakan nama - tidak masalah Anda menyebutnya apa karena kami akan segera selesai.

Sekarang struktur registri akan muncul dan Anda dapat menavigasi ke bawah ke Microsoft \ VisualStudio \ 15.0_Config \ MSBuild

Buat DWORD EnableOutOfProcBuild baru dengan nilai 0.

Setelah selesai pilih root sarang (apa pun yang Anda beri nama sebelumnya) dan gunakan File> Unload Hive untuk melepaskannya.

Sekarang seharusnya berfungsi: o)

Gwynge
sumber
Tidak perlu mengotak-atik file registri pribadi, Anda cukup membuat kunci 15.0_ <x> _Config di registri biasa sendiri (lihat di atas)
Night94
0

Visual Studio 2013 saya entah bagaimana menjadi Eksperimental sehingga mulai menggunakan kunci registri lain untuk EnableOutOfProcBuild

masukkan deskripsi gambar di sini

Untuk memastikan saya baru saja menambahkan baris lain di file batch saya untuk mengatur nilai registri dan itu mulai berfungsi:

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

Jalankan saja exe ini

(Visual Studio 2017 edisi komunitas)

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

(Visual Studio 2017 edisi Enterprise)

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

Lakmal
sumber
0

Oke, saya memeriksa masalah ini sampai saya membiru di wajah, merah di wajah, kehilangan rambut, dan kehilangan akal sehat, dan mencoba setiap langkah yang bisa saya temukan. :-D

Solusi saya untuk Visual Studio 2017 / TeamCity adalah kombinasi dari dua solusi dari @ it3xl dan beberapa bantuan dari @ Night94 .

Masalahnya sepertinya kunci registri untuk pengguna TeamCity hilang.

  • Karena itu, berjalan DisableOutOfProcBuild.exe seperti yang disebutkan oleh @AussieAsh tidak berfungsi karena hanya menambahkan kunci registri untuk pengguna saya.
  • menggunakan skrip yang disebutkan oleh @ it3xl juga gagal saat dijalankan dari TeamCity

Oleh karena itu, solusinya adalah menambahkan yang berikut ini sebagai langkah pembuatan baris perintah dari TeamCity sebelum MSBuild:

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

Setelah langkah ini dijalankan, langkah tersebut dapat dihapus jika diperlukan.

Ringkasan solusi

Antara:

  • dijalankan DisableOutOfProcBuild.exe sebagai pengguna TeamCity , atau
  • navigasikan ke kunci registri HKCU\SOFTWARE\Microsoft\VisualStudiodan periksa versi yang terdaftar, lalu ubah yang di atas REG ADDagar sesuai dengan versi (ingat untuk menambahkan _Config) sebagai langkah dalam pembuatan TeamCity.

Sekali lagi, hal di atas hanya perlu dilakukan sekali. Anda dapat menonaktifkan untuk melangkah di TeamCity meninggalkannya untuk referensi jika Anda mengalami masalah lagi.

SharpC
sumber
0

Langkah-1 Saya telah "membuat kunci DWORD dengan nama" EnableOutOfProcBuild "dan menyetel nilainya menjadi" 0 "di jalur di bawah ini

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

Catatan: Pastikan Anda telah masuk dengan pengguna yang sama yang Anda coba untuk membangun proyek

Ini bekerja dengan baik untuk saya.

Dharti Sutariya
sumber
-1

Punya masalah ini hari ini, coba mulai ulang Visual Studio, jika itu tidak berhasil membuat proyek baru, simpan dan kemudian salin file dari proyek masalah. kedua metode itu berhasil untuk saya.

FadingAway90
sumber
-3

Harap bersihkan solusinya terlebih dahulu, buat solusi, lalu coba buat penginstal. Ini akan menghapus kesalahan.

Keennary Pungyera
sumber