web-dev-qa-db-ja.com

ソリューションをVisual Studioに読み込むのに時間がかかるのはなぜですか?

200を超えるプロジェクトと数千のファイルを含む非常に大きなソリューションがあります。それにもかかわらず、ソリューションは2012年と同様にVisual Studio 2010でも非常に迅速にロードされていました。しかし、SVNリポジトリ全体を別の場所にコピーした後、ソリューションのロードとクローズに突然時間がかかりました。 (私はここで30-60分話しています!)

39
gehho

自分で解決策を見つけたので、ここでそれを共有したいと思いました。誰かの研究にかなりの時間を費やすことを期待し、「解決策の準備...」ダイアログを見つめました。

Process Monitorを使用してdevenv.exeプロセスを調べると、.svnディレクトリへのアクセスが非常に忙しいことがわかりました。ここに私がやったことがあります(そしてこれが何らかの形で問題を解決しました):

  1. Visual Studioを強制終了する
  2. ソリューションをロードせずにVisual Studioを開く
  3. ソース管理プラグインとしてAnkhSvnを無効にします(ツール->オプション->ソース管理->プラグイン選択->なし)
  4. 生産性向上ツール([ツール]-> [オプション]-> [生産性向上ツール])で[Document Well 2010 Plus](VS2010)または[Custom Document Well](VS2012)を無効にします-助けたかもしれません...
  5. Visual Studioを閉じます
  6. ソリューションの*.suoファイルを削除します。これは、ソリューション自体と同じフォルダーにあります。 注:現在開いているファイル、ブレークポイント、ブックマーク、現在のソリューション構成とプラットフォーム(例:デバッグx86)など、ソリューションのいくつかの設定が失われます。
  7. Visual Studioを再起動します
  8. ソリューションをロードします-今でははるかに高速です!
  9. Visual Studioを閉じます
  10. ソリューションをロードせずにVisual Studioを開く
  11. AnkhSvnと「Document Well」を再度有効にします
  12. Visual Studioを再起動します
  13. ソリューションを開きます-まだ数秒でロードされました!

これらの手順のどれが実際に問題を解決したのかわかりません。おそらく、これらのすべての手順が必要というわけではありませんが、どの手順を省略できるかを見つけるために問題を再現したくありませんでした。 :)

66
gehho

それらのどれも私を助けてくれませんでした、私がやったこと...私はsysinternalsのProcMonで監視し、devenvをフィルタリングし、fussionlogのエントリをたくさん見ました。私は数週間前にデバッグ目的でfussionlogを有効にしていたので、それを無効にすることを考えていませんでした。 fussionlogを無効にするだけで、ソリューションがより速く開きました。

5
xisket

Visual Studioをセーフモードで開き、プロジェクトを開いた後にプラグインとソース管理の設定を確認できます。セーフモードとは、「Visual Studioを起動し、既定の環境とサービスのみを読み込む」ことを意味します。

どうやって :

devenv /SafeMode 

またはあなたの道に従って

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /SafeMode

ソース: https://msdn.Microsoft.com/en-us/library/ms241278.aspx

3
Tarek El-Mallah

私の場合、以下の手順は介入ステップを示唆することなく機能しました。

  1. Visual Studioを終了します。
  2. Visual Studioを直接起動します(つまり、。slnファイルからではなく)。
  3. 次に、Visual Studio内からソリューションを開きます。

私の場合、設定を変更したりファイルを削除したりする必要なしに、問題解決策を非常に迅速にロードするのにこれですべてでした。

1
Reg Edit

ちなみに、これは遅いエントリであることがわかりましたが、多数のブレークポイントを削除(削除)するだけで、過剰なロード時間とコンパイル時間を解決できることがわかりました。このアクションにより、.suoファイルのサイズが214MBから977KBに縮小されました。 VSに.suoファイル自体を処理させます。 35のプロジェクトを含むソリューションでは、コンパイルとロードに5〜10分ではなく1分未満かかります。 Visual Studio 2012 Pro、アップデート4。

1
jafo

上記を試しましたが、問題は解決しませんでした。

この問題をどのように回避したかを以下に示します。うまくいけば、一部のユーザーにもうまくいくと思います。

  1. ソリューションなしでVisual Studio 2013を開きます。
  2. 新しいC#コンソールアプリケーションを作成して保存します。
  3. Visual Studioを閉じます。
  4. 手順2で作成したコンソールソリューションを再度開きます。
  5. Visual Studioを閉じます。
  6. 以前にソリューションの準備ダイアログで停止していたソリューションを再度開きます。鉱山はすぐに開き、もうぶら下がっていません。
0
Yves Rochon

他の答えはどれも私にとってはうまくいきませんでした。 CIのコンパイル時間は問題ありませんでしたが、Visual Studioでソリューションをロードするのに2分近くかかりました。 VSは、次にソリューションを閉じて開くまで正常に動作します。 VSの異なるバージョンはすべて同じ問題を示し、セーフモードとsuoの削除の両方は役に立ちませんでした。

最終的に http://geekswithblogs.net/akraus1/archive/2014/04/30/156156.aspx のアドバイスに従って、Windowsパフォーマンスレコーダーを使用してVSをインスツルメントし、問題を見つけました。 「CPU Usage(Sampled)」セクションの下にあるWindows Performance Analyzerを見て、「Stack(Frame Tags)」列を追加することで、devenv.exeの使用状況を調べることができました。

Microsoft.VisualStudio.Platform.WindowManagement.ni.dll 23がコールダウンし、最終的にはMicrosoft.VisualStudio.ServerExplorer.dllMicrosoft.VisualStudio.Data.Package.dllを呼び出したカウントによりホットパスが判明します。そのため、UIのサーバーエクスプローラーを見て、[データ接続]タブを開くようになりました。そこで、debug web.configのConnectionStringセクションから誤って追加された何百もの接続を見つけました。これらをweb.configから削除すると、個々のプロジェクトの負荷が90秒以上からほぼ瞬時に減少しました。

0
Jeremy Murray

Visual Studio 2015を使用して、新しいソリューションを作成し、既存のプロジェクトを追加しました。

Gehhoの回答から* .suoを削除することは以前は役に立ちましたが、この場合は役に立ちませんでした。ソリューションのルートにある隠し.vsフォルダーには、別の.suoファイルもあります。

Visual Studio 2015については他にも回答があります Visual Studio 2015は非常に遅いです

0
goodeye