Aracılığıyla paylaş


Komutlar ve hareket katmanı Diyagram ekleme

Bağlam menüsü komutlarını tanımlar ve hareket katmanı diyagramlarında accessPolicy Visual Studio Ultimate.Bu uzantılar içine bir Visual Studio Integration uzantısı (diğer dağıtan VSIX) paketini Visual Studio kullanıcılar.

Aynı şekilde birkaç komut ve hareket işleyicileri tanımlayabilirsiniz Visual Studio isterseniz proje.Ayrıca, bir VSIX birkaç proje birleştirebilirsiniz.Örneğin, katman komutları, etki alanına özgü dil ve uml diyagramları için komutlar içeren tek bir VSIX tanımlayın.

[!NOT]

Hangi kullanıcıların kaynak kodu katman diyagramları ile karşılaştırıldığında, mimari doğrulama de özelleştirebilirsiniz.İçinde ayrı bir mimari doğrulama tanımlamanız gereken Visual Studio proje.Aynı VSIX gibi diğer uzantılar için ekleyebilirsiniz.Daha fazla bilgi için bkz. Özel mimari doğrulama katmanı Diyagram ekleme.

Katman uzantılarını geliştirme gereksinimleri

Aşağıdaki kendi katman uzantıları geliştirmek istediğiniz bilgisayarda yüklü olmalıdır:

  • Visual Studio Ultimate

  • Visual Studio SDK

  • Görselleştirme ve sdk modelleme

Bir komut veya hareketi içinde yeni bir VSIX tanımlama

Uzantı oluşturmanın en hızlı yöntem, proje şablonu kullanmaktır.Bu kodu VSIX bildirim aynı projeye yerleştirir.

Proje şablonu kullanarak bir uzantı tanımlamak için

  1. Projeye yeni bir çözüm oluşturmak Yeni bir proje komutunu Dosya menü.

  2. İçinde Yeni proje altında iletişim kutusunda Model projeler, şunlardan birini seçin: Katmanı Tasarımcısı komutu uzantı veya Katmanı Tasarımcısı hareketi uzantısı.

    Şablon çalışan küçük bir örnek içeren bir proje oluşturur.

  3. Uzantı sınamak için basın ctrl + F5 veya F5.

    Visual Studio deneysel örneği başlar.Bu örnekte, katman diyagramını oluşturun.Bu diyagramda komut veya hareketi uzantısı çalışmalıdır.

  4. Deneysel örneğini kapatın ve örnek kodu değiştirebilirsiniz.Daha fazla bilgi için bkz. Gezinme ve Program kodu katman modeller güncelleştiriliyor.

  5. Daha fazla komut veya hareket işleyicileri aynı projeye ekleyebilirsiniz.Daha fazla bilgi için aşağıdaki bölümlerden birine bakın:

    Bir menü komutu tanımlama

    Hareketi işleyicisi tanımlama

  6. Ana örneğinde uzantısı yüklemek için Visual Studio, ya da başka bir bilgisayarda, .vsix , dosya bin\*.Yüklemek istediğiniz bilgisayara kopyalayın ve sonra çift tıklatın.Kaldırmak için Extension Manager , araçları menü.

Bir komut veya hareketi için ayrı bir VSIX ekleme

Komutlar, katman doğrulayıcıları ve diğer uzantıları içeren bir VSIX oluşturmak istiyorsanız, VSIX tanımlamak için bir proje ve işleyicileri için farklı projeler oluşturmanız önerilir.Diğer modelleme uzantı türleri hakkında daha fazla bilgi için bkz: UML Modellerini ve Diyagramları Genişletme.

