Partager via


Procédure pas à pas : créer un SDK en C# ou Visual Basic

Dans cette procédure pas à pas, vous apprenez à créer un SDK Math Library simple à l’aide de Visual C#, puis à créer un package SDK en tant que Visual Studio Extension (VSIX). Vous devez effectuer les procédures suivantes :

Prérequis

Pour suivre cette procédure pas à pas, vous devez installer le Kit de développement logiciel (SDK) Visual Studio. Pour plus d'informations, consultez SDK Visual Studio.

Pour créer le composant SimpleMath Windows Runtime

  1. Dans la barre de menus, choisissez Fichier>Nouveau>Projet.

  2. Dans la liste des modèles, développez Visual C# ou Visual Basic, sélectionnez le nœud Windows Store, puis sélectionnez le modèle du composant Windows Runtime.

  3. Dans le champ Nom, spécifiez SimpleMath, puis sélectionnez le bouton OK.

  4. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud du projet SimpleMath et sélectionnez Propriétés.

  5. Renommez Class1.cs en Arithmetic.cs et mettez-le à jour pour qu’il corresponde au code suivant :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WinRTMath
    {
        public sealed class Arithmetic
        {
            public float add(float firstNumber, float secondNumber)
            {
                return (firstNumber + secondNumber);
            }
    
            public float subtract(float firstNumber, float secondNumber)
            {
                return (firstNumber - secondNumber);
            }
    
            public float multiply(float firstNumber, float secondNumber)
            {
                return (firstNumber * secondNumber);
            }
    
            public float divide(float firstNumber, float secondNumber)
            {
                return (firstNumber / secondNumber);
            }
        }
    }
    
  6. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud Solution SimpleMath, puis sélectionnez Configuration Manager.

    La zone de dialogue Configuration Manager s’ouvre.

  7. Dans la liste Configuration de la solution active, sélectionnez Valider.

  8. Dans la colonne Configuration, vérifiez que la ligne SimpleMath est définie sur Valider, puis sélectionnez le bouton Fermer pour accepter la modification.

    Important

    Le SDK pour le composant SimpleMath inclut une seule configuration. Cette configuration doit être la version validée ou les applications qui utilisent le composant ne passent pas de certification pour le Microsoft Store.

  9. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud de projet SimpleMath et sélectionnez Version.

