Vytvoření sady pro vývoj softwaru

Sada SDK (Software Development Kit) je kolekce rozhraní API, na která můžete odkazovat jako na jednu položku v sadě Visual Studio. Dialogové okno Správce odkazů obsahuje seznam všech sad SDK, které jsou pro projekt relevantní. Když do projektu přidáte sadu SDK, jsou rozhraní API dostupná v sadě Visual Studio.

Existují dva typy sad SDK:

  • Sady SDK platformy jsou povinné komponenty pro vývoj aplikací pro platformu. Například sada Windows 8.1 SDK je nutná k vývoji aplikací pro Windows 8.x Store.

  • Sady SDK rozšíření jsou volitelné komponenty, které rozšiřují platformu, ale nejsou povinné pro vývoj aplikací pro danou platformu.

Následující části popisují obecnou infrastrukturu sad SDK a postup vytvoření sady SDK platformy a sady SDK rozšíření.

Sady SDK platformy

Sady SDK platformy se vyžadují k vývoji aplikací pro platformu. K vývoji aplikací pro Windows 8.1 pro Windows 8.1 se například vyžaduje sada SDK pro Windows 8.1.

Instalace

Všechny sady SDK platformy se nainstalují v HKLM\Software\Microsoft\Microsoft\Microsoft SDK\[TPI]\v[TPV]\@InstallationFolder = [root sady SDK]. Proto je sada WINDOWS SDK 8.1 nainstalovaná v HKLM\Software\Microsoft\Microsoft SDK\Windows\v8.1.

Rozložení

Sady SDK platformy mají následující rozložení:

\[InstallationFolder root]
            SDKManifest.xml
            \References
                  \[config]
                        \[arch]
            \DesignTime
                  \[config]
                        \[arch]
Uzel Popis
Složka Reference Obsahuje binární soubory, které obsahují rozhraní API, proti kterým je možné kódovat. Může se jednat o soubory nebo sestavení Metadata systému Windows (WinMD).
Složka DesignTime Obsahuje soubory, které jsou potřeba pouze v době před spuštěním nebo laděním. Můžou zahrnovat dokumenty XML, knihovny, hlavičky, binární soubory návrhu sady nástrojů, artefakty MSBuild atd.

Dokumenty XML by se ideálně umístily do složky \DesignTime , ale dokumenty XML pro odkazy budou i nadále umístěny společně s referenčním souborem v sadě Visual Studio. Například dokument XML pro referenci\References\[config]\[arch]\sample.dll bude \References\[config]\[arch]\sample.xml a lokalizovaná verze tohoto dokumentu bude \References\[config]\[arch]\[locale]\sample.xml.
Konfigurační složka Můžou existovat jenom tři složky: Debug, Retail a CommonConfiguration. Autoři sady SDK mohou své soubory umístit do commonconfiguration, pokud by se měla spotřebovat stejná sada souborů SDK bez ohledu na konfiguraci, na kterou bude příjemce sady SDK cílit.
Složka Architektura Každá podporovaná složka architektury může existovat. Visual Studio podporuje následující architektury: x86, x64, ARM a neutrální. Poznámka: Win32 mapuje na x86 a AnyCPU mapy na neutrální.

Nástroj MSBuild vypadá pouze v části \CommonConfiguration\neutral pro sady SDK platformy.
SDKManifest.xml Tento soubor popisuje, jak má Sada Visual Studio využívat sadu SDK. Podívejte se na manifest sady SDK pro Windows 8.1:

<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: Hodnota, kterou prohlížeč objektů zobrazuje v seznamu Procházet.

PlatformIdentity: Existence tohoto atributu říká sadě Visual Studio a MSBuild, že sada SDK je sada SDK platformy a že odkazy přidané z tohoto atributu by se neměly kopírovat místně.

TargetFramework: Tento atribut sada Visual Studio používá k zajištění, aby sadu SDK mohly využívat pouze projekty, které cílí na stejné architektury, jako jsou zadané v hodnotě tohoto atributu.

MinVSVersion: Tento atribut používá Visual Studio k využívání pouze sad SDK, které se na něj vztahují.

Odkaz: Tento atribut musí být zadán pouze pro odkazy, které obsahují ovládací prvky. Informace o tom, jak určit, zda odkaz obsahuje ovládací prvky, najdete níže.

