Mục đích của quá trình lưu trữ Visual Studio là gì?


165

Khi gỡ lỗi chương trình bằng Visual Studio, bạn được cung cấp tùy chọn Enable the Visual Studio hosting process. Mục đích của tùy chọn này là gì và nó có tác dụng gì?


88
Khó tin câu hỏi này đã bị đóng cửa vì "không phải là một câu hỏi thực sự"! Quá trình lưu trữ là đủ thực sự, biết những gì nó làm là quan trọng đối với bất kỳ lập trình viên .NET. Như bất kỳ tùy chọn bí ẩn nào trong trang cài đặt Visual Studio dễ dàng truy cập. Hãy để mọi người mở lại này.
Hans Passant

Câu trả lời:


85

Thư viện MSDN không cung cấp thông tin tốt về "quy trình lưu trữ". Hai tính năng cuối cùng được liệt kê trong liên kết của Eric thực sự là các vấn đề do tính năng này gây ra. Có một cái khác mà bạn bị ràng buộc phải chạy vào sớm hay muộn: nó sử dụng một tệp app.config khác. Một hoạt động được đặt tên là yourapp.vshost.exe.config. Cảnh giác với điều này khi bạn thực hiện các thay đổi thủ công cho tập tin.

Một tính năng khác mà nó hỗ trợ rất dễ thấy khi bạn gỡ lỗi ứng dụng của mình nhưng không được đề cập ở bất cứ đâu là những gì xảy ra với đầu ra được tạo ra bởi Console.Write (). Trong một ứng dụng chế độ không có giao diện điều khiển, nó được chuyển hướng đến cửa sổ đầu ra của IDE. Rất hữu ích.

Thuật ngữ "lưu trữ" dùng để chỉ một tính năng của CLR, nó có thể được "lưu trữ". Ví dụ về máy chủ CLR tùy chỉnh là SQL Server và ASP.NET. Hosting cho phép một người định cấu hình CLR trước khi bắt đầu. Một mục đích sử dụng chính của việc này là cấu hình AppDomain chính và thiết lập các chính sách bảo mật tùy chỉnh. Đó chính xác là những gì quá trình lưu trữ đang làm.

Một ví dụ tốt về máy chủ CLR tùy chỉnh có sẵn trong câu hỏi này .

Câu chuyện dài: trong chế độ gỡ lỗi, bạn đang chạy với một phiên bản CLR tùy chỉnh, một phiên bản cải thiện trải nghiệm gỡ lỗi.


4
Tôi có thói quen vô hiệu hóa tính năng này trên mỗi dự án mới. Tôi đã gặp phải các vấn đề lạ khi làm việc với C ++ / CLI WinForms Designer, điều đó không xảy ra với tính năng này bị vô hiệu hóa.
lướt

Điều đó rất khó có liên quan, IDE C ++ không sử dụng quy trình lưu trữ cũng như không được sử dụng trong chế độ thiết kế.
Hans Passant

2
Ngoài ra, trên trang web của Microsoft ( msdn.microsoft.com/en-us/l Library / ms242202.aspx ), nó nói rằng nó cho phép Gỡ lỗi tin cậy một phần (không biết đó là gì) và Đánh giá biểu hiện thời gian thiết kế, mà tôi thường sử dụng để đánh giá biểu thức trong cửa sổ Ngay lập tức. Tuy nhiên, lưu trữ có vấn đề của nó như đã lưu ý.
Jay Imerman

5
Quá trình lưu trữ có xu hướng giữ các DLL được tải mà tôi muốn ghi từ một bản sao khác đang chạy của Visual Studio. Giết quá trình lưu trữ, hoặc thậm chí thoát và khởi động lại VS vi phạm, không giúp ích gì, vì quá trình lưu trữ mới bắt đầu tải lại DLL. Đây là lý do tại sao tôi thường vô hiệu hóa nó.
gpvos

Tôi đang quan sát rằng các Console.WriteLinebản ghi được in trong cửa sổ đầu ra ngay cả khi tôi tắt Enable the Visual Studio hosting processtùy chọn từ cửa sổ thuộc tính của dự án biểu mẫu windows. Không chắc chắn lý do tại sao.
RBT

17

Từ MSDN :

Quá trình lưu trữ Visual Studio cải thiện hiệu suất của trình gỡ lỗi và cho phép các tính năng của trình gỡ lỗi mới, chẳng hạn như gỡ lỗi tin cậy một phần và đánh giá biểu thức thời gian thiết kế


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.