ไฟล์ vshost.exe มีวัตถุประสงค์อะไร?


483

เมื่อฉันสร้างและรวบรวม "Hello, World!" แอปพลิเคชันใน C # ฉันได้รับสามไฟล์ในโฟลเดอร์ Debug นอกเหนือจาก exe หลัก (เช่น HelloWorld.exe)

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

ไฟล์เหล่านี้มีจุดประสงค์อะไร

คำตอบ:


416

คุณลักษณะ vshost.exe ถูกนำมาใช้กับ Visual Studio 2005 (เพื่อตอบความคิดเห็นของคุณ)

จุดประสงค์ของมันคือเพื่อให้การดีบักเปิดใช้งานได้เร็วขึ้นโดยทั่วไปมีกระบวนการที่เฟรมเวิร์กทำงานอยู่พร้อมที่จะโหลดแอปพลิเคชันของคุณทันทีที่คุณต้องการ

ดูบทความ MSDN นี้และบล็อกโพสต์นี้สำหรับข้อมูลเพิ่มเติม


29
นั่นคือเหตุผลว่าทำไมเมื่อฉันรัน Console.Write (System.AppDomain.CurrentDomain.FriendlyName) จากดีบักเกอร์ฉันจะได้รับ app.vshost.exe และเมื่อฉันเรียกใช้โดยตรงจาก exe ฉันจะได้ผลลัพธ์เป็น app.exe
Milen

@Milen, msdn.microsoft.com/en-us/library/ms242202.aspxพูดถึงผลลัพธ์ที่แตกต่างของ AppDomain.CurrentDomain.FriendlyName ที่มีและไม่มีกระบวนการโฮสต์
Thomson

2
หากไฟล์ vschost และ. pdb มีอยู่เพื่อการดีบั๊กแล้วทำไมไฟล์เหล่านั้นถึงยังรวมเมื่อฉันคอมไพล์ใน Release
iliketocode

1
ฉันเดาว่าพวกเขาลบมันใน Visual Studio 2017
Felipe Fujiy Pessoto

175
  • .exe - ปฏิบัติการ 'ปกติ'

  • .vshost.exe - เวอร์ชันพิเศษของไฟล์ปฏิบัติการเพื่อช่วยในการดีบัก ดูMSDNสำหรับรายละเอียด

  • .pdb - ฐานข้อมูลโปรแกรมที่มีสัญลักษณ์ดีบัก

  • .vshost.exe.manifest - ชนิดของไฟล์กำหนดค่าที่มีการอ้างอิงส่วนใหญ่ในไลบรารี


62

ไฟล์ vshost.exe คือไฟล์สั่งการที่รันโดย Visual Studio (ไฟล์ปฏิบัติการโฮสต์ Visual Studio) นี่เป็นไฟล์ปฏิบัติการที่เชื่อมโยงไปยัง Visual Studio และปรับปรุงการดีบัก

เมื่อคุณแจกจ่ายแอปพลิเคชันของคุณให้ผู้อื่นคุณไม่ใช้ไฟล์ vshost.exe หรือ. pdb (ฐานข้อมูลดีบัก)


ฉันจำได้ว่าเราไม่มีไฟล์ปฏิบัติการใน VS2003 (แต่เรามีจุดพัก) คุณอธิบายรายละเอียดเกี่ยวกับเรื่องนั้นได้ไหม?
Mehrdad Afshari

1
นอกจากนี้รายการคือข้อมูลเมตาเกี่ยวกับแอปพลิเคชันซึ่งโดยปกติจะได้รับการเชื่อมโยงไปยังโปรแกรมที่เรียกทำงานได้ ไฟล์. pdb เป็นฐานข้อมูล Debug แบบพกพาและมีข้อมูลการดีบักเกี่ยวกับการปฏิบัติการที่คอมไพล์เช่นจุดใดในการปฏิบัติการที่สอดคล้องกับบรรทัดในรหัส
Joey

3
กระบวนการโฮสต์ VS ใช้เพื่อปรับปรุงการดีบักเท่านั้น - แต่ไม่เปิดใช้งานการดีบัก
Daniel Brückner

23

เพิ่มคุณสามารถปิดการสร้างไฟล์ vshost สำหรับคุณที่วางจำหน่ายสร้างการกำหนดค่าและมีมันเปิดใช้งานสำหรับตรวจแก้จุดบกพร่อง

