Aku kehabisan akal. Visual Studio biasanya sangat lambat melakukan debug atau hanya memuat ("mulai tanpa debug") situs ASP.NET MVC saya. Tidak selalu: pada awalnya, proyek akan memuat bagus dan cepat, tetapi begitu mereka memuat lambat, mereka akan selalu memuat lambat setelah itu. Saya bisa menunggu 1-2 menit atau lebih.
Pengaturan saya:
Saya menggunakan Visual Studio 2012 Express , saat ini, tapi saya punya masalah yang sama di Visual Studio 2010 Express juga. Solusi saya disimpan di drive jaringan; khususnya, Dokumenku dialihkan ke drive jaringan, jika itu penting. (Seharusnya tidak. Ada waktu di mana situs saya memuat sangat cepat di bawah pengaturan ini.)
Saya memuat di Internet Explorer 9 biasanya, tetapi masalah yang sama terjadi di Firefox.
Ini dapat terjadi di setiap proyek ASP.NET MVC yang saya kerjakan, dan tampaknya berputar dengan memiliki DisplayTemplates, yang dilakukan semua proyek ASP.NET MVC saya. Dan itu semua C # dan Razor, jika itu penting.
Gejala:
Sistem akan memuat ratusan simbol saya kali. Pada dasarnya, berikut ini, tetapi ada setidaknya 300 baris seperti itu, masing-masing dengan file DLL yang sangat berbeda untuk CSHTML yang sama:
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.xighmhow.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.cv5hktkf.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.1o77hs8i.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.jja-77mw.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.l_e9ev_s.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.b4n59gom.dll', Symbols loaded.
Di atas, saya punya tiga DisplayTemplates: "Kontak", "Location", dan "StatusCode". Tampaknya IIS memuat simbol dua kali untuk setiap kali displaytemplate dipanggil. Jadi, jika saya menampilkan tabel 100 entri yang memanggil ketiga templat display ini, 600 simbol yang berbeda dimuat.
Ini juga bukan operasi cepat. Melihat dalam file log yang dihasilkan IIS, dibutuhkan sekitar 200 ms untuk setiap simbol dimuat. Jadi, keterlambatan super panjang.
Apa yang saya coba:
- Versi Debug atau Rilis, tidak masalah.
- Menempatkan proyek saya pada implementasi IIS penuh pada server web menjalankannya sangat cepat tanpa masalah.
- Cassini, IIS Express 7.5, dan IIS Express 8.0 semua memiliki masalah.
- Hapus Semua Breakpoint tidak melakukan apa pun.
- Bersihkan Solusi , atau menghapus .suo juga tidak melakukan apa pun.
- Jika saya memperbaiki IIS Express, atau menghapus
My Docs\IISExpress
folder, atau memperbaiki / menginstal ulang Visual Studio → masalah MUNGKIN pergi, tetapi hanya untuk sementara waktu, sebelum kembali segera.
Setiap saran sangat dihargai.
Untuk menjawab lebih banyak pertanyaan, ya mesin saya pasti memiliki tenaga kuda. Yang menyebalkan adalah bahwa proyek yang sama, dengan TIDAK ADA yang diubah, dapat memuat dengan sangat cepat kadang-kadang, biasanya setelah saya memperbaiki IIS Express dan menghapus My Docs\IISExpress
folder. Akhirnya "sesuatu" terjadi dan perlu 2 menit untuk memuat lagi. Apa yang saya kerjakan bukanlah proyek yang rumit. Tidak ada pustaka atau dependensi eksternal, dan VS.NET saya tidak memiliki add-ons apa pun.
Sebagai catatan, mesin ini memiliki Symantec Endpoint Protection, yang memiliki sejarah menyebabkan kekacauan. Tetapi menonaktifkannya secara langsung (sebaiknya menjadi administrator) tidak memperbaiki masalah.
Saya punya teori saat ini. Saya pikir ini semua karena saya mengerjakan folder yang dialihkan dari jaringan. Sementara debugger sedang melewati ratusan baris "simbol yang dimuat", saya berhenti untuk melihat apa yang dilakukannya. Itu dalam kode saya, memuat DisplayTemplate yang saya miliki. Melangkah ke output template ini:
Step into: Stepping over non-user code 'System.Threading.WaitHandle.InternalWaitOne'
Step into: Stepping over non-user code 'System.Threading.WaitHandle.WaitOne'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCapture'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch'
Step into: Stepping over non-user code 'System.Web.Compilation.AssemblyBuilder.Compile'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.bciuyg14.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.CompileWebFile'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultInternal'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.Find'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.Html.TemplateHelpers.ActionCacheViewItem.Execute'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.kwj3uqan.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.RuntimeType.CreateInstanceSlow'
Step into: Stepping over non-user code 'System.Web.Mvc.DependencyResolver.DefaultDependencyResolver.GetService'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerCompiledView.Render'
Sepertinya Visual Studio mengkompilasi ulang displaytemplate saya setiap kali dipanggil, yang sekali lagi, ratusan kali. Teori saya adalah bahwa Visual Studio mengkompilasi file, menyimpannya ke jaringan berbagi, jaringan berbagi entah bagaimana waktu baru di atasnya, dan Visual Studio kemudian berpikir file telah berubah dan dengan demikian Visual Studio mengkompilasi ulang lagi. Hanya sebuah teori; Saya benar-benar tidak tahu.
Untuk satu, tampaknya saya memiliki file offline (ini adalah komputer desktop di kantor; Saya tidak peduli). Saya akan menonaktifkan, reboot, dan coba lagi besok.
Plus, memindahkan proyek saya, seperti, ke C lokal: memperbaikinya. Ini memuat sangat cepat. Tapi ini tidak ideal di lingkungan kerja. Saya kehilangan Versi Sebelumnya, kode saya tidak didukung sama sekali kecuali saya menyalinnya secara manual, dan tidak lagi dibagikan kepada siapa pun.
Saya bisa lakukan dengan menyalinnya bolak-balik dari C ke jaringan berbagi, jika itu terjadi. Jauh lebih menjengkelkan untuk menunggu dua menit untuk setiap pemuatan halaman.