Visual Studio uzantılarında hata ayıklama


93

Visual Studio 2010 için bir VSIX uzantısı yazıyorum ve bu uzantıdaki hataları nasıl ayıklayacağımı bulamıyorum.

Açık bir yöntem, mesajların çıktısını almaktır. Uzantı şablonu kullanır Trace.WriteLine(). Ama çıktısını nerede bulabilirim?

Yanıtlar:


185

Visual Studio Extensions, diğer uygulamalar gibi hata ayıklanabilir. Devenv'i yüklü uzantı ile başlatmak için hata ayıklama deneyimini kurmanız yeterlidir. Takip etmeyi dene

  • Projeye sağ tıklayın ve Özellikler'i seçin
  • Hata Ayıklama Sekmesine gidin

İçin radyo düğmesine tıklayın Start External Program. Devenv.exe ikili dosyasına gelin. Makinemde şu konumda bulunuyor

C: \ Program Dosyaları (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe

X64 olmayan bir makinede "(x86)" bölümünü kaldırabilirsiniz.

Ardından komut satırı bağımsız değişkenlerini olarak ayarlayın /rootsuffix Exp. Bu, Visual Studio'ya normal yapılandırma kovanı yerine deneysel kovanı kullanmasını söyler. Varsayılan olarak, derlendiklerinde VSIX uzantıları kendilerini deneysel kovana kaydeder.

Artık F5 yapabilirsiniz ve kullanılabilir bir uzantı olarak VSIX'inizle Visual Studio başlatılacaktır.


Bu cevap için teşekkür ederim, bir sorunu tek seferde çözdüm. Çok minnettarım!
Richard Griffiths

@JaredPar - vs2012 uzantısının kendisini vs2015 ön izlemesinin deneysel kovanına kaydetmesini söylemenin bir yolu var mı?
Srikanth Venugopalan

1
Bu, yalnızca hata ayıklamak ve test etmek için kullandığınız sürümler aynıysa işe yarıyor gibi görünüyor. Yani 2013'te hata ayıklayamaz ve uzantıyı 2015'te çalıştıramazsınız. @SrikanthVenugopalan
Maria Ines Parnisari

@miparnisari - evet, öyle görünüyor. Birden fazla sürümü destekliyorsanız, biraz acı verici.
Srikanth Venugopalan

2
Merhaba, VSIX'im "mevcut uzantı" olarak başlayacak ne demek istiyorsun? Kullanılabilir uzantıları nerede bulabilirim? Araçlar -> Uzantılar ve Güncellemeler'e gittiğimde, yalnızca "Yüklendi", "Çevrimiçi" ve "Güncellemeler" i görüyorum.
pabrams

54

@JaredPar tarafından kabul edilen cevap teknik olarak doğrudur, ancak kodun her yeni kopyasını her aldığınızda ve csproj.userdosya silindiğinde her geliştirici için yeniden yapmanız gerektiği gerçeğinden muzdariptir . Bu şekilde yaptığınızda, ayarlar csproj.userdosyaya kaydedilir .

Daha iyi bir seçenek, ayarları csprojkaybolmamaları için dosyaya koymaktır . Ne yazık ki, Visual Studio bunu otomatik olarak yapmanıza izin vermez, bu nedenle ayarları manuel olarak eklemeniz gerekir. Neyse ki, ayarlar herhangi bir proje için aynıdır.

Sağ tıklayın ve projeyi kaldırın, ardından tekrar sağ tıklayın ve csprojproje dosyası dosyasını düzenleyin . XML'de, PropertyGroupörneğin hemen sonrasına aşağıdakileri ekleyin TargetFramework.

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

Bunun aşağıdaki avantajları vardır;

  • Hata ayıklama ve yayınlama için ayarlar
  • Şu anda çalıştırdığınız Visual Studio sürümünü çalıştırır
  • Kaynak kontrolünde kontrol edilir, böylece her geliştiricinin nasıl yapılacağını hatırlaması gerekmez :)

@MBulli'nin yorumlarda belirttiği gibi, kabul edilen cevapta değişiklik yaptıysanız, *.csproj.userdosyanızı silin çünkü içindeki ayarlar ana csprojdosyaya eklediklerinizi geçersiz kılacaktır .


6
Kullanıcı ayarlarının proje ayarlarına göre önceliği olduğundan * .csproj.user dosyasını sildiğinizden emin olun.
MBulli

Harika cevap, teşekkürler! Kabul edilenden çok daha verimli.
Zverev Evgeniy

2019 vs için mükemmel çalıştı
x0n

2

OutputWindowHelper.OutputString Genel 'çıkış pencere camı (Ctrl Alt o) yöntem yazma. Bu satırı VS 2013'te almak için .csproj referanslarıma ekledim

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

Ayrıca bu yanıta bakın .


Not OutputWindowHelper, Visual Studio 2015'te mevcut değildir. Yalnızca VS2015'e sahip bir makine, bu çağrılırsa bir hata atar. Ayrıca bkz. Github.com/landofjoe/NuspecPackager/issues/1
Quango

0

Bir UnitTestExtension hata ayıklamak çalışırsanız, ayrıca vstest hata ayıklayıcı ekleyin gerekir. *. Descibed gibi exe süreçleri burada . Aksi takdirde, etkinleştirme kesme noktasını görebilirsiniz, ancak hata ayıklayıcı buna asla ulaşmaz.

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.