回答:
これはVisual Studio 2010(競合状態)の既知の問題です。こちらの接続アイテムをご覧ください。
私たちもこれに遭遇し、Microsoftとのこの問題に関して非常に満足のいくサポートコールがありました。要するに、これは既知の問題であり、解決されないため、Visual Studioセットアッププロジェクト(.vdproj)から移行することをお勧めします。
最初に失敗したときにMSIビルドを2回トリガーすることにより、この問題を回避しました。良くないですが、ほとんどの場合機能します(エラー率は10%から1%に低下しています)。
Microsoft Visual Studio Installer Projects拡張機能を使用してVS200Xセットアッププロジェクトをアップグレードした後、VS2013またはVS2015でこの問題が発生した人のための更新。
MSからのv1.0.0.0のレシピに従って、ついにそれは私のために働きました:
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として作成できます。
Microsoft Visual Studio 2017インストーラープロジェクト拡張機能には、Microsoft Visual Studio 2017インストーラープロジェクトを適用するためのレジストリ設定をはるかに簡単にするコマンドラインヘルパーツールが含まれています。
ツールのパスの例(インストールされている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
READMEから
このシンプルなツールは、コマンドラインビルドを使用してインストーラープロジェクトをビルドするときに表示される可能性があるこのエラーを回避するために必要なレジストリキーをユーザーが設定できるようにすることを目的としています。
エラー:検証中にエラーが発生しました。HRESULT = '8000000A'
このツールはVisual Studio 2017以降を対象としており、現在のユーザーの特定のインストール済みVisual Studioインスタンスにこのregキーを設定します。したがって、ビルドエージェントでこれを設定する場合は、ビルドが使用するユーザーアカウントを必ず使用してください。
使用方法の詳細については、「DisableOutOfProcBuild.exeヘルプ」を実行してください。
私はこれについてオンラインでどこかを読んで、このように修正しました(誰かから提案されました):
.vdprojファイルの先頭にあるこれらの行を削除します。
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
このエラーが原因で、プロジェクトの展開、ビルド、デバッグ(またはなんらかの変更)が妨げられることはありませんでした。そして、私がすべてのプロジェクトを現在の構成でビルドするように設定し、セットアッププロジェクトをしないように設定しても、それは起こりました。
VS 2017の場合、ターゲットWindowsアカウントで次のCMDスクリプトを呼び出します。
コミュニティエディション
プロフェッショナルエディション
エンタープライズ
エディション
TL; DR。貧乏人のためのメモ、DisableOutOfProcBuild.exe
私がVS 2017に使用するマイクロソフトが提供するソリューション。
DisableOutOfProcBuild.exe
インストールフォルダから呼び出すことを想定していません。したがって、この.exeファイルをコピーすることはできません。(ちなみに、.vdprojをビルドする場合は、VSをインストールする必要があります。)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
現在のWindowsユーザーのCMDによる
多くの人にとって、下での作成/修正HKEY_CURRENT_USER\..
は必ずしも機能しない、または永続的に機能するわけではありません。
これを解決しようとすると、実際にはHKEY_USERSの下に奇妙なキーを作成/変更する必要があることがわかりました HKEY_USERS\S-1-5-xx-xxxxxxxxxx-xxxxxxxxx-xxxxxxxxxxx-xxxxx\...\MSBuild
しかしHKCU
、提案された修正でCMDコンソールを使用する場合
REG ADD HKCU\SOFTWARE\Microsoft\VisualStudio\14.0_Config\MSBuild /t REG_DWORD /v EnableOutOfProcBuild /d 0 /f
、値がHKEY_CURRENT_USERではなく、奇妙なキーHKEY_USERS \ S-1-5-xx-xxxxxxxxxx-xx ...に正確に書き込まれることもわかりました。
したがって、これは最初のショットから、そして永遠に機能します。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-Community、 VS-2017-Professional、 VS-2017-Enterprise
ホットフィックスはここにアップロードされます:
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=33186
あなたはそれについてここで読むことができます:
プロジェクトを別のPC(VS 2010、ソリューション内の複数のプロジェクト)に移動した後、この問題に直面しました。
プロジェクトはソースコンピューターで既にビルドされていますが、ターゲットにコピーした後、セットアッププロジェクトをビルドできず、このエラーが発生しました。
/Debug
セットアッププロジェクトのルートパスの下にあるフォルダーを開くMyProject.msi
と、setup.exe
ファイルがあり、ファイルを削除してプロジェクトを再度ビルドしましたが、うまくいきました。それがいくつかのフェラのためにも働くことを望みます。
Visual Studio 2017は、以前にパブリックレジストリに格納されていた情報を新しいプライベートレジストリ内に格納します:C:\ Users \\ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6de65198 \ privateregistry.bin
これは、VS2013 / VS2015の指示に従って、EnableOutOfProcBuildを追加する必要がある場所です。
プライベートレジストリを更新するには、Regeditを使用できます。
HKEY_USERSノードをクリックして選択します。
[ファイル]> [ハイブの読み込み]を選択し、privateregistry.binファイルに移動します。これを選択すると、Regeditは名前を要求します-すぐに完了するので、それを何と呼んでもかまいません。
レジストリ構造が表示され、Microsoft \ VisualStudio \ 15.0_Config \ MSBuildに移動できます
値0で新しいDWORD EnableOutOfProcBuildを作成します。
完了したら、ハイブのルート(以前に名前を付けたものは何でも)を選択し、[ファイル]> [ハイブのアンロード]を使用してハイブから切り離します。
今それはうまくいくはずです:o)
私の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
このexeを実行するだけです
(Visual Studio 2017 Communityエディション)
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe
(Visual Studio 2017 Enterpriseエディション)
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ CommonExtensions \ Microsoft \ VSI \ DisableOutOfProcBuild \ DisableOutOfProcBuild.exe
さて、私は顔が青く、顔が赤くなり、髪を失い、頭を失うまでこの問題を調査し、見つけることができるすべてのステップを試しました。:-D
以下のための私のソリューションのVisual Studio 2017 /チームシティーは2からソリューションを組み合わせた@ it3xlからのいくつかの援助Night94 @。
問題は、TeamCityユーザーのレジストリキーが欠落していることのようです。
DisableOutOfProcBuild.exe
@AussieAshで言及されているように実行すると、ユーザー専用のレジストリキーが追加されたため、機能しませんでした。したがって、解決策は、MSBuildの前にTeamCityからコマンドラインビルドステップとして次を追加することでした。
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にステップインすることを無効にすることができます。
今日この問題が発生した場合は、Visual Studioを再起動してみてください。それができない場合は、新しいプロジェクトを作成して保存し、問題のプロジェクトからファイルをコピーしてください。どちらの方法でもうまくいきました。
elegant solution
)を要旨に入れてください。