2012-10-15 23 views
6

Görsel stüdyo için özel bir editör yazma aşamasındayım. Yeni dil için bazı temel işlevleri uyguladım. sözdizimi vurgulama ve oluşturulan .vsix dosyasını kullanarak paketi başarıyla yükledim. Tüm işler sadece güzel, ancak özel düzenleyicimin farklı dosya uzantıları ile ilişkilendirilebilmesi gerekiyor. Görsel stüdyo editör listesine özel bir düzenleyici ekleme

ben editör yüklü çünkü altında görünür olacağını, yanlışlıkla, düşünce

Araçlar-> Seçenekler ..-> Metin Editör-> Extension-> Editörler listesi Dosya:

enter image description here

Ancak orada görünmüyor. Yani soru şu: Bu listeye nasıl bir özel düzenleyici ekliyorsunuz?

Yardımlarınız için teşekkürler!

cevap

8

En azından bu soru için tümblewewe rozetini aldım.

ters mühendislik bir sürü ben Anywhere .. belgelenen değil çözüm ... ..

Adım numarası 1 bulundu sonra:

Önce tüm çan ile bir editör fabrika oluşturmanız gerekir ve onunla birlikte ıslık çalar - MSVS bunun için bir uzantısı vardır.

Adım numarası 2: Sonra böyle bir sınıf oluşturmak zorunda

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] 
    class ProvideFileExtensionMapping : RegistrationAttribute 
    { 
     private readonly string _name, _id, _editorGuid, _package; 
     private readonly int _sortPriority; 

     public ProvideFileExtensionMapping(string id, string name, object editorGuid, string package, int sortPriority) 
     { 
      _id = id; 
      _name = name; 
      if (editorGuid is Type) 
      { 
       _editorGuid = ((Type)editorGuid).GUID.ToString("B"); 
      } 
      else 
      { 
       _editorGuid = editorGuid.ToString(); 
      } 
      _package = package; 
      _sortPriority = sortPriority; 
     } 

     public override void Register(RegistrationContext context) 
     { 
      using (Key mappingKey = context.CreateKey("FileExtensionMapping\\" + _id)) 
      { 
       mappingKey.SetValue("", _name); 
       mappingKey.SetValue("DisplayName", _name); 
       mappingKey.SetValue("EditorGuid", _editorGuid); 
       mappingKey.SetValue("Package", _package); 
       mappingKey.SetValue("SortPriority", _sortPriority); 
      } 
     } 

     public override void Unregister(RegistrationAttribute.RegistrationContext context) 
     { 
     } 
    } 

Adım 3: Sonra editör fabrikasına bir özellik olarak bu sınıfı eklemeniz gerekir (adımında oluşturduğunuz 1) :

[ProvideFileExtensionMapping("{E23E32ED-3467-4401-A364-1352666A3502}", "RText Editor", typeof(EditorFactory), GuidList.guidRTextEditorPluginEditorFactoryString, 100)] 
public sealed class EditorFactory : IVsEditorFactory, IDisposable{...} 

Bu kadar. Artık editörünüzü görsel stüdyodaki editörler listesinde görebilmelisiniz. Dosya eşleştirmesi doğru olduğunda düzenleyiciniz çağırılacaktır.

Umarım bu yazı bir başkası için çok fazla zaman kazandırır ..

+0

sadece Oracle onların düzenleyici için bu uygulamaya onların ODT takımı almak istiyorsanız – Jay