Passo a passo: criar um SDK usando C# ou Visual Basic

Neste passo a passo, você aprenderá a criar um SDK de biblioteca matemática simples usando o Visual C# e, em seguida, empacotar o SDK como uma extensão do Visual Studio (VSIX). Você concluirá os seguintes procedimentos:

Pré-requisitos

Para seguir este passo a passo, você deve instalar o SDK do Visual Studio. Para obter mais informações, confira SDK do Visual Studio.

Para criar o componente SimpleMath do Windows Runtime

  1. Na barra de menus, escolha Arquivo>Novo>Projeto.

  2. Na lista de modelos, expanda Visual C# ou Visual Basic, escolha o nó Windows Store e escolha o modelo Componente do Tempo de Execução do Windows.

  3. Na caixa Nome, especifique SimpleMath e escolha o botão OK.

  4. No Gerenciador de Soluções, abra o menu de atalho do nó do projeto SimpleMath e escolha Propriedades.

  5. Renomeie Class1.cs para Arithmetic.cs e atualize-o para corresponder ao seguinte código:

    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. No Gerenciador de Soluções, abra o menu de atalho do nó Solução 'SimpleMath' e escolha Configuration Manager.

    A caixa de diálogo Configuration Manager é aberta.

  7. Na lista Configuração da solução ativa, escolha Versão.

  8. Na coluna Configuração, verifique se a linha SimpleMath está definida como Versão e escolha o botão Fechar para aceitar a alteração.

    Importante

    O SDK para o componente SimpleMath inclui apenas uma configuração. Essa configuração deve ser a compilação da versão ou os aplicativos que usam o componente não passarão na certificação da Microsoft Store.

  9. No Gerenciador de Soluções, abra o menu de atalho do nó do projeto SimpleMath e escolha Compilar.

Para criar o projeto de extensão SimpleMathVSIX

  1. No menu de atalho do nó Solução 'SimpleMath', escolha Adicionar>Novo Projeto.

  2. Na lista de modelos, expanda Visual C# ou Visual Basic, escolha o nó Extensibilidade e, em seguida, escolha o modelo Projeto VSIX.

  3. Na caixa Nome, especifique SimpleMathVSIX e escolha o botão OK.

  4. No Gerenciador de Soluções, escolha o item source.extension.vsixmanifest.

  5. Na barra de menus, escolha Exibir>Código.

  6. Substitua o XML existente pelo XML a seguir:

    <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. No Gerenciador de Soluções, escolha o projeto SimpleMathVSIX.

  8. Na barra de menus, escolha Projeto>Adicionar Novo Item.

  9. Na lista de Itens Comuns, expanda Dados e escolha Arquivo XML.

  10. Na caixa Nome, especifique SDKManifest.xml e escolha o botão Adicionar.

  11. No Gerenciador de Soluções, abra o menu de atalho para SDKManifest.xml, escolha Propriedades e altere o valor da propriedade Incluir no VSIX para True.

  12. Substitua o conteúdo do arquivo pelo XML a seguir:

    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. No Gerenciador de Soluções, abra o menu de atalho do projeto SimpleMathVSIX, escolha Adicionar e Nova Pasta.

  14. Renomeie a pasta como references.

  15. Abra o menu de atalho da pasta Referências, escolha Adicionar e depois escolha Nova Pasta.

  16. Renomeie a subpasta para commonconfiguration, crie uma subpasta dentro dela e nomeie a subpasta como neutral.

  17. Repita as quatro etapas anteriores, desta vez renomeando a primeira pasta para redist.

    O projeto agora contém a seguinte estrutura de pastas:

    references\commonconfiguration\neutral
    redist\commonconfiguration\neutral
    
  18. No Gerenciador de Soluções, abra o menu de atalho do projeto SimpleMath e selecione Abrir pasta no Explorador de Arquivos.

  19. No Explorador de Arquivos, navegue até a pasta bin\Release , abra o menu de atalho do arquivo SimpleMath.winmd e escolha Copiar.

  20. No Gerenciador de Soluções, cole o arquivo na pasta references\commonconfiguration\neutral no projeto SimpleMathVSIX.

  21. Repita a etapa anterior, colando o arquivo SimpleMath.pri na pasta redist\commonconfiguration\neutral no projeto SimpleMathVSIX.

  22. No Gerenciador de Soluções, escolha SimpleMath.winmd.

  23. Na barra de menus, escolha Exibir>Propriedades (Teclado: escolha a tecla F4).

  24. Na janela Propriedades, altere a propriedade Ação de Compilação para Conteúdo e altere a propriedade Incluir no VSIX como True.

  25. No Gerenciador de Soluções, repita esse processo para SimpleMath.pri.

  26. No Gerenciador de Soluções, escolha o projeto SimpleMathVSIX.

  27. Na barra de menus, escolha Compilar>Compilar SimpleMathVSIX.

  28. No Gerenciador de Soluções, abra o menu de atalho do projeto SimpleMathVSIX e escolha Abrir pasta no Explorador de Arquivos.

  29. No Explorador de Arquivos, navegue até a pasta \bin\Release e execute SimpleMathVSIX.vsix para instalá-la.

  30. Escolha o botão Instalar, aguarde a conclusão da instalação e reinicie o Visual Studio.

Para criar um aplicativo de exemplo que usa a biblioteca de classes

  1. Na barra de menus, escolha Arquivo>Novo>Projeto.

  2. Na lista de modelos, expanda Visual C# ou Visual Basic e escolha o nó Windows Store.

  3. Escolha o modelo Aplicativo em Branco, nomeie o projeto ArithmeticUI e escolha o botão OK.

  4. No Gerenciador de Soluções, abra o menu de atalho do projeto ArithmeticUI e escolha Adicionar>Referência.

  5. Na lista de tipos de referência, expanda Windows e escolha Extensões.

  6. No painel de detalhes, escolha a extensão Biblioteca de Matemática do WinRT.

    Informações adicionais sobre o SDK são exibidas. Você pode escolher o link Mais informações para abrir https://msdn.microsoft.com/, conforme especificado no arquivo SDKManifest.xml anteriormente nesta explicação passo a passo.

  7. Na caixa de diálogo Gerenciador de Referências, marque a caixa de seleção Biblioteca de Matemática do WinRT e escolha o botão OK.

  8. Na barra de menus, escolha Exibir>Navegador de Objetos.

  9. Na lista Procurar, escolha Matemática simples.

    Agora, você pode explorar o que está no SDK.

  10. No Gerenciador de Soluções, abra MainPage.xaml e substitua seu conteúdo pelo seguinte XAML:

    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. Atualize MainPage.xaml.cs para corresponder ao código a seguir:

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. Escolha a tecla F5 para executar o aplicativo.

  2. No aplicativo, insira dois números, escolha uma operação e escolha o = botão.

    O resultado correto é exibido.

    Você criou e usou com êxito um SDK de extensão.