เมื่อฉันสร้างและรวบรวม "Hello, World!" แอปพลิเคชันใน C # ฉันได้รับสามไฟล์ในโฟลเดอร์ Debug นอกเหนือจาก exe หลัก (เช่น HelloWorld.exe)
- HelloWorld.vshost.exe
- HelloWorld.pdb
- HelloWorld.vshost.exe.manifest
ไฟล์เหล่านี้มีจุดประสงค์อะไร
เมื่อฉันสร้างและรวบรวม "Hello, World!" แอปพลิเคชันใน C # ฉันได้รับสามไฟล์ในโฟลเดอร์ Debug นอกเหนือจาก exe หลัก (เช่น HelloWorld.exe)
ไฟล์เหล่านี้มีจุดประสงค์อะไร
คำตอบ:
คุณลักษณะ vshost.exe ถูกนำมาใช้กับ Visual Studio 2005 (เพื่อตอบความคิดเห็นของคุณ)
จุดประสงค์ของมันคือเพื่อให้การดีบักเปิดใช้งานได้เร็วขึ้นโดยทั่วไปมีกระบวนการที่เฟรมเวิร์กทำงานอยู่พร้อมที่จะโหลดแอปพลิเคชันของคุณทันทีที่คุณต้องการ
ดูบทความ MSDN นี้และบล็อกโพสต์นี้สำหรับข้อมูลเพิ่มเติม
.exe - ปฏิบัติการ 'ปกติ'
.vshost.exe - เวอร์ชันพิเศษของไฟล์ปฏิบัติการเพื่อช่วยในการดีบัก ดูMSDNสำหรับรายละเอียด
.pdb - ฐานข้อมูลโปรแกรมที่มีสัญลักษณ์ดีบัก
.vshost.exe.manifest - ชนิดของไฟล์กำหนดค่าที่มีการอ้างอิงส่วนใหญ่ในไลบรารี
ไฟล์ vshost.exe คือไฟล์สั่งการที่รันโดย Visual Studio (ไฟล์ปฏิบัติการโฮสต์ Visual Studio) นี่เป็นไฟล์ปฏิบัติการที่เชื่อมโยงไปยัง Visual Studio และปรับปรุงการดีบัก
เมื่อคุณแจกจ่ายแอปพลิเคชันของคุณให้ผู้อื่นคุณไม่ใช้ไฟล์ vshost.exe หรือ. pdb (ฐานข้อมูลดีบัก)
เพิ่มคุณสามารถปิดการสร้างไฟล์ vshost สำหรับคุณที่วางจำหน่ายสร้างการกำหนดค่าและมีมันเปิดใช้งานสำหรับตรวจแก้จุดบกพร่อง
ขั้นตอน
การอ้างอิง
ตัดตอนมาจากMSDN วิธีการ: ปิดใช้งานกระบวนการโฮสต์
การโทรไปยัง API บางอย่างอาจได้รับผลกระทบเมื่อเปิดใช้งานกระบวนการโฮสต์ ในกรณีเหล่านี้จำเป็นต้องปิดการใช้งานกระบวนการโฮสต์เพื่อส่งคืนผลลัพธ์ที่ถูกต้อง
เพื่อปิดการใช้งานกระบวนการโฮสต์
เมื่อกระบวนการโฮสต์ถูกปิดใช้งานคุณสมบัติการดีบักหลายอย่างจะไม่พร้อมใช้งานหรือพบว่าประสิทธิภาพลดลง สำหรับข้อมูลเพิ่มเติมโปรดดูที่การแก้จุดบกพร่องและกระบวนการ Hosting
โดยทั่วไปเมื่อกระบวนการโฮสต์ถูกปิดใช้งาน:
- เวลาที่จำเป็นในการเริ่มต้นการดีบักแอปพลิเคชัน. NET Framework เพิ่มขึ้น
- การประเมินนิพจน์ขณะออกแบบไม่พร้อมใช้งาน
- การดีบักความน่าเชื่อถือบางส่วนไม่พร้อมใช้งาน
ฉันไม่แน่ใจ แต่ฉันเชื่อว่าเป็นการเพิ่มประสิทธิภาพการดีบัก อย่างไรก็ตามฉันมักจะปิด (ดูคุณสมบัติการแก้ปัญหาสำหรับโครงการ) และฉันไม่ได้สังเกตเห็นการชะลอตัวใด ๆ และฉันไม่เห็นข้อ จำกัด เมื่อมันมาถึงการแก้จุดบกพร่อง
ดูเหมือนว่าจะเป็นกระบวนการที่ใช้เวลานานในการดีบัก (เพื่อลดเวลาในการโหลด?) ฉันค้นพบว่าเมื่อคุณเริ่มแอปพลิเคชันของคุณสองครั้งจากดีบักเกอร์มักจะใช้กระบวนการ vshost.exe เดียวกัน มันเป็นเพียงการยกเลิกการโหลด DLLs ที่ผู้ใช้โหลดทั้งหมดก่อน สิ่งนี้จะทำสิ่งแปลก ๆ ถ้าคุณหลอกด้วย API hooks จากกระบวนการที่ได้รับการจัดการ