Aracılığıyla paylaş


Yazılım geliştirme seti oluşturma

Yazılım geliştirme seti (SDK), Visual Studio'da tek bir öğe olarak başvurabileceğiniz BIR API koleksiyonudur. Başvuru Yöneticisi iletişim kutusunda projeyle ilgili tüm SDK'lar listelenir. Bir projeye SDK eklediğinizde, API'ler Visual Studio'da kullanılabilir.

İki tür SDK vardır:

  • Platform SDK'ları, bir platform için uygulama geliştirmek için zorunlu bileşenlerdir. Örneğin, Windows 8.x Mağazası uygulamaları geliştirmek için Windows 8.1 SDK'sı gereklidir.

  • Uzantı SDK'ları, bir platformu genişleten isteğe bağlı bileşenlerdir ancak bu platform için uygulama geliştirmek için zorunlu değildir.

Aşağıdaki bölümlerde SDK'ların genel altyapısı ve platform SDK'sı ile uzantı SDK'sının nasıl oluşturulacağı açıklanmaktadır.

Platform SDK'ları

Bir platform için uygulama geliştirmek için platform SDK'ları gereklidir. Örneğin, Windows 8.1 için uygulama geliştirmek için Windows 8.1 SDK'sı gereklidir.

Yükleme

Tüm platform SDK'ları HKLM\Software\Microsoft\Microsoft SDK'ları\[TPI]\v[TPV]\@InstallationFolder = [SDK kökü] konumunda yüklenir. Buna göre, Windows 8.1 SDK'sı HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1 konumunda yüklenir.

Düzen

Platform SDK'ları aşağıdaki düzene sahiptir:

\[InstallationFolder root]
            SDKManifest.xml
            \References
                  \[config]
                        \[arch]
            \DesignTime
                  \[config]
                        \[arch]
Düğüm Açıklama
Başvurular klasörü Kodlanabilir API'ler içeren ikili dosyalar içerir. Bunlar Windows Meta Verileri (WinMD) dosyalarını veya derlemelerini içerebilir.
DesignTime klasörü Yalnızca ön çalıştırma/hata ayıklama zamanında gereken dosyaları içerir. Bunlar XML belgeleri, kitaplıklar, üst bilgiler, Araç Kutusu tasarım zamanı ikilileri, MSBuild yapıtları vb. içerebilir

XML belgeleri ideal olarak \DesignTime klasörüne yerleştirilir, ancak başvurular için XML belgeleri Visual Studio'daki başvuru dosyasının yanına yerleştirilmeye devam eder. Örneğin, bir reference\References\[config]\[arch]\sample.dll için XML belgesi \References\[config]\[arch]\sample.xml ve bu belgenin yerelleştirilmiş sürümü \References\[config]\[arch]\[locale]\sample.xml olacaktır.
Yapılandırma klasörü Yalnızca üç klasör olabilir: Hata Ayıklama, Perakende ve CommonConfiguration. SDK yazarları, SDK tüketicisinin hedefleeceği yapılandırmadan bağımsız olarak aynı SDK dosyaları kümesinin kullanılması gerekiyorsa dosyalarını CommonConfiguration altına yerleştirebilir.
Mimari klasörü Desteklenen herhangi bir mimari klasörü bulunabilir. Visual Studio şu mimarileri destekler: x86, x64, ARM ve nötr. Not: Win32 x86 ile, AnyCPU ise nötr olarak eşler.

MSBuild, Platform SDK'ları için yalnızca \CommonConfiguration\neutral altında görünür.
SDKManifest.xml Bu dosya, Visual Studio'da SDK'nın nasıl kullanılması gerektiğini açıklar. Windows 8.1 için SDK Bildirimi'ne bakın:

<FileList DisplayName = "Windows" PlatformIdentity = "Windows, version=8.1" TargetFramework = ".NET for Windows Store apps, version=v4.5.1; .NET Framework, version=v4.5.1" MinVSVersion = "14.0"> <File Reference = "Windows.winmd"> <ToolboxItems VSCategory = "Toolbox.Default" /> </File> </FileList>

DisplayName: Nesne Tarayıcısı'nın Gözat listesinde görüntülediği değer.

PlatformIdentity: Bu özniteliğin varlığı Visual Studio ve MSBuild'e SDK'nın bir platform SDK'sı olduğunu ve ondan eklenen başvuruların yerel olarak kopyalanmaması gerektiğini bildirir.

