2010-05-19 15 views
7

Bir VS paketi yapıyorum ve yeni bir sekmede kullanıcı seçili bir dosyayı açmak için Visual Studio'ya bir komut göndermeyi deniyorum. Bir kullanıcı Dosya -> Aç ... 'a giderek bunu yapardı.Visual Studio'da (2010) programsal olarak bir dosya açma

Bunu nasıl yapacağımı bir noktada görmeyi hatırlıyorum. Hafızamı yenileyebilen var mı?

cevap

7

sana birini istiyorum inanıyoruz: Sonunda

  • DTE.ItemOperations.OpenFile
    1. IVsUIShellOpenDocument.OpenStandardEditor
    2. DTE.OpenFile
    3. , bütün çıban aşağı aynı davranışa onlar düşünüyorum.

      ekleyebilir

    +0

    Merhaba Chris ... Ama anlamıyorum. DTE neslimde bu yöntemlerden hiçbiri yok. Ve yeni bir DTE nesnesi yapmaya çalışırsam, bana bir hata verir. Baska öneri? – Andrei

    +0

    Hangi meclisleri referanslıyorsunuz (örn. 'DTE' türünüz nereden geliyor?) Yukarıda belirtilen 'DTE' nesneleri EnvDTE.dll'den geliyor, bu yüzden buna bir başvuru eklemeyi deneyin. Yeni bir 'DTE' nesnesi oluşturmaya çalışırken aldığınız hata nedir? Derleme zamanı veya çalışma zamanı hatası mı? –

    +1

    Tüm ENVDTE80/100 meclislerini referans alıyorum. Hata derleme zamanı: Özet sınıfının veya arabiriminin bir örneği oluşturulamıyor 'EnvDTE80.DTE2' Ayrıca, bunu bir VS paketinde çalıştırıyorum (çünkü bir VS paketi yapıyorum). – Andrei

    7

    Bu olayla ExecuteCommand ("File.OpenFile") olarak VS Komutanlığı Pencere

    komutunu test edebilirsiniz olarak DTE yöntemi ExecuteCommand ("CommandName") kullanmak ister İsterseniz ikinci bir isteğe bağlı dize parametresinde komutu parametreler.

    +0

    Her nasılsa bu yöntemi bulamıyorum. .NET 4'te hala kullanılabilir mi? – Andrei

    +0

    VS2010'da yeni bir eklenti yarattım - şablon özel bir değişken oluşturuyor: private DTE2 _applicationObject; ExecuteCommand'ı buradan alabilirsiniz ... – philhobgen

    +0

    Ah, evet, ne demek istediğimi anlıyorum. Sorun şu ki bir Visual Studio Paketi oluşturuyordum. Bir Visual Studio Eklentisi de oluşturabilirim, ancak daha sonra, VS paketinde kullanabileceğim eklentinin bir örneğini nasıl oluşturabilirim, ancak eklenti de _applicationObject öğelerini koruyabilirdi. Umarım ne demek istediğimi anlarsınız, bir şekilde WinForms uygulamasından eklenti nesnesini (_applicationObject) kullanmak gibi. – Andrei