Aracılığıyla paylaş


Nasıl yapılır: Visual C++ Kod Modeli Kullanarak Kodu İşleme (Visual C#)

Visual Studio 2013 içinde, eklentiler kullanım dışı bırakılmıştır.Eklentilerinizi VSPackage uzantılarına yükseltmenizi öneririz.Yükseltme hakkında daha fazla bilgi için bkz. SSS: Eklentileri VSPackage Uzantılarına Dönüştürme.

Visual Studio kod modeli, otomasyon istemcilerine bir projede kod tanımlarını bulma ve o kod öğelerinde değişiklik yapma olanağı sağlar.Visual C++, hedef kod modeline, Visual C++ için özel kodu hedeflemek için bir uzantı sağlar.

Örneğin Language özelliği belirli bir kod öğesinin bir Visual C++ kod modeli nesnesi ve Kind = vsCMElementClass olduğunu belirtiyorsa, bu durumda Visual Studio kod modelinden CodeClass2 ya da Visual C++ kod modelinden VCCodeClass seçebilirsiniz.

Aşağıdaki yordamlar, Visual C++ öğesine özgü kod modeli kullanarak kodların nasıl inceleneceğini ve oluşturulacağını göstermektedir.

Projedeki ilk dosyaya açıklama eklemek için

  1. Visual C# öğesi içinde bir Visual Studio eklenti projesi oluşturun.

  2. Proje menüsünde Başvuru Ekle'yi tıklayın, .NET sekmesine tıklayın, Microsoft.VisualStudio.VCCodeModel'i seçin ve sonra Tamam'ı tıklayın.

  3. Connect.cs dosyasının üstüne using Microsoft.VisualStudio.VCCodeModel; ekleyin.

  4. OnConnection yöntemindeki kodu aşağıdaki kod ile değiştirin:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        )addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        test((DTE2)_applicationObject); 
    }
    
    public void test( DTE2 dte ) 
    { 
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( VCCodeModel )( dte.Solution.Item( 1 ).CodeModel ) ); 
        vcCodeElement = ( ( VCCodeElement )
    ( vcCM.CodeElements.Item(1))); 
        AddCommentAtStart( vcCodeElement ); 
        AddCommentAtEnd( vcCodeElement ); 
    } 
    
    public void AddCommentAtStart(
      Microsoft.VisualStudio.VCCodeModel.VCCodeElement vcCodeElement )
    {
        TextPoint textPoint = null;
        textPoint = vcCodeElement.get_StartPointOf(
          vsCMPart.vsCMPartWhole, 0 );
        textPoint.CreateEditPoint().Insert("/*This is a Start Comment*/");
    }
    
    public void AddCommentAtEnd( 
      Microsoft.VisualStudio.VCCodeModel.VCCodeElement vcCodeElement )
    {
        TextPoint textPoint = null;
        textPoint = vcCodeElement.get_EndPointOf( vsCMPart.vsCMPartWhole, 0  
          );
        textPoint.CreateEditPoint().Insert( "/*End Comment*/" );
    }
    
  5. Eklentiyi derlemek için, Derle menüsünde Çözümü Derle'yi tıklayın.

  6. Visual Studio tümleşik yazılım geliştirme ortamında (IDE) Visual C++ projesi açın.

  7. Araçlar menüsünde Eklenti Yöneticisi'ni tıklayın ve sonra Eklenti Yöneticisi iletişim kutusundan eklentinizi seçin.Eklentinizi çalıştırmak için Tamam'ı tıklayın.

  8. Program aracılığıyla eklenen açıklamalar için projedeki ilk dosyayı inceleyin.

Bir Visual C++ projesine yeni bir dosya eklemek için

  1. Visual C# öğesi içinde bir Visual Studio eklenti projesi oluşturun.

  2. Proje menüsünde Başvuru Ekle'yi tıklayın, .NET sekmesine tıklayın, Microsoft.VisualStudio.VCCodeModel'i seçin ve sonra Tamam'ı tıklayın.

  3. Connect.cs dosyasının üstüne using Microsoft.VisualStudio.VCCodeModel; ekleyin.

  4. OnConnection yöntemindeki kodu aşağıdaki kod ile değiştirin:

    //Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        GetVCCodeElement((DTE2)_applicationObject); 
    }
    
    //  Shows how to get a VCCodeElement.
    public void GetVCCodeElement( DTE2 dte ) 
    {
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
        vcCodeElement = ( (
          Microsoft.VisualStudio.VCCodeModel.VCCodeElement )( 
          vcCM.AddClass( "MyClass2", "MyClass2.h",0,null, null,
          EnvDTE.vsCMAccess.vsCMAccessDefault ) ) ); 
    }
    
  5. Eklentiyi derlemek için, Derle menüsünde Çözümü Derle'yi tıklayın.

  6. Visual Studio IDE öğesinde bir Visual C++ projesi açın.

  7. Araçlar menüsünde Eklenti Yöneticisi'ni tıklayın ve Eklenti Yöneticisi iletişim kutusundan eklentinizi seçin.Eklentinizi çalıştırmak için Tamam'ı tıklayın.

    [!NOT]

    MyClass2.h zaten varsa, kod başarısız olur.

