Aracılığıyla paylaş


Görüntü hizmeti ve katalog

Bu yemek kitabı, Visual Studio 2015'te kullanıma sunulan Visual Studio Görüntü Hizmeti ve Görüntü Kataloğu'nu benimsemeye yönelik rehberlik ve en iyi yöntemleri içerir.

Visual Studio 2015'te kullanıma sunulan görüntü hizmeti, geliştiricilerin cihaz için en iyi görüntüleri ve görüntü görüntülemek için kullanıcının seçtiği temayı almasına olanak tanır ve görüntü görüntülendikleri bağlam için doğru tema oluşturma da buna dahildir. Görüntü hizmetini benimsemek varlık bakımı, HDPI ölçeklendirme ve temalı işlemle ilgili önemli sorun noktalarını ortadan kaldırmaya yardımcı olur.

Günümüzdeki sorunlar Çözümler
Arka plan rengi karıştırma Yerleşik alfa harmanlama
Temalı (bazı) görüntüler Tema meta verileri
Yüksek Karşıtlık modu Alternatif Yüksek Karşıtlık kaynakları
Farklı DPI modları için birden çok kaynağa ihtiyacınız var Vektör tabanlı geri dönüş ile seçilebilir kaynaklar
Yinelenen görüntüler Görüntü kavramı başına bir tanımlayıcı

Görüntü hizmetini neden benimseyin?

  • Visual Studio'dan her zaman en son "piksel mükemmeli" görüntüyü edinin

  • Kendi görüntülerinizi gönderebilir ve kullanabilirsiniz

  • Windows yeni DPI ölçeklendirmesi eklediğinde görüntülerinizi test etmeniz gerekmez

  • Uygulamalarınızdaki eski mimari engelleri ele alın

    Görüntü hizmetini kullanmadan önce ve sonra Visual Studio kabuğu araç çubuğu:

    Görüntü Hizmeti Öncesi ve Sonrası

Nasıl çalışır?

Görüntü hizmeti desteklenen tüm UI çerçeveleri için uygun bit eşlemli bir görüntü sağlayabilir:

  • WPF: BitmapSource

  • WinForms: System.Drawing.Bitmap

  • Win32: HBITMAP

    Görüntü hizmeti akış diyagramı

    Görüntü Hizmeti Akış Diyagramı

    Görüntü takma adlar

    Görüntü takma adı (veya kısaca takma ad), görüntü kitaplığındaki bir görüntü varlığını veya görüntü listesi varlığını benzersiz olarak tanımlayan bir GUID/KIMLIK çiftidir.

    Bilinen adlar

    Visual Studio Görüntü Kataloğu'nda yer alan ve herhangi bir Visual Studio bileşeni veya uzantısı tarafından genel olarak kullanılabilen görüntü adlarından oluşan küme.

    Görüntü bildirim dosyaları

    Görüntü bildirimi (.imagemanifest) dosyaları, bir görüntü varlıkları kümesini tanımlayan XML dosyaları, bu varlıkları temsil eden takma adlar ve her varlığı temsil eden gerçek görüntü veya görüntülerdir. Görüntü bildirimleri, eski kullanıcı arabirimi desteği için tek başına görüntüler veya görüntü listeleri tanımlayabilir. Ayrıca, varlıkların ne zaman ve nasıl görüntüleneceğini değiştirmek için varlıkta veya her varlığın arkasındaki tek tek görüntülerde ayarlanabilen öznitelikler vardır.

    Görüntü bildirimi şeması

    Tam bir görüntü bildirimi şöyle görünür:

<ImageManifest>
      <!-- zero or one Symbols elements -->
      <Symbols>
        <!-- zero or more Import, Guid, ID, or String elements -->
      </Symbols>
      <!-- zero or one Images elements -->
      <Images>
        <!-- zero or more Image elements -->
      </Images>
      <!-- zero or one ImageLists elements -->
      <ImageLists>
        <!-- zero or more ImageList elements -->
      </ImageLists>
</ImageManifest>

Simgeler

Okunabilirlik ve bakım yardımı olarak, görüntü bildirimi öznitelik değerleri için sembolleri kullanabilir. Simgeler şu şekilde tanımlanır:

<Symbols>
      <Import Manifest="manifest" />
      <Guid Name="ShellCommandGuid" Value="8ee4f65d-bab4-4cde-b8e7-ac412abbda8a" />
      <ID Name="cmdidSaveAll" Value="1000" />
      <String Name="AssemblyName" Value="Microsoft.VisualStudio.Shell.UI.Internal" />
</Symbols>
Alt öğesi Tanım
İçeri Aktar Verilen bildirim dosyasının simgelerini geçerli bildirimde kullanılmak üzere içeri aktarır
GUID Simge bir GUID'yi temsil eder ve GUID biçimlendirmesi ile eşleşmelidir
Kimlik Simge bir kimliği temsil eder ve olumsuz olmayan bir tamsayı olmalıdır
String Simgesi rastgele bir dize değerini temsil eder

Simgeler büyük/küçük harfe duyarlıdır ve $(sembol-adı) söz dizimi kullanılarak başvurulur:

<Image Guid="$(ShellCommandGuid)" ID="$(cmdidSaveAll)" >
      <Source Uri="/$(AssemblyName);Component/Resources/image.xaml" />
</Image>

Bazı simgeler tüm bildirimler için önceden tanımlanmıştır. Bunlar, yerel makinedeki yollara başvurmak için Source> veya <Import> öğesinin Uri özniteliğinde <kullanılabilir.

Sembolü Açıklama
CommonProgramFiles %CommonProgramFiles% ortam değişkeninin değeri
Localappdata %LocalAppData% ortam değişkeninin değeri
ManifestFolder Bildirim dosyasını içeren klasör
Mydocuments Geçerli kullanıcının Belgelerim klasörünün tam yolu
ProgramFiles %ProgramFiles% ortam değişkeninin değeri
Sistem Windows\System32 klasörü
WinDir %WinDir% ortam değişkeninin değeri

Görsel

<Image> öğesi, bir takma ad tarafından başvurulabilen bir görüntü tanımlar. Birlikte alınan GUID ve kimlik, görüntü adını oluşturur. Görüntünün adı, tüm görüntü kitaplığında benzersiz olmalıdır. Birden fazla görüntüde belirli bir takma ad varsa, kitaplığı oluştururken karşılaşılan ilk görüntü korunan görüntüdür.

En az bir kaynak içermelidir. Boyut açısından bağımsız kaynaklar, çok çeşitli boyutlarda en iyi sonuçları verir, ancak bunlar gerekli değildir. Hizmet, Image> öğesinde tanımlanmayan bir boyutun <görüntüsü istenirse ve boyuta bağımsız kaynak yoksa, hizmet boyuta özgü en iyi kaynağı seçer ve istenen boyuta ölçeklendirir.

<Image Guid="guid" ID="int" AllowColorInversion="true/false">
      <Source ... />
      <!-- optional additional Source elements -->
</Image>
Öznitelik Tanım
GUID [Gerekli] Görüntü takma adını guid bölümü
Kimlik [Gerekli] Görüntü takma adını id bölümü
AllowColorInversion [İsteğe bağlı, varsayılan true] Görüntünün koyu arka planda kullanıldığında renklerinin program aracılığıyla ters çevrilip çevrilemeyeceğini gösterir.

Kaynak

<Source> öğesi tek bir görüntü kaynak varlığını (XAML ve PNG) tanımlar.