ขั้นตอน

  • คุณสมบัติโครงการ > แก้ไขข้อบกพร่อง > การกำหนดค่า (วางจำหน่าย)> ปิดใช้งานกระบวนการโฮสต์ Visual Studio
  • คุณสมบัติโครงการ > แก้ไขข้อบกพร่อง > การกำหนดค่า (ดีบัก)> เปิดใช้งานกระบวนการโฮสต์ Visual Studio

สกรีนช็อตจาก VS2010

การอ้างอิง

  1. MSDN วิธีการ: ปิดใช้งานกระบวนการโฮสต์
  2. กระบวนการโฮสต์ MSDN (vshost.exe)

ตัดตอนมาจากMSDN วิธีการ: ปิดใช้งานกระบวนการโฮสต์

การโทรไปยัง API บางอย่างอาจได้รับผลกระทบเมื่อเปิดใช้งานกระบวนการโฮสต์ ในกรณีเหล่านี้จำเป็นต้องปิดการใช้งานกระบวนการโฮสต์เพื่อส่งคืนผลลัพธ์ที่ถูกต้อง

เพื่อปิดการใช้งานกระบวนการโฮสต์

  1. เปิดโครงการที่ปฏิบัติการได้ใน Visual Studio โครงการที่ไม่ได้ผลิตแฟ้มปฏิบัติการ (ตัวอย่างเช่นไลบรารีคลาสหรือโครงการบริการ) ไม่มีตัวเลือกนี้
  2. ในโครงการเมนูคลิกคุณสมบัติ
  3. คลิกที่แท็บDebug
  4. ล้างกล่องกาเครื่องหมายเปิดใช้งานกระบวนการโฮสต์ Visual Studio

เมื่อกระบวนการโฮสต์ถูกปิดใช้งานคุณสมบัติการดีบักหลายอย่างจะไม่พร้อมใช้งานหรือพบว่าประสิทธิภาพลดลง สำหรับข้อมูลเพิ่มเติมโปรดดูที่การแก้จุดบกพร่องและกระบวนการ Hosting

โดยทั่วไปเมื่อกระบวนการโฮสต์ถูกปิดใช้งาน:

  • เวลาที่จำเป็นในการเริ่มต้นการดีบักแอปพลิเคชัน. NET Framework เพิ่มขึ้น
  • การประเมินนิพจน์ขณะออกแบบไม่พร้อมใช้งาน
  • การดีบักความน่าเชื่อถือบางส่วนไม่พร้อมใช้งาน

10

ฉันไม่แน่ใจ แต่ฉันเชื่อว่าเป็นการเพิ่มประสิทธิภาพการดีบัก อย่างไรก็ตามฉันมักจะปิด (ดูคุณสมบัติการแก้ปัญหาสำหรับโครงการ) และฉันไม่ได้สังเกตเห็นการชะลอตัวใด ๆ และฉันไม่เห็นข้อ จำกัด เมื่อมันมาถึงการแก้จุดบกพร่อง


"Guard" คืออะไร อ้างอิงถึงผู้ใช้ที่มีหนึ่งในคำตอบที่นี่? อื่น ๆ อีก? คุณสามารถอัปเดตคำตอบของคุณ (เช่นลิงก์โดยตรงเนื่องจากชื่อผู้ใช้สามารถเปลี่ยนแปลงได้ตลอดเวลา)?
Peter Mortensen

ฉันคิดว่านี่คือการอ้างอิงถึงคำตอบอื่น แต่นี่คือใน 09 ดังนั้นโปรดยกโทษให้ฉันถ้าฉันจำรายละเอียดไม่ได้
Brian Rasmussen

2

ดูเหมือนว่าจะเป็นกระบวนการที่ใช้เวลานานในการดีบัก (เพื่อลดเวลาในการโหลด?) ฉันค้นพบว่าเมื่อคุณเริ่มแอปพลิเคชันของคุณสองครั้งจากดีบักเกอร์มักจะใช้กระบวนการ vshost.exe เดียวกัน มันเป็นเพียงการยกเลิกการโหลด DLLs ที่ผู้ใช้โหลดทั้งหมดก่อน สิ่งนี้จะทำสิ่งแปลก ๆ ถ้าคุณหลอกด้วย API hooks จากกระบวนการที่ได้รับการจัดการ


1
กระบวนการถาวรยังทำให้เกิดข้อยกเว้น (การละเมิดการเข้าถึง) เมื่อโครงการของฉันมีรหัสบางอย่างที่ต้องทำ P / เรียกใช้ ปัญหาหายไปหลังจากฉันปิดการใช้งานกระบวนการโฮสต์
ทอมสัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.