2009-04-21 54 views
437

Khi tôi tạo ra và biên soạn một "hello world" ứng dụng trong C#, tôi nhận được ba tập tin trong thư mục gỡ lỗi ngoài các exe chính (ví dụ HelloWorld.exe)Mục đích của tệp vshost.exe là gì?

  1. HelloWorld.vshost.exe
  2. HelloWorld .pdb
  3. HelloWorld.vshost.exe.manifest

Mục đích của các tệp này là gì?

Trả lời

382

Tính năng vshost.exe được giới thiệu với VS2005 (để trả lời nhận xét của bạn).

Mục đích của việc này là làm cho việc khởi chạy gỡ lỗi nhanh hơn - về cơ bản đã có một quy trình với khung chạy, chỉ sẵn sàng tải ứng dụng của bạn ngay khi bạn muốn.

Xem this MSDN articlethis blog post để biết thêm thông tin.

+25

Vì vậy, đó là lý do tại sao khi tôi chạy Console.Write (System.AppDomain.CurrentDomain.FriendlyName) từ trình gỡ lỗi, tôi nhận app.vshost.exe và khi tôi chạy trực tiếp từ exe tôi nhận được đầu ra như app.exe – Milen

+2

Cảm ơn để trả lời bình luận của tôi. Đó là một trong những điều tôi không biết từ VS2005 và tôi đã quá lười biếng và không quan tâm đủ để tìm kiếm và học hỏi! –

+0

@Milen, http://msdn.microsoft.com/en-us/library/ms242202.aspx đã đề cập đến kết quả khác nhau của AppDomain.CurrentDomain.FriendlyName có và không có quá trình lưu trữ. – Thomson

58

Tệp vshost.exe là tệp thực thi do Visual Studio (thực thi máy chủ phòng thu trực quan). Đây là tệp thực thi liên kết với Visual Studio và cải thiện gỡ lỗi.

Khi bạn đang phân phối ứng dụng của mình cho người khác, bạn không sử dụng tệp vshost.exe hoặc .pdb (gỡ lỗi cơ sở dữ liệu).

+0

Tôi nhớ chúng tôi không có tệp thực thi như vậy trong VS2003 (nhưng chúng tôi đã có điểm ngắt). bạn có thể giải thích về điều đó không? –

+1

Hơn nữa, tệp kê khai là siêu dữ liệu về ứng dụng thường được liên kết trong tệp thực thi. Tệp .pdb là một Cơ sở dữ liệu gỡ lỗi di động và chứa thông tin gỡ lỗi về tệp thực thi được biên dịch, giống như điểm trong tệp thực thi tương ứng với dòng nào trong mã. – Joey

+3

Quá trình lưu trữ VS chỉ được sử dụng để cải thiện gỡ lỗi - nhưng nó không cho phép gỡ lỗi. –

158
  • .exe - những 'bình thường' thực thi

  • .vshost.exe - một phiên bản đặc biệt của thực thi để hỗ trợ debuging; thấy MSDN để biết chi tiết

  • PDB - các Program Data Base với các biểu tượng debug

  • .vshost.exe.manifest - một loại configuration file chứa chủ yếu phụ thuộc vào thư viện

10

Tôi không chắc chắn , nhưng tôi tin rằng đó là một tối ưu hóa gỡ lỗi. Tuy nhiên, tôi thường tắt nó đi (xem tính năng Debug cho dự án) và tôi không nhận thấy bất kỳ sự chậm lại nào và tôi không thấy có giới hạn khi nói đến việc gỡ lỗi, vì vậy chắc chắn không cần thiết để gỡ lỗi như đã được Guard bảo vệ.

2

Dường như đó là quy trình khung làm việc lâu dài để gỡ lỗi (để giảm thời gian tải?). Tôi phát hiện ra rằng khi bạn khởi động ứng dụng của bạn hai lần từ trình gỡ lỗi thường thì quá trình vshost.exe sẽ được sử dụng. Nó chỉ dỡ tất cả các tệp DLL do người dùng tải trước. Điều này làm những điều kỳ lạ nếu bạn đang lừa xung quanh với móc API từ các quy trình được quản lý.

+1

Quá trình liên tục cũng gây ra ngoại lệ (vi phạm truy cập) khi dự án của tôi có một số mã để thực hiện P/Invoke. Sự cố đã biến mất sau khi tôi vô hiệu hóa quá trình lưu trữ. – Thomson

10

Thêm vào, bạn có thể tắt việc tạo ra các file vshost cho phát hành build cấu hình của bạn và có nó kích hoạt cho gỡ lỗi.

bước

  • Thuộc tính dự án>gỡ lỗi> Cấu hình (Hủy bỏ)> Disable Visual Studio lưu trữ quá trình
  • Thuộc tính dự án>gỡ lỗi> Cấu hình (Debug)> Bật quy trình lưu trữ Visual Studio

Screenshot from VS2010

Reference

  1. MSDN How to: Disable the Hosting Process
  2. MSDN Hosting Process (vshost.exe)

Trích từ MSDN How to: Disable the Hosting Process

Các cuộc gọi đến API nhất định có thể bị ảnh hưởng khi qui lưu trữ ss được bật. Trong những trường hợp này, nó là cần thiết để vô hiệu hóa quá trình lưu trữ để trả lại kết quả chính xác.

Để vô hiệu hóa quá trình lưu trữ

  1. mở một dự án thực thi trong Visual Studio. Các dự án không tạo ra tệp thi hành (ví dụ, thư viện lớp hoặc dự án dịch vụ) không có tùy chọn này.
  2. Trên menu Dự án, hãy nhấp Thuộc tính.
  3. Nhấp vào tab Gỡ lỗi.
  4. Xóa Bật hộp kiểm Lưu trữ Visual Studio.

Khi quá trình lưu trữ bị tắt, một số tính năng gỡ lỗi không khả dụng hoặc bị giảm hiệu suất. Để biết thêm thông tin, hãy xem Debugging and the Hosting Process.

Nói chung, khi quá trình lưu trữ bị vô hiệu hóa:

  • Thời gian cần thiết để bắt đầu gỡ lỗi các ứng dụng .NET Framework tăng.
  • Đánh giá biểu thức thời gian thiết kế không khả dụng.
  • Gỡ lỗi tin cậy một phần không khả dụng.
Các vấn đề liên quan