<Source Uri="uri" Background="background">
      <!-- optional NativeResource element -->
 </Source>
Öznitelik Tanım
Uri [Gerekli] Görüntünün nereden yüklenebileceğini tanımlayan bir URI. Şunlardan biri olabilir:

- application:/// yetkilisini kullanan bir Paket URI'si
- Mutlak bileşen kaynak başvurusu
- Yerel kaynak içeren bir dosyanın yolu
Background [İsteğe bağlı] Kaynağın ne tür bir arka plan üzerinde kullanılmasını hedeflediğini gösterir.

Şunlardan biri olabilir:

Işık: Kaynak, açık arka planda kullanılabilir.

Koyu: Kaynak koyu arka planda kullanılabilir.

HighContrast: Kaynak, Yüksek Karşıtlık modunda herhangi bir arka planda kullanılabilir.

HighContrastLight: Kaynak, Yüksek Karşıtlık modunda açık arka planda kullanılabilir.

HighContrastDark: Kaynak, Yüksek Karşıtlık modunda koyu arka planda kullanılabilir.

Background özniteliği atlanırsa, kaynak herhangi bir arka planda kullanılabilir.

Arka Plan Açık, Koyu, HighContrastLight veya HighContrastDark ise, kaynağın renkleri hiçbir zaman ters çevrilemez. Arka Plan atlanırsa veya HighContrast olarak ayarlanırsa, kaynağın renklerinin ters çevrilmesi görüntünün AllowColorInversion özniteliği tarafından denetlenır.

Source <> öğesi, aşağıdaki isteğe bağlı alt öğelerden tam olarak birine sahip olabilir:

Öğe Öznitelikler (tümü gereklidir) Tanım
<Büyüklük> Değer Kaynak, belirtilen boyuttaki görüntüler için (cihaz birimlerinde) kullanılacaktır. Görüntü kare olacak.
<SizeRange> MinSize, MaxSize Kaynak, MinSize'den MaxSize'a (cihaz birimlerinde) dahil olmak üzere görüntüler için kullanılır. Görüntü kare olacak.
<Boyutlar> Genişlik, Yükseklik Kaynak, verilen genişlik ve yükseklik görüntüleri için kullanılır (cihaz birimlerinde).
<DimensionRange> MinWidth, MinHeight,

MaxWidth, MaxHeight
Kaynak, en düşük genişlik/yükseklik ile en yüksek genişlik/yükseklik (cihaz birimlerinde) dahil olmak üzere görüntüler için kullanılır.

Source <> öğesi, yönetilen bir derleme yerine yerel bir derlemeden yüklenen bir <Kaynağı> tanımlayan isteğe bağlı <bir NativeResource> alt öğesine de sahip olabilir.

<NativeResource Type="type" ID="int" />
Öznitelik Tanım
Tür [Gerekli] Yerel kaynağın türü (XAML veya PNG)
Kimlik [Gerekli] Yerel kaynağın tamsayı kimliği bölümü

Imagelist

<ImageList> öğesi, tek bir şeritte döndürülebilen bir görüntü koleksiyonunu tanımlar. Şerit, gerektiğinde isteğe bağlı olarak inşa edilmiştir.

<ImageList>
      <ContainedImage Guid="guid" ID="int" External="true/false" />
      <!-- optional additional ContainedImage elements -->
 </ImageList>
Öznitelik Tanım
GUID [Gerekli] Görüntü takma adını guid bölümü
Kimlik [Gerekli] Görüntü takma adını id bölümü
Harici [İsteğe bağlı, varsayılan false] Görüntü takma adını geçerli bildirimdeki bir görüntüye başvurup başvurmadığını gösterir.

kapsanan görüntünün adı geçerli bildirimde tanımlanan bir görüntüye başvurmak zorunda değildir. İçeren görüntü görüntü kitaplığında bulunamazsa, yerine boş bir yer tutucu görüntü kullanılır.

Görüntü hizmetini kullanma

İlk adımlar (yönetilen)

Görüntü hizmetini kullanmak için projenize aşağıdaki derlemelerin bazılarına veya tümüne başvuru eklemeniz gerekir:

  • Microsoft.VisualStudio.ImageCatalog.dll

    • BilinenLer yerleşik görüntü kataloğunu kullanıyorsanız gereklidir.
  • Microsoft.VisualStudio.Imaging.dll

    • WPF kullanıcı arabiriminizde CrispImage ve ImageThemingUtilities kullanıyorsanız gereklidir.
  • Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime.dll

    • ImageMoniker ve ImageAttributes türlerini kullanıyorsanız gereklidir.

    • EmbedInteropTypes true olarak ayarlanmalıdır.

  • Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime

    • IVsImageService2 türünü kullanıyorsanız gereklidir.

    • EmbedInteropTypes true olarak ayarlanmalıdır.

  • Microsoft.VisualStudio.Utilities.dll

    • WPF kullanıcı arabiriminizde ImageThemingUtilities.ImageBackgroundColor için BrushToColorConverter kullanıyorsanız gereklidir.
  • Microsoft.VisualStudio.Shell.<VSVersion.0>

    • IVsUIObject türünü kullanıyorsanız gereklidir.
  • Microsoft.VisualStudio.Shell.Interop.10.0.dll

    • WinForms ile ilgili kullanıcı arabirimi yardımcılarını kullanıyorsanız gereklidir.

    • EmbedInteropTypes true olarak ayarlanmalıdır

İlk adımlar (yerel)

Görüntü hizmetini kullanmak için projenize aşağıdaki üst bilgilerin bazılarını veya tümünü eklemeniz gerekir:

  • KnownImageIds.h

    • Yerleşik görüntü kataloğu BilinenUygulamalar'ı kullanıyorsanız, ancak IVsHierarchy GetGuidProperty veya GetProperty çağrılarından değer döndürürken olduğu gibi ImageMoniker türünü kullanamıyorsanız gereklidir.
  • KnownMonikers.h

    • BilinenLer yerleşik görüntü kataloğunu kullanıyorsanız gereklidir.
  • ImageParameters140.h

    • ImageMoniker ve ImageAttributes türlerini kullanıyorsanız gereklidir.
  • VSShell140.h

    • IVsImageService2 türünü kullanıyorsanız gereklidir.
  • ImageThemingUtilities.h

    • Görüntü hizmetinin sizin için bunları işlemesine izin veremiyorsanız gereklidir.

    • Görüntü hizmeti görüntü temalı işleminizi gerçekleştirebiliyorsa bu üst bilgiyi kullanmayın.

  • VsDpiAwareness.h

    • Geçerli DPI'yi almak için DPI tanıma yardımcılarını kullanıyorsanız gereklidir.