Pour créer le projet d’extension SimpleMathVSIX

  1. Dans le menu contextuel pour le nœud Solution SimpleMath, sélectionnez Ajouter>Nouveau projet.

  2. Dans la liste des modèles, développez Visual C# ou Visual Basic, choisissez le nœud d’Extensibilité, puis sélectionnez le modèle Projet VSIX.

  3. Dans le champ Nom, spécifiez SimpleMathVSIX, puis sélectionnez le bouton OK.

  4. Dans Explorateur de solutions, sélectionnez l’élément source.extension.vsixmanifest.

  5. Dans la barre de menus, sélectionnez Afficher>Code.

  6. Remplacez l’XML existant par le XML ci-dessous :

    <PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
      <Metadata>
        <Identity Id="SimpleMath" Version="1.0" Language="en-US" Publisher="[YourName]" />
        <DisplayName>SimpleMath Library</DisplayName>
        <Description xml:space="preserve">Basic arithmetic operations in a WinRT-compatible library. Implemented in C#.</Description>
      </Metadata>
      <Installation Scope="Global" AllUsers="true">
        <InstallationTarget Id="Microsoft.ExtensionSDK" TargetPlatformIdentifier="Windows" TargetPlatformVersion="v8.0" SdkName="SimpleMath" SdkVersion="1.0" />
      </Installation>
      <Prerequisites>
        <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[14.0,16.0]" />
      </Prerequisites>
      <Dependencies>
        <Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="4.5" />
      </Dependencies>
      <Assets>
        <Asset Type="Microsoft.ExtensionSDK" d:Source="File" Path="SDKManifest.xml" />
      </Assets>
    </PackageManifest>
    
  7. Dans Explorateur de solutions, sélectionnez le projet SimpleMathVSIX.

  8. Dans la barre de menus, choisissez Projet>Ajouter un nouvel élément.

  9. Dans la liste des Eléments communs, développez Données, puis sélectionnez Fichier XML.

  10. Dans le champ Nom, spécifiez SDKManifest.xml, puis sélectionnez le bouton Ajouter.

  11. Dans Explorateur de solutions, ouvrez le menu contextuel pour SDKManifest.xml, sélectionnez Propriétés, puis remplacez la valeur de la propriété Inclure dans VSIX par True.

  12. Remplacez le contenu du fichier par le code XML suivant :

    C#

    <FileList
      DisplayName="WinRT Math Library (CS)"
      MinVSVersion="11.0"
      TargetFramework=".NETCore,version=v4.5"
      AppliesTo="WindowsAppContainer"
      SupportsMultipleVersions="Error"
      MoreInfo="https://msdn.microsoft.com/">
    </FileList>
    

    Visual Basic

    <FileList
      DisplayName="WinRT Math Library (VB)"
      MinVSVersion="11.0"
      TargetFramework=".NETCore,version=v4.5"
      AppliesTo="WindowsAppContainer"
      SupportsMultipleVersions="Error"
      MoreInfo="https://msdn.microsoft.com/">
    </FileList>
    
  13. Dans Explorateur de solutions, ouvrez le menu contextuel du projet SimpleMathVSIX, sélectionnez Ajouter, puis Nouveu dossier.

  14. Renommez le dossier en references.

  15. Ouvrez le menu contextuel du dossier Références, sélectionnez Ajouter, puis Nouveau dossier.

  16. Renommez le sous-dossier en commonconfiguration, créez un sous-dossier dans celui-ci et nommez-le sous-dossier neutral.

  17. Répétez les quatre étapes précédentes, cette fois en renommant le premier dossier en redist.

    Le projet maintenant contient la structure de dossier suivante :

    references\commonconfiguration\neutral
    redist\commonconfiguration\neutral
    
  18. Dans Explorateur de solutions, ouvrez le menu contextuel pour le projet SimpleMath, puis sélectionnez Open Folder dans Explorateur de solutions.

  19. Dans Explorateur de fichiers, accédez au dossier bin\Release, ouvrez le menu contextuel du fichier SimpleMath.winmd, puis sélectionnez Copier.

  20. Dans Explorateur de solutions, collez le fichier dans le dossier references\commonconfiguration\neutral dans le projet SimpleMathVSIX.

  21. Répétez l’étape précédente en collant le fichier SimpleMath.pri dans le dossier redist\commonconfiguration\neutral dans le projet SimpleMathVSIX.

  22. Dans Explorateur de solutions, sélectionnez SimpleMath.winmd.

  23. Dans la barre des menus, sélectionnez Afficher>Propriétés (Clavier : sélectionnez la touche F4).

  24. Dans la fenêtre Propriétés, remplacez la propriété Construire Action par Contenu, puis remplacez la propriété Include dans VSIX par True.

  25. Dans Explorateur de solutions, répétez ce processus pour SimpleMath.pri.

  26. Dans Explorateur de solutions, sélectionnez le projet SimpleMathVSIX.

  27. Dans la barre des menus, sélectionnez Construire>Construire SimpleMathVSIX.

  28. Dans Explorateur de solutions, ouvrez le menu contextuel pour le projet SimpleMathVSIX, puis sélectionnez Open Folder dans Explorateur de fichiers.

  29. Dans Explorateur de fichiers, naviguez vers le dossier \bin\Release, puis exécutez SimpleMathVSIX.vsix pour l’installer.

  30. Sélectionnez le bouton Installer, attendez la fin de l’installation, puis redémarrez Visual Studio.