File.h'e bir işlev eklemek için

  1. Visual C# öğesi içinde bir Visual Studio eklenti projesi oluşturun.

  2. Proje menüsünde, Başvuru Ekle'ye tıklayın, .NET sekmesine tıklayın, Microsoft.VisualStudio.VCCodeModel ve System.Windows.Forms öğelerini seçin ve sonra Tamama tıklayın.

  3. Connects.ts dosyasının en üstüneaşağıdaki kullanım açıklamalarını ekleyin:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. OnConnection yöntemindeki kodu aşağıdaki kod ile değiştirin:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    using System.Windows.Forms;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        DisplayName((DTE2)_applicationObject); 
    }
    
    // DisplayName
    // Shows the DisplayName of a function which includes the parameter 
    // names.
    public void DisplayName( DTE2 dte ) 
    { 
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
          vcCodeElement = ( (     
            Microsoft.VisualStudio.VCCodeModel.VCCodeElement )
            ( vcCM.AddFunction( "MyFunction", "File.h",  
            vsCMFunction.vsCMFunctionFunction, "void",
            null, EnvDTE.vsCMAccess.vsCMAccessDefault ) ) ); 
        MessageBox.Show( vcCodeElement.DisplayName); 
    }
    
  5. Eklentiyi derlemek için, Derle menüsünde Çözümü Derle'yi tıklayın.

  6. Visual Studio IDE'de bir Visual C++ projesi açın ve bir file.h ekleyin.

  7. Araçlar menüsünde Eklenti Yöneticisi'ni tıklayın ve sonra Eklenti Yöneticisi iletişim kutusundan eklentinizi seçin.Eklentinizi çalıştırmak için Tamam'ı tıklayın.

  8. File.h içinde eklenen kodu inceleyin.

Üst düzey kod öğeleri içeren dosyaları görüntülemek için

  1. Visual C# öğesi içinde bir Visual Studio eklenti projesi oluşturun.

  2. Proje menüsünde, Başvuru Ekle'ye tıklayın, .NET sekmesine tıklayın, Microsoft.VisualStudio.VCCodeModel ve System.Windows.Forms öğelerini seçin ve sonra Tamama tıklayın.

  3. Connects.ts dosyasının en üstüneaşağıdaki kullanım açıklamalarını ekleyin:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. OnConnection yöntemindeki kodu aşağıdaki kod ile değiştirin:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    using System.Windows.Forms;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        DisplayLocation((DTE2)_applicationObject); 
    }
    
    public void DisplayLocation( DTE2 dte ) 
    {
        VCCodeModel vcCM = null; 
        VCCodeElement vcCodeElement = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
        foreach ( Microsoft.VisualStudio.VCCodeModel.VCCodeElement temp
          in vcCM.CodeElements ) 
        {
            vcCodeElement = temp;
            MessageBox.Show( vcCodeElement.Name + " is declared in " 
              + vcCodeElement.get_Location(vsCMWhere.vsCMWhereDefault)); 
        }
    }
    
  5. Eklentiyi derlemek için, Derle menüsünde Çözümü Derle'yi tıklayın.

  6. Visual Studio IDE öğesinde bir Visual C++ projesi açın.

  7. Araçlar menüsünde Eklenti Yöneticisi'ni tıklayın ve sonra Eklenti Yöneticisi iletişim kutusundan eklentinizi seçin.Eklentinizi çalıştırmak için Tamam'ı tıklayın.

  8. İleti kutuları, üst düzey kod öğeleri içeren dosya adlarını görüntüler.

Tüm üst düzey kod öğesi öğelerini görüntülemek için

  1. Visual C# öğesi içinde bir Visual Studio eklenti projesi oluşturun.

  2. Proje menüsünde, Başvuru Ekle'ye tıklayın, .NET sekmesine tıklayın, Microsoft.VisualStudio.VCCodeModel ve System.Windows.Forms öğelerini seçin ve sonra Tamama tıklayın.

  3. Connects.ts dosyasının en üstüneaşağıdaki kullanım açıklamalarını ekleyin:

    using System.Windows.Forms;
    using Microsoft.VisualStudio.VCCodeModel;
    
  4. OnConnection yöntemindeki kodu aşağıdaki kod ile değiştirin:

    // Add-in code.
    using Microsoft.VisualStudio.VCCodeModel;
    using System.Windows.Forms;
    public void OnConnection(object application,
     Extensibility.ext_ConnectMode connectMode, object addInInst,
     ref System.Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Pass the applicationObject member variable to the code example.
        FindItem((DTE2)_applicationObject); 
    }
    
    public void FindItem( DTE2 dte ) 
    {
        VCCodeModel vcCM = null; 
        VCCodeElements vcCodeElements = null; 
        vcCM = ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeModel )(
          dte.Solution.Item( 1 ).CodeModel ) ); 
        vcCodeElements =
          ( ( Microsoft.VisualStudio.VCCodeModel.VCCodeElements )
          ( vcCM.CodeElements ) ); 
        int i = 0; 
        for ( i=1; i<=vcCodeElements.Count; i++ ) 
        {
            MessageBox.Show( vcCodeElements.Item( i ).Name); 
        }
    }
    
  5. Eklentiyi derlemek için, Derle menüsünde Çözümü Derle'yi tıklayın.

  6. Visual Studio IDE öğesinde bir Visual C++ projesi açın.

  7. Araçlar menüsünde Eklenti Yöneticisi'ni tıklayın ve sonra Eklenti Yöneticisi iletişim kutusundan eklentinizi seçin.Eklentinizi çalıştırmak için Tamam'ı tıklayın.

    İleti kutuları üst düzey kod öğe adlarını görüntüler.

Ayrıca bkz.

Görevler

Nasıl yapılır: Visual C++ Kod Modeli Kullanarak Kodu İşleme (Visual Basic)

Kavramlar

Visual C++ Kod Modeli

Kod Modeli Kullanarak Kodu Keşfetme (Visual Basic)

Kod Modeli Kullanarak Kodu Keşfetme (Visual C#)