Nasıl yaparım? yeni WPF kullanıcı arabirimi yazsın mı?

  1. Yukarıdaki ilk adımlar bölümünde gerekli derleme başvurularını projenize ekleyerek başlayın. Bunların tümünü eklemeniz gerekmez, bu nedenle yalnızca ihtiyacınız olan başvuruları ekleyin. (Not: kullanıyorsanız veya erişiminiz varsaFırçalar yerine renkler, ardından dönüştürücüye ihtiyacınız olmayacağından Yardımcı Programlar'a başvuruyu atlayabilirsiniz.)

  2. İstediğiniz görüntüyü seçin ve adını alın. KnownMoniker kullanın veya kendi özel görüntüleriniz ve takma adlarınız varsa kendi adlarınızı kullanın.

  3. XAML'nize CrispImages ekleyin. (Aşağıdaki örniğe bakın.)

  4. Kullanıcı arabirimi hiyerarşinizde ImageThemingUtilities.ImageBackgroundColor özelliğini ayarlayın. (Bu, arka plan renginin bilindiği konumda ayarlanmalıdır, CrispImage.) (Aşağıdaki örne bakın.)

<Window
  x:Class="WpfApplication.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:imaging="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.Imaging"
  xmlns:theming="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Imaging"
  xmlns:utilities="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Utilities"
  xmlns:catalog="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.ImageCatalog"
  Title="MainWindow" Height="350" Width="525" UseLayoutRounding="True">
  <Window.Resources>
    <utilities:BrushToColorConverter x:Key="BrushToColorConverter"/>
  </Window.Resources>
  <StackPanel Background="White" VerticalAlignment="Center"
    theming:ImageThemingUtilities.ImageBackgroundColor="{Binding Background, RelativeSource={RelativeSource Self}, Converter={StaticResource BrushToColorConverter}}">
    <imaging:CrispImage Width="16" Height="16" Moniker="{x:Static catalog:KnownMonikers.MoveUp}" />
  </StackPanel>
</Window>

Mevcut WPF kullanıcı arabirimi güncelleştirildi Nasıl yaparım??

Mevcut WPF kullanıcı arabiriminin güncelleştirilmesi, üç temel adımdan oluşan nispeten basit bir işlemdir:

  1. Kullanıcı arabiriminizdeki tüm <Görüntü> öğelerini CrispImage> öğeleriyle <değiştirin.

  2. Tüm Source özniteliklerini Takma ad öznitelikleriyle değiştirin.

    • Görüntü hiçbir zaman değişmezse ve KnownMonikers kullanıyorsanız, bu özelliği statik olarak KnownMoniker'e bağlayın. (Yukarıdaki örne bakın.)

    • Görüntü hiçbir zaman değişmiyorsa ve kendi özel görüntünüzü kullanıyorsanız, statik olarak kendi takma adınıza bağlayın.

    • Görüntü değişebilirse, Moniker özniteliğini özellik değişikliklerini bildiren bir kod özelliğine bağlayın.

  3. Kullanıcı arabirimi hiyerarşisinde bir yerde, renk ters çevirmenin düzgün çalıştığından emin olmak için ImageThemingUtilities.ImageBackgroundColor ayarını yapın.

    • Bu, BrushToColorConverter sınıfının kullanılmasını gerektirebilir. (Yukarıdaki örne bakın.)

Win32 kullanıcı arabirimi Nasıl yaparım? güncelleştirildi?

Görüntülerin ham yüklemesini değiştirmek için uygun olan yerlerde kodunuza aşağıdakileri ekleyin. Gerektiğinde HBITMAP'ler ile HICON'lar ve HIMAGELIST döndürme değerlerini değiştirin.

Görüntü hizmetini alma

CComPtr<IVsImageService2> spImgSvc;
CGlobalServiceProvider::HrQueryService(SID_SVsImageService, &spImgSvc);

Görüntü isteniyor

UINT dpiX, dpiY;
HWND hwnd = // get the HWND where the image will be displayed
VsUI::CDpiAwareness::GetDpiForWindow(hwnd, &dpiX, &dpiY);

ImageAttributes attr = { 0 };
attr.StructSize      = sizeof(attributes);
attr.Format          = DF_Win32;
// IT_Bitmap for HBITMAP, IT_Icon for HICON, IT_ImageList for HIMAGELIST
attr.ImageType       = IT_Bitmap;
attr.LogicalWidth    = 16;
attr.LogicalHeight   = 16;
attr.Dpi             = dpiX;
// Desired RGBA color, if you don't use this, don't set IAF_Background below
attr.Background      = 0xFFFFFFFF;
attr.Flags           = IAF_RequiredFlags | IAF_Background;

CComPtr<IVsUIObject> spImg;
// Replace this KnownMoniker with your desired ImageMoniker
spImgSvc->GetImage(KnownMonikers::Blank, attributes, &spImg);

WinForms kullanıcı arabirimi Nasıl yaparım? güncelleştirildi?

Görüntülerin ham yüklemesini değiştirmek için uygun olan yerlerde kodunuza aşağıdakileri ekleyin. Gerektiğinde Bit Eşlemler ile Simgeler arasındaki değerleri değiştirin.

Yararlı using deyimi

using GelUtilities = Microsoft.Internal.VisualStudio.PlatformUI.Utilities;

Görüntü hizmetini alma

// This or your preferred way of querying for Visual Studio services
IVsImageService2 imageService = (IVsImageService2)Package.GetGlobalService(typeof(SVsImageService));

Görüntüyü isteme

Control control = // get the control where the image will be displayed

ImageAttributes attributes = new ImageAttributes
{
    StructSize    = Marshal.SizeOf(typeof(ImageAttributes)),
    // IT_Bitmap for Bitmap, IT_Icon for Icon, IT_ImageList for ImageList
    ImageType     = (uint)_UIImageType.IT_Bitmap,
    Format        = (uint)_UIDataFormat.DF_WinForms,
    LogicalWidth  = 16,
    LogicalHeight = 16,
    Dpi           = (int)DpiAwareness.GetWindowDpi(control.Handle);
    // Desired RGBA color, if you don't use this, don't set IAF_Background below
    Background    = 0xFFFFFFFF,
    Flags         = unchecked((uint)_ImageAttributesFlags.IAF_RequiredFlags | _ImageAttributesFlags.IAF_Background),
};

// Replace this KnownMoniker with your desired ImageMoniker
IVsUIObject uIObj = imageService.GetImage(KnownMonikers.Blank, attributes);

Bitmap bitmap = (Bitmap)GelUtilities.GetObjectData(uiObj); // Use this if you need a bitmap
// Icon icon = (Icon)GelUtilities.GetObjectData(uiObj);    // Use this if you need an icon

Yeni bir araç penceresinde görüntü takma adlarını Nasıl yaparım? kullanın?

VSIX paket projesi şablonu Visual Studio 2015 için güncelleştirildi. Yeni bir araç penceresi oluşturmak için VSIX projesine sağ tıklayın ve Yeni Öğe Ekle>(Ctrl+Shift+A) öğesini seçin. Proje dilinin Genişletilebilirlik düğümü altında Özel Araç Penceresi'ni seçin, araç penceresine bir ad verin ve Ekle düğmesine basın.

Bunlar, araç penceresinde takma adlar kullanılacak önemli yerlerdir. Her birinin yönergelerini izleyin:

  1. Sekmeler yeterince küçük olduğunda araç penceresi sekmesi (Ctrl+Sekmesi pencere değiştiricisinde de kullanılır).

    Bu satırı ToolWindowPane türünden türetilen sınıfın oluşturucusna ekleyin:

    // Replace this KnownMoniker with your desired ImageMoniker
    this.BitmapImageMoniker = KnownMonikers.Blank;
    
  2. Araç penceresini açma komutu.

    Paketin .vsct dosyasında araç penceresinin komut düğmesini düzenleyin:

    <Button guid="guidPackageCmdSet" id="CommandId" priority="0x0100" type="Button">
      <Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
      <!-- Replace this KnownMoniker with your desired ImageMoniker -->
      <Icon guid="ImageCatalogGuid" id="Blank" />
      <!-- Add this -->
      <CommandFlag>IconIsMoniker</CommandFlag>
      <Strings>
        <ButtonText>MyToolWindow</ButtonText>
      </Strings>
    </Button>
    

    Öğelerden sonra dosyanın en üstünde aşağıdakilerin de bulunduğundan <Extern> emin olun:

    <Include href="KnownImageIds.vsct"/>
    

Nasıl yaparım? var olan bir araç penceresinde görüntü takma adlarını kullanıyor musunuz?

Mevcut araç penceresini görüntü takma adlarını kullanacak şekilde güncelleştirmek, yeni araç penceresi oluşturma adımlarına benzer.

Bunlar, araç penceresinde takma adlar kullanılacak önemli yerlerdir. Her birinin yönergelerini izleyin:

  1. Sekmeler yeterince küçük olduğunda araç penceresi sekmesi (Ctrl+Sekmesi pencere değiştiricisinde de kullanılır).

    1. ToolWindowPane türünden türetilen sınıfın oluşturucusunda şu satırları kaldırın (varsa):

      this.BitmapResourceID = <Value>;
      this.BitmapIndex = <Value>;
      
    2. Yukarıdaki "Nasıl yaparım? yeni bir araç penceresinde görüntü takma adlarını mı kullanacaksınız?" bölümünün 1. adımına bakın.

  2. Araç penceresini açma komutu.

    • Yukarıdaki "Nasıl yaparım? yeni bir araç penceresinde görüntü takma adlarını kullanma?" bölümünün 2. adımına bakın.

Nasıl yaparım? bir .vsct dosyasında görüntü takma adlarını kullanıyor musunuz?

Dosyanızı .vsct aşağıdaki açıklama satırıyla gösterildiği gibi güncelleştirin:

<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <!--  Include the definitions for images included in the VS image catalog -->
  <Include href="KnownImageIds.vsct"/>
  <Commands package="guidMyPackage">
    <Buttons>
      <Button guid="guidMyCommandSet" id="cmdidMyCommand" priority="0x0000" type="Button">
        <!-- Add an Icon element, changing the attributes to match the image moniker you want to use.
             In this case, we're using the Guid for the VS image catalog.
             Change the id attribute to be the ID of the desired image moniker. -->
        <Icon guid="ImageCatalogGuid" id="OpenFolder" />
        <CommandFlag>DynamicVisibility</CommandFlag>
        <CommandFlag>DefaultInvisible</CommandFlag>
        <CommandFlag>DefaultDisabled</CommandFlag>
        <CommandFlag>CommandWellOnly</CommandFlag>
        <CommandFlag>IconAndText</CommandFlag>
        <!-- Add the IconIsMoniker CommandFlag -->
        <CommandFlag>IconIsMoniker</CommandFlag>
        <Strings>
          <ButtonText>Quick Fixes...</ButtonText>
          <CommandName>Show Quick Fixes</CommandName>
          <CanonicalName>ShowQuickFixes</CanonicalName>
          <LocCanonicalName>ShowQuickFixes</LocCanonicalName>
        </Strings>
      </Button>
    </Buttons>
  </Commands>
  <!-- It is recommended that you remove <Bitmap> elements that are no longer used in the vsct file -->
  <Symbols>
    <GuidSymbol name="guidMyPackage"    value="{1491e936-6ffe-474e-8371-30e5920d8fdd}" />
    <GuidSymbol name="guidMyCommandSet" value="{10347de4-69a9-47f4-a950-d3301f6d2bc7}">
      <IDSymbol name="cmdidMyCommand" value="0x9437" />
    </GuidSymbol>
  </Symbols>
</CommandTable>

.vsct dosyamın da Visual Studio'nun eski sürümleri tarafından okunması gerekiyorsa ne olur?

Visual Studio'nun eski sürümleri IconIsMoniker komut bayrağını tanımaz. Visual Studio'nun destekleyen sürümlerinde görüntü hizmetinden görüntüler kullanabilirsiniz, ancak Visual Studio'nun eski sürümlerinde eski stildeki görüntüleri kullanmaya devam edebilirsiniz. Bunu yapmak için, dosyayı değişmeden bırakırsınız .vsct (ve bu nedenle Visual Studio'nun <eski sürümleriyle uyumludur) ve dosyanın Bit Eşlemleri> öğesinde tanımlanan GUID/ID çiftlerinden görüntü adı GUID/KIMLIK çiftlerine eşlenen bir .vsct CSV (virgülle ayrılmış değerler) dosyası oluşturursunuz.

