Tôi đang ở cuối wits. Visual Studio thường rất chậm để gỡ lỗi hoặc chỉ tải đơn giản ("bắt đầu mà không gỡ lỗi") các trang web ASP.NET MVC của tôi. Không phải lúc nào: lúc đầu, các dự án sẽ tải tốt và nhanh, nhưng một khi chúng tải chậm, chúng sẽ luôn tải chậm sau đó. Tôi có thể đợi 1-2 phút trở lên.
Thiết lập của tôi:
Hiện tại tôi đang sử dụng Visual Studio 2012 Express , nhưng tôi cũng gặp vấn đề tương tự trong Visual Studio 2010 Express. Giải pháp của tôi được lưu trữ trên một ổ đĩa mạng; cụ thể, đó là Tài liệu của tôi được chuyển hướng đến ổ đĩa mạng, nếu có vấn đề. (Không nên. Đôi khi trang web của tôi tải rất nhanh theo thiết lập này.)
Tôi tải trong Internet Explorer 9 thường xuyên, nhưng vấn đề tương tự xảy ra trong Firefox.
Điều này có thể xảy ra trong bất kỳ dự án ASP.NET MVC nào mà tôi làm việc và dường như xoay quanh việc có DisplayTemsheet, điều mà tất cả các dự án ASP.NET MVC của tôi đều làm. Và đó là tất cả C # và Dao cạo, nếu điều đó quan trọng.
Triệu chứng:
Hệ thống sẽ tải các biểu tượng của tôi hàng trăm lần. Về cơ bản, sau đây, nhưng có ít nhất 300 hàng như vậy, mỗi hàng có các tệp DLL khác nhau đôi chút cho cùng một CSHTML:
'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.
Trong phần trên, tôi đã có ba Bản mẫu: "Liên hệ", "Vị trí" và "Mã trạng thái". Dường như IIS đang tải các biểu tượng hai lần cho mỗi lần hiển thị bảng hiển thị được gọi. Do đó, nếu tôi đang hiển thị một bảng gồm 100 mục gọi cả ba mẫu hiển thị này, thì đó là 600 biểu tượng riêng biệt được tải.
Đây cũng không phải là một hoạt động nhanh chóng. Tìm kiếm trong các tệp nhật ký mà IIS tạo ra, phải mất khoảng 200 ms cho mỗi biểu tượng để tải. Như vậy, sự chậm trễ siêu dài.
Những gì tôi đã thử:
- Phiên bản gỡ lỗi hoặc phát hành, nó không thành vấn đề.
- Đưa dự án của tôi vào triển khai IIS đầy đủ trên máy chủ web sẽ chạy rất nhanh mà không gặp vấn đề gì.
- Cassini, IIS Express 7.5 và IIS Express 8.0 đều có vấn đề.
- Xóa tất cả các điểm dừng không làm gì.
- Giải pháp sạch , hoặc xóa .suo cũng không làm gì cả.
- Nếu tôi sửa IIS Express hoặc xóa
My Docs\IISExpress
thư mục hoặc sửa chữa / cài đặt lại Visual Studio → vấn đề có thể biến mất, nhưng chỉ trong một thời gian, trước khi nó quay lại ngay.
Bất kỳ lời khuyên nào đều được đánh giá cao.
Để trả lời nhiều câu hỏi hơn, vâng, máy của tôi chắc chắn có mã lực. Điều gây phẫn nộ là cùng một dự án, với việc KHÔNG thay đổi, đôi khi có thể tải rất nhanh, thường là sau khi tôi sửa IIS Express và xóa My Docs\IISExpress
thư mục. Cuối cùng, "một cái gì đó" xảy ra và mất đến 2 phút để tải lại. Những gì tôi đang làm không phải là một dự án phức tạp. Không có thư viện bên ngoài hoặc phụ thuộc và VS.NET của tôi không có tiện ích bổ sung nào.
Đáng chú ý, chiếc máy này có Symantec Endpoint Protection, có lịch sử gây ra sự tàn phá. Nhưng việc vô hiệu hóa nó hoàn toàn (tốt là một quản trị viên) đã không khắc phục được vấn đề.
Tôi có một lý thuyết vào thời điểm này. Tôi nghĩ rằng đây là tất cả bởi vì tôi đang làm việc với một thư mục được chuyển hướng khỏi chia sẻ mạng. Trong khi trình gỡ lỗi đang trải qua hàng trăm dòng "biểu tượng được tải", tôi dừng lại để xem nó đang làm gì. Đó là trong mã của tôi, tải DisplayTemplate tôi có. Bước vào đầu ra mẫu này:
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'
Có vẻ như Visual Studio đang biên dịch lại màn hình hiển thị của tôi mỗi lần nó được gọi, một lần nữa, hàng trăm lần. Lý thuyết của tôi là Visual Studio biên dịch tệp, lưu nó vào chia sẻ mạng, chia sẻ mạng sau đó bằng cách nào đó đóng dấu một thời gian mới trên đó và Visual Studio sau đó nghĩ rằng tệp đã thay đổi và do đó Visual Studio biên dịch lại một lần nữa. Chỉ có một lý thuyết mặc dù; Tôi thật sự không có manh mối nào.
Đối với một người, rõ ràng tôi có các tệp ngoại tuyến trên (đây là một máy tính để bàn trong văn phòng; tôi không thể quan tâm ít hơn). Tôi sẽ vô hiệu hóa, khởi động lại và thử lại vào ngày mai.
Thêm vào đó, chuyển dự án của tôi, như là, đến địa phương C: sửa nó. Nó tải rất nhanh. Nhưng điều này không lý tưởng trong môi trường làm việc. Tôi mất các Phiên bản trước, mã của tôi hoàn toàn không được sao lưu trừ khi tôi sao chép thủ công và nó không còn được chia sẻ với bất kỳ ai.
Tôi có thể thực hiện với việc sao chép nó qua lại từ C vào mạng chia sẻ, nếu nói đến nó. Thật khó chịu hơn nhiều khi phải chờ hai phút cho mỗi lần tải trang.