Sady SDK rozšíření

Následující části popisují, co je potřeba udělat k nasazení sady SDK rozšíření.

Instalace

Sady SDK rozšíření je možné nainstalovat pro konkrétního uživatele nebo pro všechny uživatele bez zadání klíče registru. Pokud chcete nainstalovat sadu SDK pro všechny uživatele, použijte následující cestu:

%Program Files%\Microsoft SDK<target platform>\v<platform version number>\ExtensionSDKs

Pro konkrétní instalaci pro uživatele použijte následující cestu:

%USERPROFILE%\AppData\Local\Microsoft SDK<target platform>\v<platform version number>\ExtensionSDKs

Pokud chcete použít jiné umístění, musíte udělat jednu ze dvou věcí:

  1. Zadejte ho v klíči registru:

    HKLM\Software\Microsoft\Microsoft\Microsoft SDK<target platform>\v<platform version number>\ExtensionSDKs<SDKName><SDKVersion>\

    a přidejte podklíč (Default), který má hodnotu <path to SDK><SDKName><SDKVersion>.

  2. Přidejte do souboru projektu vlastnost SDKReferenceDirectoryRoot MSBuild. Hodnota této vlastnosti je středník oddělený seznam adresářů, ve kterých jsou umístěny sady SDK rozšíření, na které chcete odkazovat.

Rozložení instalace

Sady SDK rozšíření mají následující rozložení instalace:

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

  1. \<SDKName>\<SDKVersion>: Název a verze sady SDK rozšíření jsou odvozeny z odpovídajících názvů složek v cestě ke kořenovému adresáři sady SDK. Nástroj MSBuild tuto identitu používá k vyhledání sady SDK na disku a Visual Studio tuto identitu zobrazí v okně Vlastnosti a v dialogovém okně Správce odkazů.

  2. Složka Odkazů : binární soubory, které obsahují rozhraní API. Mohou se jednat o soubory nebo sestavení Metadata systému Windows (WinMD).

  3. Složka Redist : soubory potřebné pro modul runtime/ladění a měly by se zabalit jako součást aplikace uživatele. Všechny binární soubory by měly být umístěny pod \redist\<config>\<arch> a binární názvy by měly mít následující formát, aby se zajistila jedinečnost: ]<company>.<produkt>.<účel>.<rozšíření>. Například *Microsoft.Cpp.Build.dll. Všechny soubory s názvy, které mohou kolidovat s názvy souborů z jiných sad SDK (například javascript, css, pri, xaml, png a jpg souborů), by měly být umístěny pod \redist\config>\<arch>\<<sdkname>* s výjimkou souborů přidružených k ovládacím prvkům XAML. Tyto soubory by měly být umístěny pod *\redist\<config>\<arch>\<componentname>\.

  4. Složka DesignTime : soubory, které jsou potřeba pouze v době před spuštěním nebo ladění, a neměly by být zabaleny jako součást aplikace uživatele. Můžou to být dokumenty XML, knihovny, hlavičky, binární soubory pro návrh sady nástrojů, artefakty MSBuild atd. Každá sada SDK, která je určená ke spotřebě nativním projektem, musí mít soubor SDKName.props . Následuje ukázka tohoto typu souboru.

    <?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>
    
    

    Referenční dokumenty XML jsou umístěny spolu s referenčním souborem. Například referenční dokument XML pro sestavení \References\<config>\arch>\<sample.dll je \References\<config>\arch>\<sample.xml a lokalizovaná verze tohoto dokumentu je \References\<config>\arch>\<<locale>\sample.xml.

  5. Složka konfigurace : tři podsložky: Ladění, Maloobchod a CommonConfiguration. Autoři sady SDK mohou své soubory umístit do CommonConfiguration , pokud by se měla spotřebovat stejná sada souborů SDK bez ohledu na konfiguraci cílenou příjemcem sady SDK.

  6. Složka architektury : Podporují se následující architektury: x86, x64, ARM, neutrální. Win32 mapuje na x86 a AnyCPU mapy na neutrální.

SDKManifest.xml

Soubor SDKManifest.xml popisuje, jak má Sada Visual Studio využívat sadu SDK. Následuje příklad:

<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>