Eşleme CSV dosyasının biçimi:

Icon guid, Icon id, Moniker guid, Moniker id
b714fcf7-855e-4e4c-802a-1fd87144ccad,1,fda30684-682d-421c-8be4-650a2967058e,100
b714fcf7-855e-4e4c-802a-1fd87144ccad,2,fda30684-682d-421c-8be4-650a2967058e,200

CSV dosyası paketle dağıtılır ve konumu ProvideMenuResource paket özniteliğinin IconMappingFilename özelliği tarafından belirtilir:

[ProvideMenuResource("MyPackage.ctmenu", 1, IconMappingFilename="IconMappings.csv")]

IconMappingFilename, örtük olarak $PackageFolder$ (yukarıdaki örnekte olduğu gibi) ile kök köklerine sahip göreli bir yol veya @"%UserProfile%\dir1\dir2\MyMappingFile.csv" gibi bir ortam değişkeni tarafından tanımlanan dizinde açıkça köklenen mutlak bir yoldur.

Proje sistemini Nasıl yaparım? bağlantı noktası?

Bir proje için ImageMonikers sağlama

  1. Projenin IVsHierarchy'sinde VSHPROPID_SupportsIconMonikers uygulayın ve true değerini döndürin.

  2. VSHPROPID_IconMonikerImageList (özgün proje VSHPROPID_IconImgList kullandıysa) veya VSHPROPID_IconMonikerGuid, VSHPROPID_IconMonikerId, VSHPROPID_OpenFolderIconMonikerGuid VSHPROPID_OpenFolderIconMonikerId(özgün proje VSHPROPID_IconHandle ve VSHPROPID_OpenFolderIconHandle kullandıysa) uygulayın.

  3. Uzantı noktaları bunları isterse simgelerin "eski" sürümlerini oluşturmak için simgeler için özgün VSHPROPID'lerin uygulamasını değiştirin. IVsImageService2 , bu simgeleri almak için gereken işlevleri sağlar

    VB/C# proje tatları için ek gereksinimler

    yalnızca projenizin en dıştaki aroma olduğunu algılarsanız VSHPROPID_SupportsIconMonikers uygulayın. Aksi takdirde, en dıştaki gerçek aroma gerçekte görüntü takma adlarını desteklemeyebilir ve temel aromanız özelleştirilmiş görüntüleri etkili bir şekilde "gizleyebilir".

    CPS'de görüntü adı Nasıl yaparım? kullanılır?

    CPS'de (Ortak Proje Sistemi) özel görüntüleri ayarlama işlemi el ile veya Proje Sistemi Genişletilebilirlik SDK'sı ile birlikte gelen bir öğe şablonu aracılığıyla yapılabilir.

    Proje Sistemi Genişletilebilirlik SDK'sını kullanma

    CPS görüntülerinizi özelleştirmek için Proje Türü/Öğe türü için özel simgeler sağlama başlığındaki yönergeleri izleyin. CPS hakkında daha fazla bilgiyi Visual Studio Proje Sistemi genişletilebilirlik belgelerinde bulabilirsiniz

    ImageMonikers'i el ile kullanma

  4. Proje sisteminizde IProjectTreeModifier arabirimini uygulayın ve dışarı aktarın.

  5. Hangi Bilinen Adı veya özel görüntü takma adını kullanmak istediğinizi belirleyin.

  6. ApplyModifications yönteminde, aşağıdaki örneğe benzer şekilde yeni ağacı döndürmeden önce yönteminin herhangi bir yerinde aşağıdakileri yapın:

    // Replace this KnownMoniker with your desired ImageMoniker
    tree = tree.SetIcon(KnownMonikers.Blank.ToProjectSystemType());
    
  7. Yeni bir ağaç oluşturuyorsanız, aşağıdaki örneğe benzer şekilde, istenen ad adlarını NewTree yöntemine geçirerek özel görüntüleri ayarlayabilirsiniz:

    // Replace this KnownMoniker with your desired ImageMoniker
    ProjectImageMoniker icon         = KnownMonikers.FolderClosed.ToProjectSystemType();
    ProjectImageMoniker expandedIcon = KnownMonikers.FolderOpened.ToProjectSystemType();
    
    return this.ProjectTreeFactory.Value.NewTree(/*caption*/<value>,
                                                 /*filePath*/<value>,
                                                 /*browseObjectProperties*/<value>,
                                                 icon,
                                                 expandedIcon);
    