TargetFramework: Bu öznitelik, yalnızca bu özniteliğin değerinde belirtilen aynı Çerçeveleri hedefleyen projelerin SDK'yi kullanamasını sağlamak için Visual Studio tarafından kullanılır.

MinVSVersion: Bu öznitelik Visual Studio tarafından yalnızca buna uygulanan SDK'ları kullanmak için kullanılır.

Başvuru: Bu öznitelik yalnızca denetim içeren başvurular için belirtilmelidir. Başvuruda denetim bulunup bulunmadığı hakkında bilgi için aşağıya bakın.

Uzantı SDK'ları

Aşağıdaki bölümlerde uzantı SDK'sını dağıtmak için yapmanız gerekenler açıklanmaktadır.

Yükleme

Uzantı SDK'ları, kayıt defteri anahtarı belirtilmeden belirli bir kullanıcı veya tüm kullanıcılar için yüklenebilir. Tüm kullanıcılar için bir SDK yüklemek için aşağıdaki yolu kullanın:

%Program Files%\Microsoft SDK'ları<target platform>\v<platform sürüm numarası>\ExtensionSDKs

Kullanıcıya özgü bir yükleme için aşağıdaki yolu kullanın:

%USERPROFILE%\AppData\Local\Microsoft SDK'ları<hedef platform>\v<platform sürüm numarası>\ExtensionSDKs

Farklı bir konum kullanmak istiyorsanız iki işlemden birini yapmanız gerekir:

  1. Bunu bir kayıt defteri anahtarında belirtin:

    HKLM\Software\Microsoft\Microsoft SDK'ları<hedef platform>\v<platform sürüm numarası>\ExtensionSDKs<SDKName><SDKVersion>\

    ve değerine <path to SDK><SDKName><SDKVersion>sahip bir (Varsayılan) alt anahtar ekleyin.

  2. MSBuild özelliğini SDKReferenceDirectoryRoot proje dosyanıza ekleyin. Bu özelliğin değeri, başvurmak istediğiniz Uzantı SDK'larının bulunduğu noktalı virgülle ayrılmış dizin listesidir.

Yükleme düzeni

Uzantı SDK'ları aşağıdaki yükleme düzenine sahiptir:

\<ExtensionSDKs root>
           \<SDKName>
                 \<SDKVersion>
                        SDKManifest.xml
                        \References
                              \<config>
                                    \<arch>
                        \Redist
                              \<config>
                                    \<arch>
                        \DesignTime
                               \<config>
                                     \<arch>

  1. \<SDKName>\<SDKVersion>: Uzantı SDK'sının adı ve sürümü, SDK kökü yolundaki ilgili klasör adlarından türetilir. MSBuild, diskteki SDK'yı bulmak için bu kimliği kullanır ve Visual Studio bu kimliği Özellikler penceresinde ve Başvuru Yöneticisi iletişim kutusunda görüntüler.

  2. Başvurular klasörü: API'leri içeren ikili dosyalar. Bunlar Windows Meta Verileri (WinMD) dosyaları veya derlemeleri olabilir.

  3. Redist klasörü: Çalışma zamanı/hata ayıklama için gereken ve kullanıcının uygulamasının bir parçası olarak paketlenmesi gereken dosyalar. Tüm ikili dosyalar \redist\config>\<<arch> altına yerleştirilmelidir ve benzersizliği sağlamak için ikili adlar aşağıdaki biçime sahip olmalıdır: ]<company.<>ürün.><amaca yöneliktir>.<uzantısını seçin>. Örneğin, *Microsoft.Cpp.Build.dll. Diğer SDK'lardan dosya adlarıyla (örneğin javascript, css, pri, xaml, png ve jpg dosyaları) çakabilecek adlara sahip tüm dosyalar, XAML denetimleriyle ilişkili dosyalar dışında \redist\config\arch>\<<sdkname>* altına yerleştirilmelidir.>< Bu dosyalar *\redist\config>\<arch>\<<componentname>\ altına yerleştirilmelidir.

  4. DesignTime klasörü: Yalnızca ön çalıştırma/hata ayıklama zamanında gerekli olan ve kullanıcının uygulamasının bir parçası olarak paketlendirilmemesi gereken dosyalar. Bunlar XML belgeleri, kitaplıklar, üst bilgiler, araç kutusu tasarım zamanı ikilileri, MSBuild yapıtları vb. olabilir. Yerel bir proje tarafından kullanılmak üzere tasarlanan tüm SDK'ların SDKName.props dosyasına sahip olması gerekir. Aşağıda bu dosya türünün bir örneği gösterilmektedir.

    <?xml version="1.0" encoding="utf-8"?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <ExecutablePath>C:\Temp\ExecutablePath;$(ExecutablePath)</ExecutablePath>
        <IncludePath>$(FrameworkSDKRoot)\..\v8.1\ExtensionSDKs\cppimagingsdk\1.0\DesignTime\CommonConfiguration\Neutral\include;$(IncludePath)</IncludePath>
        <AssemblyReferencePath>C:\Temp\AssemblyReferencePath;(AssemblyReferencePath)</AssemblyReferencePath>
        <LibraryPath>$(FrameworkSDKRoot)\..\v8.1\ExtensionSDKs\cppimagingsdk\1.0\DesignTime\Debug\ARM;$(LibraryPath)</LibraryPath>
        <SourcePath>C:\Temp\SourcePath\X64;$(SourcePath)</SourcePath>
        <ExcludePath>C:\Temp\ExcludePath\X64;$(ExcludePath)</ExcludePath>
        <_PropertySheetDisplayName>DevILSDK, 1.0</_PropertySheetDisplayName>
      </PropertyGroup>
    </Project>
    
    

    XML başvuru belgeleri, başvuru dosyasının yanına yerleştirilir. Örneğin, \References\config>\<arch>\<sample.dll derlemesinin XML başvuru belgesi \References\config>\<<arch>\sample.xml ve bu belgenin yerelleştirilmiş sürümü \References\config>\<arch>\<<locale>\sample.xml şeklindedir.

  5. Yapılandırma klasörü: üç alt klasör: Debug, Retail ve CommonConfiguration. SDK yazarları, SDK tüketicisi tarafından hedeflenen yapılandırmadan bağımsız olarak aynı SDK dosyaları kümesinin kullanılması gerektiğinde dosyalarını CommonConfiguration altına yerleştirebilir.

  6. Mimari klasörü: Şu mimariler desteklenir: x86, x64, ARM, nötr. Win32 x86 ile, AnyCPU ise nötr olarak eşler.

SDKManifest.xml

SDKManifest.xml dosyasında Visual Studio'nın SDK'yi nasıl tüketmesi gerektiği açıklanır. Aşağıda bir örnek verilmiştir:

<FileList DisplayName = "My SDK"
          ProductFamilyName = "My SDKs"
          TargetFramework = ".NETCore, version=v4.5.1; .NETFramework, version=v4.5.1"
          MinVSVersion = "14.0"
          MaxPlatformVersion = "8.1"
          AppliesTo = "WindowsAppContainer + WindowsXAML"
          SupportPrefer32Bit = "True"
          SupportedArchitectures = "x86;x64;ARM"
          SupportsMultipleVersions = "Error"
          CopyRedistToSubDirectory = "."
          DependsOn = "SDKB, version=2.0"
          MoreInfo = "https://msdn.microsoft.com/MySDK">
  <File Reference = "MySDK.Sprint.winmd" Implementation = "XNASprintImpl.dll">
    <Registration Type = "Flipper" Implementation = "XNASprintFlipperImpl.dll" />
    <Registration Type = "Flexer" Implementation = "XNASprintFlexerImpl.dll" />
    <ToolboxItems VSCategory = "Toolbox.Default" />
  </File>
</FileList>

