web-dev-qa-db-ja.com

Visual Studioはビルド中に常にハングします

おそらく、ソリューションを構築する時間の25〜50%の間に、次のように表示されます。

" 要求した操作は完了するのに予想より時間がかかっています。このダイアログは、アクションが完了すると閉じます。 "

私は説明できない方法でこのウィンドウを嫌います。解決しない、[キャンセル]ボタンが有効にならない、それを解決する唯一の方法は、devenvプロセスを強制終了し、ソリューション全体を再度ロードすることです。ビルドを試みるときも同じです。

私のソリューションは、合計で約60のプロジェクトで、ほとんどがC#クラスライブラリであり、それぞれにWebアプリケーション、Webサービス、およびコンソールアプリケーションがいくつかあります。ただし、プロジェクトの大部分(50)がアンロードされたコードベースのスライスを1つ構築しても、問題は解決しません。

私の問題は、出力ウィンドウがフリーズする時点で何も教えてくれないことであり、このロックアップの原因を特定する他の方法がわかりません。私が推測するなら、それはファイルシステムのデッドロックか何かであると仮定しますが、これを証明する方法がわかりません-それを防ぐ方法ははるかに少ないです。

これを診断し、ソリューションから削除して、再び表示されないようにするにはどうすればよいですか?一般に、ビルド中に発生する問題を診断するにはどうすればよいですか?

52
bwerks

同様の問題があった場合、VSは45秒ほどハングし、その後4秒間ビルドして完了します。 45秒のハングはGUIへの出力を生成せず、VSはハングします。

ProcMonを使用すると、このプロジェクトをビルドするときにdevenv.exeを介して/ packages /フォルダーで300万以上のファイル操作が発生する可能性があります(その後もしばらく続きます)。ビルドの最初のステップでは、パッケージの復元を実行する必要があるかどうかを確認するために、すべてのパッケージをチェックしていたことがわかります(そうではありませんでした)

NuGetをすべて非難する傾向があるため、Visual Studio->オプション-> Nuget Package Manager-> Generalの下にあるNuget Package Restoreの[NuGetが見つからないパッケージをダウンロードできるようにする]チェックボックスを無効にしました。 嬉しいことに、ビルドは非常に高速でした。合計5秒!

ビルド時のパッケージの復元を有効にしていることがわかりました(VSではデフォルトでオンになっていると思います)。また、パッケージをソース管理にチェックインしました。これにより、TFSが何らかの方法でスラッシングを引き起こしているようです...パッケージの復元をチェックすると、TFSをトリガーしてソース管理操作のチェックを行う必要があります。

参考までに、VS2013更新4-Nugetバージョン:2.8.50926.663 .. NumberOfProjects = 38のslnでしたが、2つの依存関係を持つ単一のcsprojを作成するだけでこのハングを再現できました。

更新:

SccNumberOfProjects = 53のSln上のローカルホスト「すべて再構築」は、2分間のビジュアルスタジオがフリーズ/応答しない状態で7:05かかっていました。

  • 凍結のない2コアi5で4:14まで
  • 4コアi7では2:44まで

また、これはさまざまなFile Watcherセキュリティツールを備えたマシンで行われており、おそらくこのプロセス全体に速度を追加することはできませんでした。

51
felickz

これは、診断スイッチをオンにしてMSBuildを実行しているときに、大規模なプロジェクトで発生するのを見てきました。 Visual Studioで、[ツール]、[オプション]、[プロジェクトとソリューション]、[ビルドと実行]の順に移動し、MSBuildプロジェクトのビルド出力の詳細値を確認します。 Minimalに設定されていない場合は、minimalに設定してみて、ビルドが完了できるかどうかを確認してください。

14
Pat P

管理者としてVisual Studioを実行しているように思えるので、問題は解決しました! (常に管理者としてプログラムを実行する場合は、 デフォルトでVisual Studioを管理者として実行する方法 )を参照してください。

6
IngoB

私の場合、「並列プロジェクトビルドの最大数」を1種類に設定すると役立ちました(つまり、クリーンな状態からプロジェクトをビルドすると、1分間フリーズした後、通常のビルドが行われ、その後のビルドはすべて正常に動作します)。

上記の設定はTool -> Options -> Projects and Solutions -> Build and Run

5

Visual Studioが大規模なプロジェクトの構築に大きくかかっていることがわかりました。それはReSharperだったことが判明。オフにした後:[ツール]-> [オプション]-> [ReSharper]-> [サスペンド]今、すべてが問題なく構築されました(非常に大規模なソリューション、100以上のプロジェクトでも)

4
t_warsop

Microsoft Connect には、モデリングプロジェクトがフリーズの原因であるという提案がありました。ソリューションからモデリングプロジェクトを削除しましたが、それ以降(約1週間)凍結していません。

3
st-dev

管理モードで以下のコマンドを試してください。このコマンドを実行する前に、すべてのVSインスタンスを閉じてください。

devenv /resetuserdata

注:devenvはC:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDEにあります

1

VS 2008開発プラットフォームをWindows 7からWindows 10に移動すると、大規模なプロジェクトをビルドしようとするたびにVisual Studioがハングアップする状況に遭遇しました。プロジェクトをビルドし、タスクマネージャを使用してVSを強制終了してから再起動する必要がありました。言うまでもなく、これはデバッグを本当に難しくしました!とにかく、問題は、Win 10に移行する際に、VSが管理者として実行されなくなったということです(おそらく、Win 10は特権に特にこだわります)。管理者としてプログラムが実行されるようにプロパティを変更して、問題を解決しました。 (IngoB-あなたの投稿にコメントするのに十分なステータスはありませんが、これを指摘してくれてありがとう!)

1
Robert Cody

私にとっては、npmパッケージのインストールと関係があり、自動的に実行されました。 [ツール]> [オプション]> [プロジェクトとソリューション]> [外部Webツール]に移動し、すべての外部ツールのチェックを外して、VSを再起動しました。その後、私は再びそれを構築することができました。私はそれらをチェックする必要があることを知っていますが、何がそれらを引き起こし、このソリューションファイルの何が問題なのかを理解する必要があります。

1
PersyJack

Visual Studio 2017

インストールからAnaconda3を削除すると、修正されました。 procmonでは、msbuildによって生成されたpowershellの数百のインスタンスからAnaconda3フォルダー内のファイルを検索する数十万の呼び出しを見ました。

1
The Sharp Ninja

felickz's answer に加えて、ビルドのこの問題を解決します(またはほぼ解決します):

ビルド中の問題を除いて、パッケージ管理コンソールにも問題がありました。それを待つのに約1分かかりました。 procmonを使用すると、このウィンドウが開くたびにNuGetリポジトリフォルダーが解析されることがわかりました(Microsoft!)。このフォルダーには約1000個のパッケージがありました。上記のフォルダーからすべてを削除した後、パフォーマンスの問題が発生しました。

私の回答はVS 2015に関連していることに注意してください(以下の場合もあります)。私はテストしませんでしたが、VS 2017では問題ないはずです。

1
Kamarey

私にとってこの問題は、ビルド時にT4テンプレートを自動的に実行する拡張機能(AutoT4)でした。 EFでソリューションを操作するときに無効にすると、問題が修正されました。

1
David Cholt