Katman uzantıları için ayrı bir VSIX eklemek için

  1. Sınıf kitaplığı oluşturup varolan veya yeni bir proje Visual Studio Ultimate çözüm.İçinde Yeni bir proje iletişim kutusunu tıklatın Visual C#Class Library.Bu proje, komutu içeren veya işleyici sınıfları hareketini.

    [!NOT]

    Birden fazla komut veya hareketi işleyicisi sınıfı bir sınıf Kitaplığı'nda tanımlayabilirsiniz, ancak katman doğrulama sınıfları ayrı Sınıf Kitaplığı'nda tanımlamanız gerekir.

  2. Çözüm içinde VSIX proje oluşturmak veya tanımlayın.VSIX proje adlı bir dosya içerir source.extension.vsixmanifest.VSIX proje eklemek için:

    1. İçinde Yeni bir proje iletişim kutusunda, genişletme Visual C#, i genişletilebilirlik[NULL]'ı VSIX proje.

    2. Solution Explorer'da VSIX proje sağ tıklatıp ardından baþlangýç projesi olarak.

    3. Tıklatın Sürümleri seçin ve dikkat Visual Studio Ultimate denetlenir.

  3. De source.extension.vsixmanifest, altında varlıklarınıkomut ekleme veya hareketini işleyicisi proje mef bileşen olarak.

    1. İçinde varlıklarını.tab, seçim Yeni.

    2. En türü, select Microsoft.VisualStudio.MefComponent.

    3. En kaynakseçin geçerli çözümü projede ve komut veya hareketi işleyicisi proje adını seçin.

    4. Dosyayı kaydedin.

  4. Komut veya hareketi işleyicisi Projeye dönün ve aşağıdaki proje başvuru ekleyin.

Reference

Ne yapmanıza izin verir

Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\ExtensibilityRuntime\Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.dll

Oluşturma ve katmanları düzenleme

Microsoft.VisualStudio.Uml.Interfaces

Oluşturma ve katmanları düzenleme

Microsoft.VisualStudio.ArchitectureTools.Extensibility

Diyagram üzerinde şekilleri değiştirme

System.ComponentModel.Composition

Yönetilen genişletilebilirlik Framework (mef) kullanarak bileşenlerini tanımlar

Microsoft.VisualStudio.Modeling.SDK.11.0

Model uzantılarını tanımlayın

Microsoft.VisualStudio.Modeling.SDK.Diagrams.11.0

Güncelleştirme şekilleri ve diyagramları

  1. Dahili numaranız kodunu içerecek şekilde C# class library projesi, sınıf dosyasını düzenleyin.Daha fazla bilgi için aşağıdaki bölümlerden birine bakın:

    Bir menü komutu tanımlama

    Hareketi işleyicisi tanımlama

    Ayrıca bkz. Gezinme ve Program kodu katman modeller güncelleştiriliyor.

  2. Özellik sınamak için ctrl + F5 veya F5 tuşuna basın.Deneysel bir örneğini Visual Studio açar.Bu örneği oluşturmak veya bir katman diyagramı açın.

  3. VSIX ana kopyası yüklemek için Visual Studio, ya da başka bir bilgisayarda, .vsix , dosya bin VSIX projenin dizin.VSIX yüklemek istediğiniz bilgisayara kopyalayın.(Dosya Explorer Windows 8) Windows Gezgini'nde VSIX dosyasını çift tıklatın.

    Kaldırmak için Extension Manager , araçları menü.

Bir menü komutu tanımlama

Varolan bir hareketi veya komut proje daha fazla menü komutu tanımları ekleyebilirsiniz.Her komut, aşağıdaki özelliklere sahip bir sınıf tarafından tanımlanır:

  • Sınıfı şu şekilde bildirilir:

    [LayerDesignerExtension]

    [Export(typeof(ICommandExtension))]

    public class MyLayerCommand : ICommandExtension { ... }

  • Ad alanına ve ada sınıfının Önemsiz.

  • Uygulama yöntemleri ICommandExtension şunlardır:

    • string Text {get;}-Görünen menüde etiketi.

    • void QueryStatus(IMenuCommand command)-Kullanıcı Diyagram karşılaşır ve komutu görünür ve kullanıcının geçerli seçimi etkin olup olmayacağını belirler denir.

    • void Execute(IMenuCommand command)-Kullanıcı komutunu seçtiğinde denir.

  • Geçerli seçimi belirlemek için alabileceğiniz IDiagramContext:

    [Import]

    public IDiagramContext DiagramContext { get; set; }

    ...

    DiagramContext.CurrentDiagram.SelectedShapes.Count()...

Daha fazla bilgi için bkz. Gezinme ve Program kodu katman modeller güncelleştiriliyor.

Yeni bir komut eklemek için aşağıdaki örnek içeren yeni bir kod dosyası oluşturun.Sonra test etmek ve düzenlemek.

using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
using Microsoft.VisualStudio.Modeling.Diagrams.ExtensionEnablement;
using Microsoft.VisualStudio.Modeling.ExtensionEnablement;
using System.ComponentModel.Composition;
using System.Linq;