Následující seznam obsahuje prvky souboru:

  1. DisplayName: hodnota, která se zobrazí ve Správci odkazů, Průzkumník řešení, Prohlížeč objektů a dalších umístěních v uživatelském rozhraní sady Visual Studio.

  2. ProductFamilyName: Celkový název produktu sady SDK. Například sada Windows Library for JavaScript (WinJS) SDK má název Microsoft.WinJS.1.0 a Microsoft.WinJS.2.0, která patří do stejné řady produktů sady SDK, Microsoft.WinJS. Tento atribut umožňuje sadě Visual Studio a MSBuild toto připojení provést. Pokud tento atribut neexistuje, název sady SDK se použije jako název produktové řady.

  3. FrameworkIdentity: Určuje závislost na jedné nebo více knihovnách komponent systému Windows. Hodnota tohoto atributu se vloží do manifestu aplikace využívajícího. Tento atribut se vztahuje pouze na knihovny komponent systému Windows.

  4. TargetFramework: Určuje sady SDK, které jsou k dispozici ve Správci odkazů a na panelu nástrojů. Toto je středník oddělený seznam monikerů cílové architektury, například .NET Framework, version=v2.0; .NET Framework, version=v4.5.1. Pokud je zadáno několik verzí stejné cílové architektury, správce odkazů použije nejnižší zadanou verzi pro účely filtrování. Pokud je například zadaná hodnota .NET Framework, version=v2.0; .NET Framework, version=v4.5.1, použije Správce odkazů ".NET Framework, version=v2.0". Pokud je zadaný konkrétní profil cílové architektury, bude pro účely filtrování používat pouze tento profil správce odkazů. Pokud je například zadán program Silverlight, version=v4.0, profile=Windows Telefon, filtruje Správce odkazů pouze v profilu windows Telefon; Projekt, který cílí na úplnou architekturu Silverlight 4.0, nevidí sadu SDK ve Správci odkazů.

  5. MinVSVersion: Minimální verze sady Visual Studio.

  6. MaxPlatformVerson: Maximální cílová verze platformy by se měla použít k určení verzí platformy, na kterých vaše sada SDK rozšíření nebude fungovat. Například balíček modulu runtime Microsoft Visual C++ v11.0 by měl odkazovat pouze na projekty Windows 8. Proto je maxPlatformVersion projektu Windows 8 8.0. To znamená, že Správce odkazů vyfiltruje balíček modulu runtime Microsoft Visual C++ pro projekt Windows 8.1 a nástroj MSBuild vyvolá chybu, když na něj projekt Windows 8.1 odkazuje. Poznámka: Tento prvek se podporuje od sady Visual Studio 2013.

  7. AppliesTo: Určuje sady SDK, které jsou k dispozici ve Správci odkazů zadáním příslušných typů projektů sady Visual Studio. Rozpoznávají se devět hodnot: WindowsAppContainer, VisualC, VB, CSharp, WindowsXAML, JavaScript, Managed a Native. Autor sady SDK může používat a (+) nebo (|), nikoli (!). operátory, které určují přesně rozsah typů projektů, které se vztahují na sadu SDK.

    WindowsAppContainer identifikuje projekty pro aplikace pro Windows 8.x Store.

  8. SupportPrefer32Bit: Podporované hodnoty jsou True a False. Výchozí hodnota je Pravda. Pokud je hodnota nastavena na False, nástroj MSBuild vrátí chybu pro projekty Windows 8.x Store (nebo upozornění pro desktopové projekty), pokud projekt, který odkazuje na sadu SDK, má povolenou možnost Prefer32Bit. Další informace o Prefer32Bit naleznete na stránce Sestavení, Návrhář projektu (C#) nebo Kompilovat stránku, Návrhář projektu (Visual Basic).

  9. SupportedArchitectures: Seznam architektur oddělených středníkem, které sada SDK podporuje. Nástroj MSBuild zobrazí upozornění, pokud není podporovaná cílová architektura sady SDK v projektu s využitím. Pokud tento atribut není zadaný, nástroj MSBuild nikdy nezobrazí tento typ upozornění.

  10. SupportsMultipleVersions: Pokud je tento atribut nastaven na Error nebo Warning, NÁSTROJ MSBuild indikuje, že stejný projekt nemůže odkazovat na více verzí stejné řady sad SDK. Pokud tento atribut neexistuje nebo je nastavený na Hodnotu Povolit, nástroj MSBuild nezobrazí tento typ chyby nebo upozornění.

  11. AppX: Určuje cestu k balíčkům aplikací pro knihovnu komponent systému Windows na disku. Tato hodnota se předá registrační komponentě knihovny komponent systému Windows během místního ladění. Zásady vytváření názvů pro název souboru jsou <Společnost>.<Produkt>.<Architektura>.<Konfigurace>.<Verze>.appx. Konfigurace a architektura jsou volitelné v názvu atributu a hodnotě atributu, pokud se nevztahují na knihovnu komponent systému Windows. Tato hodnota se vztahuje pouze na knihovny komponent systému Windows.

  12. CopyRedistToSubDirectory: Určuje, kam se mají soubory ve složce \redist kopírovat vzhledem ke kořenovému adresáři balíčku aplikace (tj . umístění balíčku vybraného v průvodci vytvořením balíčku aplikace) a kořen rozložení modulu runtime. Výchozím umístěním je kořen balíčku aplikace a rozložení F5 .

  13. DependsOn: Seznam identit sady SDK, které definují sady SDK, na kterých tato sada SDK závisí. Tento atribut se zobrazí v podokně podrobností správce odkazů.

  14. MoreInfo: Adresa URL webové stránky, která poskytuje nápovědu a další informace. Tato hodnota se používá v odkazu Další informace v pravém podokně Správce odkazů.

  15. Typ registrace: Určuje registraci WinMD v manifestu aplikace a je vyžadován pro nativní WinMD, který má protějšek implementace DLL.

  16. Odkaz na soubor: Určeno pouze pro odkazy, které obsahují ovládací prvky nebo jsou nativní winMD. Informace o tom, jak určit, zda odkaz obsahuje ovládací prvky, naleznete v části Určení umístění položek panelu nástrojů níže.

Určení umístění položek panelu nástrojů

Element ToolBoxItems schématu SDKManifest.xml určuje názvy ovládacích prvků, zdrojové sestavení a názvy karet panelu nástrojů v sadách SDK platformy i rozšíření. Následující příklady ukazují různé scénáře. To platí pro odkazy WinMD nebo DLL.

Všimněte si, že v sadě Visual Studio 2019 a starších sadě Visual Studio namísto výpisu názvů ovládacích prvků v manifestu sada Visual Studio dynamicky vyčíslilo typy ovládacích prvků v sestaveních sady SDK. Počínaje sadou Visual Studio 2022 se tato funkce už nepodporuje; Položky panelu nástrojů musí být explicitně uvedeny v SDKManifest.xml.

  1. Umístěte ovládací prvky do výchozí kategorie panelu nástrojů.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Toolbox.Default">
        <Item Type = "Namespace.ControlName1" />
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  2. Umístěte ovládací prvky pod konkrétní název kategorie.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory= "MyCategoryName">
        <Item Type = "Namespace.ControlName1" />
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  3. Umístěte ovládací prvky pod konkrétní názvy kategorií.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Graph">
        <Item Type = "Namespace.ControlName1" />
      </ToolboxItems>
      <ToolboxItems VSCategory = "Data">
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  4. Umístěte ovládací prvky do různých názvů kategorií v Blendu a sadě Visual Studio.

    // 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. Zobrazení výčtu konkrétních ovládacích prvků v blendu a sadě Visual Studio se liší.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Graph">
        <Item Type = "Namespace.ControlName1" />
      </ToolboxItems>
      <ToolboxItems BlendCategory = "Controls/sample/Graph">
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  6. Zobrazení výčtu konkrétních ovládacích prvků a jejich umístění do společné cesty sady Visual Studio nebo pouze do skupiny Všechny ovládací prvky.

    <File Reference = "sample.winmd">
      <ToolboxItems VSCategory = "Toolbox.Common">
        <Item Type = "Namespace.ControlName1" />
      </ToolboxItems>
      <ToolboxItems VSCategory = "Toolbox.All">
        <Item Type = "Namespace.ControlName2" />
      </ToolboxItems>
    </File>
    
  7. Zobrazení výčtu konkrétních ovládacích prvků a zobrazení pouze konkrétní sady v nástroji ChooseItems bez toho, aby byly v sadě nástrojů.

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