Aşağıdaki liste dosyanın öğelerini verir:

  1. DisplayName: Başvuru Yöneticisi, Çözüm Gezgini, Nesne Tarayıcısı ve Visual Studio kullanıcı arabirimindeki diğer konumlarda görünen değer.

  2. ProductFamilyName: Genel SDK ürün adı. Örneğin, JavaScript için Windows Kitaplığı (WinJS) SDK'sı aynı SDK ürün ailesine ait olan "Microsoft.WinJS.1.0" ve "Microsoft.WinJS.2.0" olarak adlandırılır. Bu öznitelik, Visual Studio ve MSBuild'in bu bağlantıyı oluşturmasına olanak tanır. Bu öznitelik yoksa, ÜRÜN ailesi adı olarak SDK Adı kullanılır.

  3. FrameworkIdentity: Bir veya daha fazla Windows bileşen kitaplığına bağımlılığı belirtir. Bu özniteliğin değeri, tüketen uygulamanın bildirimine eklenir. Bu öznitelik yalnızca Windows bileşen kitaplıkları için geçerlidir.

  4. TargetFramework: Başvuru Yöneticisi'nde ve araç kutusunda kullanılabilen SDK'ları belirtir. Bu, ".NET Framework, version=v2.0; .NET Framework, version=v4.5.1" gibi hedef çerçeve takma adlarının noktalı virgülle ayrılmış listesidir. Aynı hedef çerçevenin birkaç sürümü belirtilirse, Başvuru Yöneticisi filtreleme amacıyla belirtilen en düşük sürümü kullanır. Örneğin, ".NET Framework, sürüm=v2.0; .NET Framework, sürüm=v4.5.1" belirtilirse, Başvuru Yöneticisi ".NET Framework, version=v2.0" kullanır. Belirli bir hedef çerçeve profili belirtilirse, yalnızca bu profil Başvuru Yöneticisi tarafından filtreleme amacıyla kullanılır. Örneğin, "Silverlight, version=v4.0, profile=Windows Telefon" belirtildiğinde, Başvuru Yöneticisi yalnızca Windows Telefon profilinde filtrelenir; Tam Silverlight 4.0 Framework'ünü hedefleyen bir proje, Başvuru Yöneticisi'nde SDK'yı görmez.

  5. MinVSVersion: En düşük Visual Studio sürümü.

  6. MaxPlatformVerson: Uzantı SDK'nızın çalışmayacağı platform sürümlerini belirtmek için maksimum hedef platform sürümü kullanılmalıdır. Örneğin, Microsoft Visual C++ Çalışma Zamanı Paketi v11.0'a yalnızca Windows 8 projeleri tarafından başvurulmalıdır. Bu nedenle, Windows 8 projesinin MaxPlatformVersion değeri 8.0'dır. Bu, Başvuru Yöneticisi'nin bir Windows 8.1 projesi için Microsoft Visual C++ Çalışma Zamanı Paketi'ni filtrelediğini ve bir Windows 8.1 projesine başvurduğunda MSBuild'in hata oluşturduğunu gösterir. Not: Bu öğe Visual Studio 2013'te başlayarak desteklenir.

  7. AppliesTo: Geçerli Visual Studio proje türlerini belirterek Başvuru Yöneticisi'nde kullanılabilen SDK'ları belirtir. Dokuz değer tanınır: WindowsAppContainer, VisualC, VB, CSharp, WindowsXAML, JavaScript, Yönetilen ve Yerel. SDK yazarı ve ("+') veya ("|") kullanabilir, ("!") işleçleri, SDK'ya uygulanan proje türlerinin kapsamını tam olarak belirtmek için.

    WindowsAppContainer, Windows 8.x Store uygulamaları için projeleri tanımlar.

  8. SupportPrefer32Bit: Desteklenen değerler "True" ve "False" değerleridir. Varsayılan değer "True" şeklindedir. Değer "False" olarak ayarlanırsa, SDK'ya başvuran projede Prefer32Bit etkinse MSBuild, Windows 8.x Store projeleri için bir hata (veya masaüstü projeleri için bir uyarı) döndürür. Prefer32Bit hakkında daha fazla bilgi için bkz. Derleme sayfası, Project Tasarım Aracı (C#) veya Derleme sayfası, Project Tasarım Aracı (Visual Basic).

  9. SupportedArchitectures: SDK'nın desteklediği mimarilerin noktalı virgülle ayrılmış listesi. Tüketen projede hedeflenen SDK mimarisi desteklenmiyorsa MSBuild bir uyarı görüntüler. Bu öznitelik belirtilmezse, MSBuild hiçbir zaman bu tür bir uyarı görüntülemez.

  10. SupportsMultipleVersions: Bu öznitelik Hata veya Uyarı olarak ayarlanırsa, MSBuild aynı projenin aynı SDK ailesinin birden çok sürümüne başvuramadığını gösterir. Bu öznitelik yoksa veya İzin Ver olarak ayarlandıysa, MSBuild bu tür bir hata veya uyarı görüntülemez.

  11. AppX: Disk üzerindeki Windows bileşen kitaplığı için uygulama paketlerinin yolunu belirtir. Bu değer, yerel hata ayıklama sırasında Windows bileşen kitaplığının kayıt bileşenine geçirilir. Dosya adının adlandırma kuralı Şirket'tir<>.<Ürün>.<Mimari>.<Yapılandırma>.<Sürüm>.appx. Yapılandırma ve Mimari, Windows bileşen kitaplığına uygulanmıyorsa öznitelik adında ve öznitelik değerinde isteğe bağlıdır. Bu değer yalnızca Windows bileşen kitaplıkları için geçerlidir.

  12. CopyRedistToSubDirectory: \redist klasörünün altındaki dosyaların uygulama paketi köküne (uygulama paketi oluşturma sihirbazında seçilen Paket konumu) ve çalışma zamanı düzeni köküne göre nereye kopyalanması gerektiğini belirtir. Varsayılan konum, uygulama paketinin ve F5 düzeninin köküdür.

  13. DependsOn: Bu SDK'nın bağımlı olduğu SDK'ları tanımlayan SDK kimliklerinin listesi. Bu öznitelik, Başvuru Yöneticisi'nin ayrıntılar bölmesinde görüntülenir.

  14. MoreInfo: Yardım ve daha fazla bilgi sağlayan web sayfasının URL'si. Bu değer, Başvuru Yöneticisi'nin sağ bölmesindeki Daha Fazla Bilgi bağlantısında kullanılır.

  15. Kayıt Türü: Uygulama bildirimindeki WinMD kaydını belirtir ve karşılık gelen uygulama DLL'sine sahip yerel WinMD için gereklidir.

  16. Dosya Başvurusu: Yalnızca denetim içeren veya yerel WinMD'ler olan başvurular için belirtilir. Başvurunun denetimler içerip içermediğini belirtme hakkında bilgi için aşağıdaki Araç kutusu öğelerinin konumunu belirtme bölümüne bakın.

Araç kutusu öğelerinin konumunu belirtme

SDKManifest.xml şemasının ToolBoxItems öğesi, hem platform hem de uzantı SDK'larındaki araç kutusu öğelerinin denetim adlarını, kaynak derlemelerini ve araç kutusu sekme adlarını belirtir. Aşağıdaki örneklerde çeşitli senaryolar gösterilmektedir. Bu, WinMD veya DLL başvuruları için geçerlidir.

Visual Studio 2019 ve önceki sürümlerinde, bildirimdeki araç kutusu denetim adlarını listelemek yerine Visual Studio'nun SDK derlemelerindeki denetim türlerini dinamik olarak numaralandırdığını unutmayın. Visual Studio 2022'den itibaren bu artık desteklenmemektedir; araç kutusu öğeleri açıkça SDKManifest.xml listelenmelidir.

  1. Denetimleri araç kutusu varsayılan kategorisine yerleştirin.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Toolbox.Default">
        <Item Type = "Namespace.ControlName1" />
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  2. Denetimleri belirli bir kategori adının altına yerleştirin.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory= "MyCategoryName">
        <Item Type = "Namespace.ControlName1" />
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  3. Denetimleri belirli kategori adlarının altına yerleştirin.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Graph">
        <Item Type = "Namespace.ControlName1" />
      </ToolboxItems>
      <ToolboxItems VSCategory = "Data">
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  4. Denetimleri Blend ve Visual Studio'da farklı kategori adlarının altına yerleştirin.

    // Blend accepts a slightly different structure for the category name because it allows a path rather than a single category.
    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Graph" BlendCategory = "Controls/sample/Graph">
        <Item Type = "Namespace.ControlName1" />
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  5. Blend ve Visual Studio'da belirli denetimleri farklı numaralandırın.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Graph">
        <Item Type = "Namespace.ControlName1" />
      </ToolboxItems>
      <ToolboxItems BlendCategory = "Controls/sample/Graph">
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  6. Belirli denetimleri numaralandırın ve Visual Studio Ortak Yolu'nun altına veya yalnızca Tüm Denetimler Grubu'na yerleştirin.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Toolbox.Common">
        <Item Type = "Namespace.ControlName1" />
      </ToolboxItems>
      <ToolboxItems VSCategory = "Toolbox.All">
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  7. Belirli denetimleri numaralandırın ve chooseItems içinde yalnızca belirli bir kümeyi araç kutusunda bulunmadan gösterin.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Toolbox.ChooseItemsOnly">
        <Item Type = "Namespace.ControlName1" />
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>