Pour créer un exemple d’application qui utilise la bibliothèque de classes

  1. Dans la barre de menus, choisissez Fichier>Nouveau>Projet.

  2. Dans la liste des modèles, développez Visual C# ou Visual Basic, puis sélectionnez le nœud de Windows Store.

  3. Sélectionnez le modèle Application vide, nommez le projet ArithmeticUI, puis sélectionnez le bouton OK.

  4. Dans Explorateur de solutions, ouvrez le menu contextuel pour le projet ArithmeticUI, puis sélectionnez Ajouter>Référence.

  5. Dans la liste des types de référence, développez Windows, puis sélectionnez Extensions.

  6. Dans le volet Détails, sélectionnez l’extension WinRT Math Library.

    Des informations supplémentaires sur votre SDK s’affichent. Vous pouvez sélectionner le lien Plus d’informations pour ouvrir https://msdn.microsoft.com/, comme vous l’avez spécifié dans le fichier SDKManifest.xml précédemment dans cette procédure pas à pas.

  7. Dans la boîte de dialogue Reference manager, sélectionnez la case WinRT Math Library, puis sélectionnez le bouton OK.

  8. Dans la barre de menus, sélectionnez Afficher>Object Browser.

  9. Dans la liste Parcourir, sélectionnez Simple Math.

    Vous pouvez maintenant explorer ce qui se trouve dans SDK.

  10. Dans Explorateur de solutions, ouvrez MainPage.xaml et remplacez son contenu par le code XAML suivant :

    C#

    <Page
        x:Class="ArithmeticUI.MainPage"
        IsTabStop="False"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:SimpleMath"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
            <TextBox x:Name="_firstNumber" HorizontalAlignment="Left" Margin="414,370,0,0" TextWrapping="Wrap" Text="First Number" VerticalAlignment="Top" Height="32" Width="135" TextAlignment="Center"/>
            <TextBox x:Name="_secondNumber" HorizontalAlignment="Left" Margin="613,370,0,0" TextWrapping="Wrap" Text="Second Number" VerticalAlignment="Top" Height="32" Width="135" TextAlignment="Center"/>
            <Button Content="+" HorizontalAlignment="Left" Margin="557,301,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="-" HorizontalAlignment="Left" Margin="557,345,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="*" HorizontalAlignment="Left" Margin="557,389,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="/" HorizontalAlignment="Left" Margin="557,433,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="=" HorizontalAlignment="Left" Margin="755,367,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnResultsClick"/>
            <TextBox x:Name="_result" HorizontalAlignment="Left" Margin="809,370,0,0" TextWrapping="Wrap" Text="Result" VerticalAlignment="Top" Height="32" Width="163" TextAlignment="Center" IsReadOnly="True"/>
        </Grid>
    </Page>
    

    Visual Basic

    <Page
        x:Class="ArithmeticUI.MainPage"
        IsTabStop="False"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:SimpleMath"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
            <TextBox x:Name="_firstNumber" HorizontalAlignment="Left" Margin="414,370,0,0" TextWrapping="Wrap" Text="First Number" VerticalAlignment="Top" Height="32" Width="135" TextAlignment="Center"/>
            <TextBox x:Name="_secondNumber" HorizontalAlignment="Left" Margin="613,370,0,0" TextWrapping="Wrap" Text="Second Number" VerticalAlignment="Top" Height="32" Width="135" TextAlignment="Center"/>
            <Button Content="+" HorizontalAlignment="Left" Margin="557,301,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="-" HorizontalAlignment="Left" Margin="557,345,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="*" HorizontalAlignment="Left" Margin="557,389,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="/" HorizontalAlignment="Left" Margin="557,433,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnOperatorClick"/>
            <Button Content="=" HorizontalAlignment="Left" Margin="755,367,0,0" VerticalAlignment="Top" Height="39" Width="49" Click="OnResultsClick"/>
            <TextBox x:Name="_result" HorizontalAlignment="Left" Margin="809,370,0,0" TextWrapping="Wrap" Text="Result" VerticalAlignment="Top" Height="32" Width="163" TextAlignment="Center" IsReadOnly="True"/>
        </Grid>
    </Page>
    
  11. Mettez à jour MainPage.xaml.cs afin qu’il corresponde au code suivant :

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238

namespace ArithmeticUI
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public static string operation = null;

        public MainPage()
        {
            this.InitializeComponent();
        }

        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
        /// property is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        /// <summary>
        /// Sets the operator chosen by the user
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnOperatorClick(object sender, RoutedEventArgs e)
        {
            operation = (sender as Button).Content.ToString();
        }

        /// <summary>
        /// Calls the SimpleMath SDK to do simple arithmetic
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnResultsClick(object sender, RoutedEventArgs e)
        {
            try
            {
                float firstNumber = float.Parse(this._firstNumber.Text);
                float secondNumber = float.Parse(this._secondNumber.Text);

                SimpleMath.Arithmetic math = new SimpleMath.Arithmetic();

                switch (operation)
                {
                    case "+":
                        this._result.Text = (math.add(firstNumber, secondNumber)).ToString();
                        break;
                    case "-":
                        this._result.Text = (math.subtract(firstNumber, secondNumber)).ToString();
                        break;
                    case "*":
                        this._result.Text = (math.multiply(firstNumber, secondNumber)).ToString();
                        break;
                    case "/":
                        this._result.Text = (math.divide(firstNumber, secondNumber)).ToString();
                        break;
                    default:
                        this._result.Text = "Choose operator";
                        break;
                }
            }
            catch
            {
                this._result.Text = "Enter valid #";
            }
        }
    }
}
  1. Sélectionnez la touche F5 pour exécuter l’application.

  2. Dans l’application, entrez deux nombres, sélectionnez une opération, puis sélectionnez le bouton =.

    Le résultat correct s’affiche.

    Vous avez correctement créé et utilisé un SDK d’extension.