Vshost.exe dosyasının amacı nedir?


483

Bir "Merhaba Dünya!" C # uygulaması, ana exe (örneğin HelloWorld.exe) dışında Debug klasöründe üç dosya alıyorum

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

Bu dosyalar hangi amaca hizmet ediyor?

Yanıtlar:


416

Vshost.exe özelliği Visual Studio 2005 (tanıtıma cevap vermek için) ile tanıtıldı.

Amacı çoğunlukla hata ayıklama başlatmayı daha hızlı hale getirmektir - temel olarak, çerçevenin çalıştığı bir işlem vardır, uygulamanızı istediğiniz anda yüklemeye hazırsınız.

Daha fazla bilgi için bu MSDN makalesine ve bu blog gönderisine bakın.


29
Bu yüzden hata ayıklayıcıdan Console.Write (System.AppDomain.CurrentDomain.FriendlyName) çalıştırdığımda, app.vshost.exe almak ve doğrudan exe çalıştırmak zaman app.exe olarak çıktı almak nedeni budur
Milen

@Milen, msdn.microsoft.com/en-us/library/ms242202.aspx , AppDomain.CurrentDomain.FriendlyName öğesinin ana bilgisayar işlemiyle ve ana işlem olmadan farklı sonucundan bahsetti.
Thomson

2
Hata ayıklama amacıyla vschost ve .pdb dosyaları varsa, Sürüm'de derlediğimde neden hala dahil ediliyorlar?
iliketocode

1
Sanırım Visual Studio 2017'de kaldırdılar
Felipe Fujiy Pessoto


62

Vshost.exe dosyası, Visual Studio (Visual Studio ana bilgisayar yürütülebilir) tarafından çalıştırılabilir yürütülebilir dosyadır. Bu, Visual Studio'ya bağlanan ve hata ayıklamayı geliştiren yürütülebilir dosyadır.

Uygulamanızı başkalarına dağıtırken vshost.exe veya .pdb (veritabanı hata ayıklama) dosyalarını kullanmazsınız.


VS2003'te böyle bir yürütülebilir dosya olmadığımızı hatırlıyorum (henüz kesme noktalarımız vardı). Bunu biraz açıklayabilir misin?
Mehrdad Afshari

1
Ayrıca, bildirim genellikle yürütülebilir dosyaya da bağlanan uygulama hakkındaki meta verilerdir. .Pdb dosyası bir Taşınabilir Hata Ayıklama Veritabanıdır ve derlenen yürütülebilir dosya ile ilgili hata ayıklama bilgilerini içerir, örneğin yürütülebilir dosyadaki kod hangi satıra karşılık gelir.
Joey

3
VS ana bilgisayar işlemi yalnızca hata ayıklamayı geliştirmek için kullanılır - ancak hata ayıklamayı etkinleştirmez.
Daniel Brückner

23

Ayrıca, Sürüm oluşturma yapılandırmanız için vshost dosyalarının oluşturulmasını kapatabilir ve Hata Ayıklama için etkinleştirebilirsiniz .

adımlar

  • Proje Özellikleri > Hata Ayıklama > Yapılandırma (Sürüm)> Visual Studio barındırma işlemini devre dışı bırakma
  • Proje Özellikleri > Hata Ayıklama > Yapılandırma (Hata Ayıklama)> Visual Studio barındırma işlemini etkinleştir

VS2010 ekran görüntüsü

Referans

  1. MSDN Nasıl Yapılır: Barındırma Sürecini Devre Dışı Bırakma
  2. MSDN Barındırma Süreci (vshost.exe)

MSDN'den Alıntı Nasıl Yapılır: Barındırma Sürecini Devre Dışı Bırakma

Barındırma işlemi etkinleştirildiğinde belirli API'lara yapılan çağrılar etkilenebilir. Bu durumlarda, doğru sonuçları döndürmek için barındırma işlemini devre dışı bırakmak gerekir.

Barındırma işlemini devre dışı bırakmak için

  1. Visual Studio'da yürütülebilir bir proje açın. Yürütülebilir dosya oluşturmayan projelerde (örneğin, sınıf kitaplığı veya hizmet projeleri) bu seçenek yoktur.
  2. On Proje menüsünde, tıklayın Özellikler ' .
  3. Click ayıklama sekmesini.
  4. Visual Studio barındırma işlemini etkinleştir onay kutusunu temizleyin .

Barındırma işlemi devre dışı bırakıldığında, çeşitli hata ayıklama özellikleri kullanılamaz veya performans düşüşü yaşanır. Daha fazla bilgi için bkz. Hata Ayıklama ve Barındırma Süreci .

Genel olarak, barındırma işlemi devre dışı bırakıldığında:

  • .NET Framework uygulamalarında hata ayıklamaya başlamak için gereken süre artar.
  • Tasarım zamanı ifade değerlendirmesi yapılamıyor.
  • Kısmi güven hata ayıklaması yapılamıyor.

10

Emin değilim, ama bunun bir hata ayıklama optimizasyonu olduğuna inanıyorum. Ancak, genellikle kapatın (bkz. Proje için hata ayıklama özellikleri) ve herhangi bir yavaşlama fark etmiyorum ve hata ayıklama söz konusu olduğunda hiçbir sınırlama görmüyorum.


"Muhafız" nedir? Buradaki cevaplardan birine sahip bir kullanıcı mı referans alıyor? Başka bir şey? Yanıtınızı güncelleyebilir misiniz (örneğin, kullanıcı adları herhangi bir zamanda değişebileceğinden doğrudan bir bağlantı ile)?
Peter Mortensen

Bunun başka bir cevaba referans olduğunu düşünüyorum, ama bu 09'da oldu, bu yüzden detayları hatırlamıyorsam beni affet.
Brian Rasmussen

2

Hata ayıklama için uzun süren bir çerçeve süreci gibi görünüyor (yükleme sürelerini azaltmak?). Uygulamanızı hata ayıklayıcıdan iki kez başlattığınızda genellikle aynı vshost.exe işleminin kullanılacağını keşfettim. Sadece kullanıcı tarafından yüklenen tüm DLL'leri kaldırır. Yönetilen süreçlerin API kancaları ile dalga geçiyorsanız, bu garip şeyler yapar.


1
Kalıcı işlem, projem P / Invoke yapmak için bazı kodlara sahip olduğunda istisnaya (erişim ihlali) neden olur. Ana bilgisayar işlemini devre dışı bıraktıktan sonra sorun kayboldu.
Thomson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.