Tutorial: Creación de un SDK con C# o Visual Basic

En este tutorial, aprenderá a crear un SDK de biblioteca matemática simple mediante Visual C# y, a continuación, empaquetar el SDK como una extensión de Visual Studio (VSIX). Debe completar los procedimientos siguientes:

Requisitos previos

Para seguir este tutorial, debe instalar SDK de Visual Studio. Para obtener más información, vea SDK de Visual Studio.

Para crear el componente SimpleMath de Windows Runtime

  1. En la barra de menús, elija Archivo>Nuevo>Proyecto.

  2. En la lista de plantillas, expanda Visual C# o Visual Basic, elija el nodo Tienda Windows y, a continuación, elija la plantilla Componente de Windows Runtime.

  3. En el cuadro Nombre, especifique SimpleMath y, a continuación, elija el botón Aceptar.

  4. En el Explorador de soluciones, abra el menú de función rápida para el nodo de proyecto SimpleMath y luego elija Propiedades.

  5. Cambie el nombre Class1.cs por Arithmetic.cs y actualícelo para que coincida con el código siguiente:

    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. En el Explorador de soluciones, abra el menú de función rápida del nodo de solución “SimpleMath” y, después, pulse Administrador de configuración.

    Se abre el cuadro de diálogo Administrador de configuración.

  7. En la lista Configuración de soluciones activas, elija Versión.

  8. En la columna Configuración, compruebe que la fila SimpleMath está establecida en Versión y, a continuación, elija el botón Cerrar para aceptar el cambio.

    Importante

    El SDK para el componente SimpleMath incluye solo una configuración. Esta configuración debe ser la compilación de versión, de lo contrario las aplicaciones que usan el componente no pasarán la certificación para Microsoft Store.

  9. En el Explorador de soluciones, abra el menú de función rápida del proyecto SimpleMath y elija Compilar.

Para crear el proyecto de extensión SimpleMathVSIX

  1. En el menú de función rápida del nodo Solución "SimpleMath", elija Agregar>Nuevo proyecto.

  2. En la lista de plantillas, expanda Visual C# o Visual Basic, elija el nodo Extensibilidad y, a continuación, elija la plantilla Proyecto VSIX.

  3. En el cuadro Nombre, especifique SimpleMathVSIX y, a continuación, elija el botón Aceptar.

  4. En el Explorador de soluciones, abra el elemento source.extension.vsixmanifest.

  5. En la barra de menús, elija Ver>Código.

  6. Reemplace el XML existente por el XML siguiente:

    <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. En el Explorador de soluciones, elija el proyecto SimpleMathVSIX.

  8. En la barra de menús, elija Proyecto>Agregar nuevo elemento.

  9. En la lista de elementos comunes, expanda Datos y, a continuación, elija Archivo XML.

  10. En el cuadro Nombre, especifique SDKManifest.xml y, a continuación, elija el botón Agregar.

  11. En el Explorador de soluciones, abra el menú de función rápida de SDKManifest.xml, elija Propiedades y, a continuación, cambie el valor de la propiedad Incluir en VSIX a True.

  12. Sustituye el contenido del archivo por el siguiente código XML:

    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. En el Explorador de soluciones, abra el menú de función rápida del proyecto SimpleMathVSIX, elija Agregar y, a continuación, seleccione Nueva carpeta.

  14. Cambie el nombre de la carpeta a references.

  15. Abra el menú de función rápida de la carpeta Referencias, elija Agregar y, a continuación, elija Nueva carpeta.

  16. Cambie el nombre de la subcarpeta a commonconfiguration, cree una subcarpeta dentro de ella y asigne un nombre a la subcarpeta neutral.

  17. Repita los cuatro pasos anteriores y, esta vez, cambie el nombre de la primera carpeta a redist.

    El proyecto contiene ahora la estructura de carpetas siguiente:

    references\commonconfiguration\neutral
    redist\commonconfiguration\neutral
    
  18. En el Explorador de soluciones, abra el menú de función rápida del proyecto SimpleMath y elija Abrir carpeta en Explorador de archivos.

  19. En el Explorador de archivos, vaya a la carpeta bin\Release, abra el menú de función rápida del archivo SimpleMath.winmd y, a continuación, elija Copiar.

  20. En el Explorador de soluciones, pegue el archivo en la carpeta references\commonconfiguration\neutral del proyecto SimpleMathVSIX.

  21. Repita el paso anterior, pegando el archivo SimpleMath.pri en la carpeta redist\commonconfiguration\neutral del proyecto SimpleMathVSIX.

  22. En el Explorador de soluciones, elija SimpleMath.winmd.

  23. En la barra de menús, elija Ver>Propiedades (Teclado: elija la tecla F4).

  24. En la ventana Propiedades, cambie la propiedad Acción de compilación a Contenido y, a continuación, cambie la propiedad Incluir en VSIX a True.

  25. En el Explorador de soluciones, repita este proceso para SimpleMath.pri.

  26. En el Explorador de soluciones, elija el proyecto SimpleMathVSIX.

  27. En la barra de menús, elija Compilar>Compilar SimpleMathVSIX.

  28. En el Explorador de soluciones, abra el menú de función rápida del proyecto SimpleMathVSIX y elija Abrir carpeta en Explorador de archivos.

  29. En el Explorador de archivos, vaya a la carpeta \bin\Release y, a continuación, ejecute SimpleMathVSIX.vsix para instalarlo.

  30. Elija el botón Instalar, espere a que finalice la instalación y reinicie Visual Studio.

Para crear una aplicación de ejemplo que use la biblioteca de clases

  1. En la barra de menús, elija Archivo>Nuevo>Proyecto.

  2. En la lista de plantillas, expanda Visual C# o Visual Basic, y elija el nodo Tienda Windows.

  3. Elija la plantilla Aplicación vacía, asigne al proyecto el nombre ArithmeticUI y, a continuación, elija el botón Aceptar.

  4. En el Explorador de soluciones, abra el menú de función rápida del proyecto ArithmeticUI y, luego, elija Agregar>Referencia.

  5. En la lista de tipos de referencia, expanda Windows y, a continuación, elija Extensiones.

  6. En el panel de detalles, elija la extensión Biblioteca matemática de WinRT.

    Aparece información adicional sobre el SDK. Puede elegir el vínculo Más información para abrir https://msdn.microsoft.com/, tal como especificó en el archivo SDKManifest.xml anteriormente en este tutorial.

  7. En el cuadro de diálogo Administrador de referencias, seleccione la casilla Biblioteca matemática de WinRT y, a continuación, elija el botón Aceptar.

  8. En la barra de menús, elija Ver>Examinador de objetos.

  9. En la lista Examinar, elija Matemáticas simples.

    Ahora puede explorar lo que está en el SDK.

  10. En el Explorador de soluciones, abra MainPage.xaml y reemplace su contenido por el código XAML siguiente:

    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. Actualice MainPage.xaml.cs para que coincida con el código siguiente:

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. Presione la tecla F5 para ejecutar la aplicación.

  2. En la aplicación, escriba dos números, elija una operación y, a continuación, elija el botón =.

    Aparece el resultado correcto.

    Ha creado y usado correctamente un SDK de extensión.