Nasıl yaparım? gerçek bir görüntü şeridinden takma ad tabanlı bir görüntü şeridine dönüştürüyor musunuz?

HIMAGELIST'leri desteklemem gerekiyor

Kodunuz için görüntü hizmetini kullanmak üzere güncelleştirmek istediğiniz zaten bir görüntü şeridi varsa, ancak görüntü listelerini geçirmeyi gerektiren API'lerle kısıtlanmışsanız, görüntü hizmetinin avantajlarından yararlanmaya devam edebilirsiniz. Takma ad tabanlı bir görüntü şeridi oluşturmak için aşağıdaki adımları izleyerek mevcut adlardan bir bildirim oluşturun.

  1. ManifestFromResources aracını çalıştırarak görüntü şeridini geçirin. Bu, şerit için bir bildirim oluşturur.

    • Önerilen: Bildirimin kullanımına uygun varsayılan olmayan bir ad sağlayın.
  2. Yalnızca Bilinen Adlar kullanıyorsanız aşağıdakileri yapın:

    • Bildirimin <Images> bölümünü Images/> ile <değiştirin.

    • Tüm alt kimlikleri (imagestrip name>_## içeren <her şey) kaldırın.

    • Önerilen: AssetsGuid simgesini ve görüntü şeridi simgesini kullanımına uyacak şekilde yeniden adlandırın.

    • Her Bir ContainedImage GUID'sini $(ImageCatalogGuid) ile değiştirin, her Bir ContainedImage kimliğini $(<moniker>) ile değiştirin ve her Bir ContainedImage'a External="true" özniteliğini ekleyin

      • <takma adı>, görüntüyle eşleşen Bilinen Adlı adla değiştirilmelidir, ancak adından "BilinenLer" kaldırılmalıdır.
    • Simgeler> bölümünün en üstüne <Import Manifest="$(ManifestFolder)\<Relative install dir path to *>\Microsoft.VisualStudio.ImageCatalog.imagemanifest" /*> ekleyin<.

      • Göreli yol, bildirim için kurulum yazmada tanımlanan dağıtım konumuna göre belirlenir.
  3. Var olan kodun görüntü şeridi için görüntü hizmetini sorgulamak için kullanabileceği bir takma adına sahip olması için sarmalayıcılar oluşturmak için ManifestToCode aracını çalıştırın.

    • Önerilen: Sarmalayıcılar ve ad alanları için kullanımlarına uygun olmayan adlar sağlayın.
  4. Görüntü hizmeti ve yeni dosyalarla çalışmak için tüm eklemeleri, kurulum yazma/dağıtım ve diğer kod değişikliklerini yapın.

    Nasıl görünmesi gerektiğini görmek için hem iç hem de dış görüntüleri içeren örnek bildirim:

<?xml version="1.0"?>
<ImageManifest
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">

  <Symbols>
    <!-- This needs to be the relative path from your manifest to the ImageCatalog's manifest
         where $(ManifestFolder) is the deployed location of this manifest. -->
    <Import Manifest="$(ManifestFolder)\<RelPath>\Microsoft.VisualStudio.ImageCatalog.imagemanifest" />

    <String Name="Resources" Value="/My.Assembly.Name;Component/Resources/ImageStrip" />
    <Guid Name="ImageGuid" Value="{fb41b7ef-6587-480c-aa27-5b559d42cfc9}" />
    <Guid Name="ImageStripGuid" Value="{9c84a570-d9a7-4052-a340-188fb276f973}" />
    <ID Name="MyImage_0" Value="100" />
    <ID Name="MyImage_1" Value="101" />
    <ID Name="InternalList" Value="1001" />
    <ID Name="ExternalList" Value="1002" />
  </Symbols>

  <Images>
    <Image Guid="$(ImageGuid)" ID="$(MyImage_0)">
      <Source Uri="$(Resources)/MyImage_0.png">
        <Size Value="16" />
      </Source>
    </Image>
    <Image Guid="$(ImageGuid)" ID="$(MyImage_1)">
      <Source Uri="$(Resources)/MyImage_1.png">
        <Size Value="16" />
      </Source>
    </Image>
  </Images>

  <ImageLists>
    <ImageList Guid="$(ImageStripGuid)" ID="$(InternalList)">
      <ContainedImage Guid="$(ImageGuid)" ID="$(MyImage_0)" />
      <ContainedImage Guid="$(ImageGuid)" ID="$(MyImage_1)" />
    </ImageList>
    <ImageList Guid="$(ImageStripGuid)" ID="$(ExternalList)">
      <ContainedImage Guid="$(ImageCatalogGuid)" ID="$(StatusError)" External="true" />
      <ContainedImage Guid="$(ImageCatalogGuid)" ID="$(StatusWarning)" External="true" />
      <ContainedImage Guid="$(ImageCatalogGuid)" ID="$(StatusInformation)" External="true" />
    </ImageList>
  </ImageLists>

</ImageManifest>

HIMAGELISTs desteğine ihtiyacım yok

  1. Görüntü şeridinizdeki görüntülerle eşleşen Bilinen Adlar kümesini belirleyin veya görüntü şeridinizdeki görüntüler için kendi adlarınızı oluşturun.

  2. Bunun yerine, görüntü şeridindeki gerekli dizindeki görüntüyü almak için kullandığınız eşlemeyi güncelleştirin.

  3. Kodunuzu güncelleştirilmiş eşleme aracılığıyla ad istemek üzere görüntü hizmetini kullanacak şekilde güncelleştirin. (Bu, şu adrese güncelleştirme yapmak anlamına gelebilir: Yönetilen kod için CrispImages veya görüntü hizmetinden HBITMAP'ler veya HICON'lar istemek ve bunları yerel kod için geçirmek.)

Görüntülerinizi test etme

Her şeyin doğru yazıldığından emin olmak için görüntü bildirimlerinizi test etmek için Görüntü Kitaplığı Görüntüleyicisi aracını kullanabilirsiniz. Aracı Visual Studio 2015 SDK'sında bulabilirsiniz. Bu araç ve diğer araçlarla ilgili belgelere buradan ulaşabilirsiniz.

Ek kaynaklar

Örnekler

GitHub'daki Visual Studio örneklerinin birkaçı, çeşitli Visual Studio genişletilebilirlik noktalarının bir parçası olarak görüntü hizmetinin nasıl kullanılacağını gösterecek şekilde güncelleştirildi.

En son örnekleri denetleyin http://github.com/Microsoft/VSSDK-Extensibility-Samples .

Araçlar

Görüntü Hizmeti ile çalışan kullanıcı arabirimini oluşturmaya/güncelleştirmeye yardımcı olmak için Görüntü Hizmeti için bir dizi destek aracı oluşturuldu. Her araç hakkında daha fazla bilgi için araçlarla birlikte gelen belgelere bakın. Araçlar Visual Studio 2015 SDK'sının bir parçası olarak bulunur.

ManifestFromResources

Kaynaklardan Bildirim aracı, görüntü kaynaklarının (PNG veya XAML) listesini alır ve bu görüntüleri görüntü hizmetiyle kullanmak için bir görüntü bildirim dosyası oluşturur.

ManifestToCode

Koda Bildirim aracı bir görüntü bildirim dosyası alır ve koddaki bildirim değerlerine (C++, C# veya VB) veya .vsct dosyalara başvurmak için bir sarmalayıcı dosyası oluşturur.

ImageLibraryViewer

Görüntü Kitaplığı Görüntüleyicisi aracı görüntü bildirimlerini yükleyebilir ve kullanıcının bunları Visual Studio'da olduğu gibi değiştirerek bildirimin doğru yazıldığından emin olmasını sağlar. Kullanıcı arka planı, boyutları, DPI ayarını, Yüksek Karşıtlığı ve diğer ayarları değiştirebilir. Ayrıca, bildirimlerdeki hataları bulmak için yükleme bilgilerini görüntüler ve bildirimdeki her görüntünün kaynak bilgilerini görüntüler.

SSS

  • Reference Include="Microsoft.VisualStudio.* yüklenirken <eklemeniz gereken bağımlılıklar var mı? Interop.14.0.DesignTime" />?

    • Tüm birlikte çalışma DLL'lerinde EmbedInteropTypes="true" ayarını yapın.
  • Uzantımla bir görüntü bildirimi Nasıl yaparım? dağıtın?

    • .imagemanifest Dosyayı projenize ekleyin.

    • "VSIX'e Ekle" değerini True olarak ayarlayın.

  • CPS Proje Sistemimi güncelleştiriyorum. ImageName ve StockIconService'e ne oldu?

    • CPS, takma ad kullanacak şekilde güncelleştirildiğinde bunlar kaldırıldı. Artık StockIconService'i çağırmanız gerekmez, CPS yardımcı programlarındaki ToProjectSystemType() uzantı yöntemini kullanarak istenen KnownMoniker'ı yönteme veya özelliğe geçirmeniz yeterlidir. ImageName'den KnownMonikers'e eşlemeyi aşağıda bulabilirsiniz:

      Imagename Bilinen Adı
      ImageName.OfflineWebApp KnownImageIds.Web
      ImageName.WebReferencesFolder KnownImageIds.Web
      ImageName.OpenReferenceFolder KnownImageIds.FolderOpened
      ImageName.ReferenceFolder KnownImageIds.Reference
      ImageName.Reference KnownImageIds.Reference
      ImageName.SdlWebReference KnownImageIds.WebReferenceFolder
      ImageName.DiscoWebReference KnownImageIds.DynamicDiscoveryDocument
      ImageName.Folder KnownImageIds.FolderClosed
      ImageName.OpenFolder KnownImageIds.FolderOpened
      ImageName.ExcludedFolder KnownImageIds.HiddenFolderClosed
      ImageName.OpenExcludedFolder KnownImageIds.HiddenFolderOpened
      ImageName.ExcludedFile KnownImageIds.HiddenFile
      ImageName.DependentFile KnownImageIds.GenerateFile
      ImageName.MissingFile KnownImageIds.DocumentWarning
      ImageName.WindowsForm KnownImageIds.WindowsForm
      ImageName.WindowsUserControl KnownImageIds.UserControl
      ImageName.WindowsComponent KnownImageIds.ComponentFile
      ImageName.XmlSchema KnownImageIds.XMLSchema
      ImageName.XmlFile KnownImageIds.XMLFile
      ImageName.WebForm KnownImageIds.Web
      ImageName.WebService KnownImageIds.WebService
      ImageName.WebUserControl KnownImageIds.WebUserControl
      ImageName.WebCustomUserControl KnownImageIds.WebCustomControl
      ImageName.AspPage KnownImageIds.ASPFile
      ImageName.GlobalApplicationClass KnownImageIds. Ayarlar File
      ImageName.WebConfig KnownImageIds.ConfigurationFile
      ImageName.HtmlPage KnownImageIds.HTMLFile
      ImageName.StyleSheet KnownImageIds.StyleSheet
      ImageName.ScriptFile KnownImageIds.JSScript
      ImageName.TextFile KnownImageIds.Document
      Imagename. Ayarlar File KnownImageIds. Ayarlar
      ImageName.Resources KnownImageIds.DocumentGroup
      ImageName.Bitmap KnownImageIds.Image
      ImageName.Icon KnownImageIds.IconFile
      ImageName.Image KnownImageIds.Image
      ImageName.ImageMap KnownImageIds.ImageMapFile
      ImageName.XWorld KnownImageIds.XWorldFile
      ImageName.Audio KnownImageIds.Sound
      ImageName.Video KnownImageIds.Media
      ImageName.Cab KnownImageIds.CABProject
      ImageName.Jar KnownImageIds.JARFile
      ImageName.DataEnvironment KnownImageIds.DataTable
      ImageName.PreviewFile KnownImageIds.Report
      ImageName.DanglingReference KnownImageIds.ReferenceWarning
      ImageName.XsltFile KnownImageIds.XSLTransform
      ImageName.Cursor KnownImageIds.CursorFile
      ImageName.App Tasarım Aracı Klasör KnownImageIds.Property
      ImageName.Data KnownImageIds.Database
      ImageName.Application KnownImageIds.Application
      ImageName.DataSet KnownImageIds.DatabaseGroup
      ImageName.Pfx KnownImageIds.Certificate
      ImageName.Snk KnownImageIds.Rule
      ImageName.VisualBasicProject KnownImageIds.VBProjectNode
      ImageName.CSharpProject KnownImageIds.CSProjectNode
      ImageName.Empty KnownImageIds.Blank
      ImageName.MissingFolder KnownImageIds.FolderOffline
      ImageName.SharedImportReference KnownImageIds.SharedProject
      ImageName.SharedProjectCs KnownImageIds.CSSharedProject
      ImageName.SharedProjectVc KnownImageIds.CPPSharedProject
      ImageName.SharedProjectJs KnownImageIds.JSSharedProject
      ImageName.CSharpCodeFile KnownImageIds.CSFileNode
      ImageName.VisualBasicCodeFile KnownImageIds.VBFileNode
    • Tamamlama listesi sağlayıcımı güncelleştiriyorum. Hangi Bilinen Adlar eski StandardGlyphGroup ve StandardGlyph değerleriyle eşleşmektedir?

      Veri Akışı Adı Veri Akışı Adı Veri Akışı Adı
      GlyphGroupClass GlifItemPublic ClassPublic
      GlyphGroupClass GlifItemInternal ClassInternal
      GlyphGroupClass GlyphItemFriend ClassInternal
      GlyphGroupClass GlyphItemProtected ClassProtected
      GlyphGroupClass GlifItemPrivate ClassPrivate
      GlyphGroupClass GlyphItemShortcut ClassShortcut
      GlyphGroupConstant GlifItemPublic ConstantPublic
      GlyphGroupConstant GlifItemInternal ConstantInternal
      GlyphGroupConstant GlyphItemFriend ConstantInternal
      GlyphGroupConstant GlyphItemProtected ConstantProtected
      GlyphGroupConstant GlifItemPrivate ConstantPrivate
      GlyphGroupConstant GlyphItemShortcut ConstantShortcut
      GlyphGroupDelegate GlifItemPublic DelegatePublic
      GlyphGroupDelegate GlifItemInternal TemsilciInternal
      GlyphGroupDelegate GlyphItemFriend TemsilciInternal
      GlyphGroupDelegate GlyphItemProtected DelegateProtected
      GlyphGroupDelegate GlifItemPrivate DelegatePrivate
      GlyphGroupDelegate GlyphItemShortcut DelegateShortcut
      GlyphGroupEnum GlifItemPublic EnumerationPublic
      GlyphGroupEnum GlifItemInternal Sabit ListesiInternal
      GlyphGroupEnum GlyphItemFriend Sabit ListesiInternal
      GlyphGroupEnum GlyphItemProtected EnumerationProtected
      GlyphGroupEnum GlifItemPrivate EnumerationPrivate
      GlyphGroupEnum GlyphItemShortcut EnumerationShortcut
      GlyphGroupEnumMember GlifItemPublic EnumerationItemPublic
      GlyphGroupEnumMember GlifItemInternal EnumerationItemInternal
      GlyphGroupEnumMember GlyphItemFriend EnumerationItemInternal
      GlyphGroupEnumMember GlyphItemProtected EnumerationItemProtected
      GlyphGroupEnumMember GlifItemPrivate EnumerationItemPrivate
      GlyphGroupEnumMember GlyphItemShortcut EnumerationItemShortcut
      GlyphGroupEvent GlifItemPublic EventPublic
      GlyphGroupEvent GlifItemInternal EventInternal
      GlyphGroupEvent GlyphItemFriend EventInternal
      GlyphGroupEvent GlyphItemProtected EventProtected
      GlyphGroupEvent GlifItemPrivate EventPrivate
      GlyphGroupEvent GlyphItemShortcut EventShortcut
      GlyphGroupException GlifItemPublic ExceptionPublic
      GlyphGroupException GlifItemInternal ExceptionInternal
      GlyphGroupException GlyphItemFriend ExceptionInternal
      GlyphGroupException GlyphItemProtected ExceptionProtected
      GlyphGroupException GlifItemPrivate ExceptionPrivate
      GlyphGroupException GlyphItemShortcut ExceptionShortcut
      GlyphGroupField GlifItemPublic FieldPublic
      GlyphGroupField GlifItemInternal FieldInternal
      GlyphGroupField GlyphItemFriend FieldInternal
      GlyphGroupField GlyphItemProtected Alan Koruması
      GlyphGroupField GlifItemPrivate FieldPrivate
      GlyphGroupField GlyphItemShortcut FieldShortcut
      GlyphGroupInterface GlifItemPublic InterfacePublic
      GlyphGroupInterface GlifItemInternal InterfaceInternal
      GlyphGroupInterface GlyphItemFriend InterfaceInternal
      GlyphGroupInterface GlyphItemProtected InterfaceProtected
      GlyphGroupInterface GlifItemPrivate InterfacePrivate
      GlyphGroupInterface GlyphItemShortcut InterfaceShortcut
      GlyphGroupMacro GlifItemPublic MacroPublic
      GlyphGroupMacro GlifItemInternal MacroInternal
      GlyphGroupMacro GlyphItemFriend MacroInternal
      GlyphGroupMacro GlyphItemProtected Makro Koruması
      GlyphGroupMacro GlifItemPrivate MacroPrivate
      GlyphGroupMacro GlyphItemShortcut MacroShortcut
      GlyphGroupMap GlifItemPublic MapPublic
      GlyphGroupMap GlifItemInternal MapInternal
      GlyphGroupMap GlyphItemFriend MapInternal
      GlyphGroupMap GlyphItemProtected MapProtected
      GlyphGroupMap GlifItemPrivate MapPrivate
      GlyphGroupMap GlyphItemShortcut MapShortcut
      GlyphGroupMapItem GlifItemPublic MapItemPublic
      GlyphGroupMapItem GlifItemInternal MapItemInternal
      GlyphGroupMapItem GlyphItemFriend MapItemInternal
      GlyphGroupMapItem GlyphItemProtected MapItemProtected
      GlyphGroupMapItem GlifItemPrivate MapItemPrivate
      GlyphGroupMapItem GlyphItemShortcut MapItemShortcut
      GlyphGroupMethod GlifItemPublic MethodPublic
      GlyphGroupMethod GlifItemInternal MethodInternal
      GlyphGroupMethod GlyphItemFriend MethodInternal
      GlyphGroupMethod GlyphItemProtected MethodProtected
      GlyphGroupMethod GlifItemPrivate MethodPrivate
      GlyphGroupMethod GlyphItemShortcut MethodShortcut
      GlyphGroupOverload GlifItemPublic MethodPublic
      GlyphGroupOverload GlifItemInternal MethodInternal
      GlyphGroupOverload GlyphItemFriend MethodInternal
      GlyphGroupOverload GlyphItemProtected MethodProtected
      GlyphGroupOverload GlifItemPrivate MethodPrivate
      GlyphGroupOverload GlyphItemShortcut MethodShortcut
      GlyphGroupModule GlifItemPublic ModulePublic
      GlyphGroupModule GlifItemInternal ModuleInternal
      GlyphGroupModule GlyphItemFriend ModuleInternal
      GlyphGroupModule GlyphItemProtected ModuleProtected
      GlyphGroupModule GlifItemPrivate ModulePrivate
      GlyphGroupModule GlyphItemShortcut ModuleShortcut
      GlyphGroupNamespace GlifItemPublic NamespacePublic
      GlyphGroupNamespace GlifItemInternal NamespaceInternal
      GlyphGroupNamespace GlyphItemFriend NamespaceInternal
      GlyphGroupNamespace GlyphItemProtected NamespaceProtected
      GlyphGroupNamespace GlifItemPrivate NamespacePrivate
      GlyphGroupNamespace GlyphItemShortcut NamespaceShortcut
      GlyphGroupOperator GlifItemPublic OperatorPublic
      GlyphGroupOperator GlifItemInternal OperatorInternal
      GlyphGroupOperator GlyphItemFriend OperatorInternal
      GlyphGroupOperator GlyphItemProtected OperatorProtected
      GlyphGroupOperator GlifItemPrivate OperatorPrivate
      GlyphGroupOperator GlyphItemShortcut OperatorShortcut
      GlyphGroupProperty GlifItemPublic PropertyPublic
      GlyphGroupProperty GlifItemInternal PropertyInternal
      GlyphGroupProperty GlyphItemFriend PropertyInternal
      GlyphGroupProperty GlyphItemProtected PropertyProtected
      GlyphGroupProperty GlifItemPrivate PropertyPrivate
      GlyphGroupProperty GlyphItemShortcut PropertyShortcut
      GlyphGroupStruct GlifItemPublic StructurePublic
      GlyphGroupStruct GlifItemInternal YapıInternal
      GlyphGroupStruct GlyphItemFriend YapıInternal
      GlyphGroupStruct GlyphItemProtected Yapı Koruması
      GlyphGroupStruct GlifItemPrivate StructurePrivate
      GlyphGroupStruct GlyphItemShortcut StructureShortcut
      GlyphGroupTemplate GlifItemPublic TemplatePublic
      GlyphGroupTemplate GlifItemInternal ŞablonInternal
      GlyphGroupTemplate GlyphItemFriend ŞablonInternal
      GlyphGroupTemplate GlyphItemProtected Şablon Koruması
      GlyphGroupTemplate GlifItemPrivate TemplatePrivate
      GlyphGroupTemplate GlyphItemShortcut TemplateShortcut
      GlyphGroupTypedef GlifItemPublic TypeDefinitionPublic
      GlyphGroupTypedef GlifItemInternal TypeDefinitionInternal
      GlyphGroupTypedef GlyphItemFriend TypeDefinitionInternal
      GlyphGroupTypedef GlyphItemProtected TypeDefinitionProtected
      GlyphGroupTypedef GlifItemPrivate TypeDefinitionPrivate
      GlyphGroupTypedef GlyphItemShortcut TypeDefinitionShortcut
      GlyphGroupType GlifItemPublic TypePublic
      GlyphGroupType GlifItemInternal TypeInternal
      GlyphGroupType GlyphItemFriend TypeInternal
      GlyphGroupType GlyphItemProtected TypeProtected
      GlyphGroupType GlifItemPrivate TypePrivate
      GlyphGroupType GlyphItemShortcut TypeShortcut
      GlyphGroupUnion GlifItemPublic UnionPublic
      GlyphGroupUnion GlifItemInternal UnionInternal
      GlyphGroupUnion GlyphItemFriend UnionInternal
      GlyphGroupUnion GlyphItemProtected UnionProtected
      GlyphGroupUnion GlifItemPrivate UnionPrivate
      GlyphGroupUnion GlyphItemShortcut UnionShortcut
      GlyphGroupVariable GlifItemPublic FieldPublic
      GlyphGroupVariable GlifItemInternal FieldInternal
      GlyphGroupVariable GlyphItemFriend FieldInternal
      GlyphGroupVariable GlyphItemProtected Alan Koruması
      GlyphGroupVariable GlifItemPrivate FieldPrivate
      GlyphGroupVariable GlyphItemShortcut FieldShortcut
      GlyphGroupValueType GlifItemPublic ValueTypePublic
      GlyphGroupValueType GlifItemInternal ValueTypeInternal
      GlyphGroupValueType GlyphItemFriend ValueTypeInternal
      GlyphGroupValueType GlyphItemProtected ValueTypeProtected
      GlyphGroupValueType GlifItemPrivate ValueTypePrivate
      GlyphGroupValueType GlyphItemShortcut ValueTypeShortcut
      GlyphGroupIntrinsic GlifItemPublic ObjectPublic
      GlyphGroupIntrinsic GlifItemInternal ObjectInternal
      GlyphGroupIntrinsic GlyphItemFriend ObjectInternal
      GlyphGroupIntrinsic GlyphItemProtected ObjectProtected
      GlyphGroupIntrinsic GlifItemPrivate ObjectPrivate
      GlyphGroupIntrinsic GlyphItemShortcut ObjectShortcut
      GlyphGroupJSharpMethod GlifItemPublic MethodPublic
      GlyphGroupJSharpMethod GlifItemInternal MethodInternal
      GlyphGroupJSharpMethod GlyphItemFriend MethodInternal
      GlyphGroupJSharpMethod GlyphItemProtected MethodProtected
      GlyphGroupJSharpMethod GlifItemPrivate MethodPrivate
      GlyphGroupJSharpMethod GlyphItemShortcut MethodShortcut
      GlyphGroupJSharpField GlifItemPublic FieldPublic
      GlyphGroupJSharpField GlifItemInternal FieldInternal
      GlyphGroupJSharpField GlyphItemFriend FieldInternal
      GlyphGroupJSharpField GlyphItemProtected Alan Koruması
      GlyphGroupJSharpField GlifItemPrivate FieldPrivate
      GlyphGroupJSharpField GlyphItemShortcut FieldShortcut
      GlyphGroupJSharpClass GlifItemPublic ClassPublic
      GlyphGroupJSharpClass GlifItemInternal ClassInternal
      GlyphGroupJSharpClass GlyphItemFriend ClassInternal
      GlyphGroupJSharpClass GlyphItemProtected ClassProtected
      GlyphGroupJSharpClass GlifItemPrivate ClassPrivate
      GlyphGroupJSharpClass GlyphItemShortcut ClassShortcut
      GlyphGroupJSharpNamespace GlifItemPublic NamespacePublic
      GlyphGroupJSharpNamespace GlifItemInternal NamespaceInternal
      GlyphGroupJSharpNamespace GlyphItemFriend NamespaceInternal
      GlyphGroupJSharpNamespace GlyphItemProtected NamespaceProtected
      GlyphGroupJSharpNamespace GlifItemPrivate NamespacePrivate
      GlyphGroupJSharpNamespace GlyphItemShortcut NamespaceShortcut
      GlyphGroupJSharpInterface GlifItemPublic InterfacePublic
      GlyphGroupJSharpInterface GlifItemInternal InterfaceInternal
      GlyphGroupJSharpInterface GlyphItemFriend InterfaceInternal
      GlyphGroupJSharpInterface GlyphItemProtected InterfaceProtected
      GlyphGroupJSharpInterface GlifItemPrivate InterfacePrivate
      GlyphGroupJSharpInterface GlyphItemShortcut InterfaceShortcut
      GlyphGroupError StatusError
      GlyphBscFile ClassFile
      GlifAssembly Başvuru
      GlifLibrary Kitaplık
      GlyphVBProject VBProjectNode
      GlyphCoolProject CSProjectNode
      GlyphCppProject CPPProjectNode
      GlyphDialogId Iletişim
      GlyphOpenFolder KlasörAçıldı
      GlyphClosedFolder Klasör Kapatıldı
      GlifArrow Gotonext
      GlyphCSharpFile CSFileNode
      GlyphCSharpExpansion Kod Parçacığı
      GlyphKeyword IntellisenseKeyword
      GlyphInformation StatusInformation
      GlyphReference ClassMethodReference
      GlyphRecursion Özyineleme
      GlyphXmlItem Etiket
      GlyphJSharpProject DocumentCollection
      GlyphJSharpDocument Belge
      GlyphForwardType Gotonext
      GlyphCallersGraph Ara
      GlyphCallGraph CallFrom
      GlyphWarning StatusWarning
      GlyphMaybeReference QuestionMark
      GlyphMaybeCaller Ara
      GlifMaybeCall CallFrom
      GlyphExtensionMethod ExtensionMethod
      GlyphExtensionMethodInternal ExtensionMethod
      GlyphExtensionMethodFriend ExtensionMethod
      GlyphExtensionMethodProtected ExtensionMethod
      GlyphExtensionMethodPrivate ExtensionMethod
      GlyphExtensionMethodShortcut ExtensionMethod
      GlyphXmlAttribute XmlAttribute
      GlyphXmlChild XmlElement
      GlyphXmlDescendant XmlDescendant
      GlyphXmlNamespace Xmlnamespace
      GlyphXmlAttributeQuestion XmlAttributeLowConfidence
      GlyphXmlAttributeCheck XmlAttributeHighConfidence
      GlyphXmlChildQuestion XmlElementLowConfidence
      GlyphXmlChildCheck XmlElementHighConfidence
      GlyphXmlDescendantQuestion XmlDescendantLowConfidence
      GlyphXmlDescendantCheck XmlDescendantHighConfidence
      GlyphCompletionWarning IntellisenseWarning