namespace MyLayerExtension // Change to your preference.
{
  // This is a feature for Layer diagrams:
  [LayerDesignerExtension]
  // This feature is a menu command:
  [Export(typeof(ICommandExtension))]
  // Change the class name to your preference:
  public class MyLayerCommand : ICommandExtension
  {
    [Import]
    public IDiagramContext DiagramContext { get; set; }

    [Import]
    public ILinkedUndoContext LinkedUndoContext { get; set; }

    // Menu command label:
    public string Text
    {
      get { return "Duplicate layers"; }
    }

    // Called when the user right-clicks the diagram.
    // Defines whether the command is visible and enabled.
    public void QueryStatus(IMenuCommand command)
    { 
      command.Visible = 
      command.Enabled = DiagramContext.CurrentDiagram
        .SelectedShapes.Count() > 0;
    }

    // Called when the user selects the command.
    public void Execute(IMenuCommand command)
    {
      // A selection of starting points:
      IDiagram diagram = this.DiagramContext.CurrentDiagram;
      ILayerModel lmodel = diagram.GetLayerModel();
      foreach (ILayer layer in lmodel.Layers)
      { // All layers in model.
      }
      // Updates should be performed in a transaction:
      using (ILinkedUndoTransaction t =
        LinkedUndoContext.BeginTransaction("copy selection"))
      {
        foreach (ILayer layer in 
          diagram.SelectedShapes
            .Select(shape=>shape.GetLayerElement())
            .Where(element => element is ILayer))
        {
          ILayer copy = lmodel.CreateLayer(layer.Name + "+");
          // Position the shapes:
          IShape originalShape = layer.GetShape();
          copy.GetShape().Move(
            originalShape.XPosition + originalShape.Width * 1.2,
            originalShape.YPosition);
        }
        t.Commit();
      }
    }
  }
}

Hareketi işleyicisi tanımlama

Kullanıcı katmanı Diyagram öğe sürüklendiğinde ve kullanıcı diyagramında herhangi bir yeri tıklattığında hareketi işleyicisi yanıtlar.

Varolan bir komutu veya hareketi işleyicisi VSIX proje için hareketi işleyici tanımlar bir kod dosyası ekleyebilirsiniz:

using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
using Microsoft.VisualStudio.Modeling.Diagrams.ExtensionEnablement;
using Microsoft.VisualStudio.Modeling.ExtensionEnablement;
using System.ComponentModel.Composition;
using System.Linq;
namespace MyLayerExtensions // change to your preference
{
  [LayerDesignerExtension]
  [Export(typeof(IGestureExtension))]
  public class MyLayerGestureHandler : IGestureExtension
  {
  }
}

Hareket işleyicileri hakkında aşağıdaki noktalara dikkat edin:

  • Üyeleri IGestureExtension şunlardır:

    OnDoubleClick -kullanıcı diyagramında herhangi bir yeri tıklattığında denir.

    CanDragDrop - art arda Diyagram bir öğeyi sürüklerken kullanıcı fare hareket ettikçe denir.Hızlı bir şekilde çalışmalıdır.

    OnDragDrop -kullanıcı öğeyi Diyagram üzerine düştüğünde denir.

  • İlk bağımsız değişken her yöntem için bir IShape, katman öğe alın, dan.Örne?in:

            public void OnDragDrop(IShape target, IDataObject data)
            {
                ILayerElement element = target.GetLayerElement();
                if (element is ILayer)
                {
                    // ...
                }
            }
    
  • İşleyicileri bazı sürüklenen öğe türleri için önceden tanımlanmıştır.Örneğin, kullanıcı öğeleri Solution Explorer'dan katman Diyagram sürükleyebilirsiniz.Bu öğe türleri için sürükle işleyicisi tanımlayamazsınız.Bu durumda, DragDrop yöntemleri değil çağrılabilir.

Diyagram sürüklendiğinde diğer öğeler kod çözme hakkında daha fazla bilgi için bkz: Nasıl yapılır: bir modelleme çizim hareketi işleyicisi tanımlamak.

Ayrıca bkz.

Kavramlar

Gezinme ve Program kodu katman modeller güncelleştiriliyor

Özel mimari doğrulama katmanı Diyagram ekleme

Nasıl yapılır: Bir Modelleme Uzantısı Tanımlama ve Yükleme