Пошаговое руководство. Создание пакета SDK с помощью C# или Visual Basic

В этом пошаговом руководстве вы узнаете, как создать простой пакет SDK для библиотеки математики с помощью Visual C# и упаковать пакет SDK в виде расширения Visual Studio (VSIX). Выполните следующие процедуры:

Необходимые компоненты

Для выполнения этого пошагового руководства необходимо установить пакет SDK для Visual Studio. См. дополнительные сведения о пакете SDK для Visual Studio.

Создание компонента SimpleMath среда выполнения Windows

  1. В строке меню выберите Файл >Создать >Проект.

  2. В списке шаблонов разверните Visual C# или Visual Basic, выберите узел Магазина Windows, а затем выберите шаблон компонента среда выполнения Windows.

  3. В поле "Имя" укажите SimpleMath и нажмите кнопку "ОК".

  4. В Обозреватель решений откройте контекстное меню узла проекта SimpleMath и выберите "Свойства".

  5. Переименуйте Class1.cs, чтобы Arithmetic.cs и обновите его, чтобы он соответствовал следующему коду:

    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. В Обозреватель решений откройте контекстное меню узла Решения SimpleMath и выберите Configuration Manager.

    Откроется диалоговое окно Configuration Manager .

  7. В списке конфигурации активного решения выберите "Выпуск".

  8. В столбце конфигурации убедитесь, что для строки SimpleMath задано значение Release, а затем нажмите кнопку "Закрыть ", чтобы принять это изменение.

    Внимание

    Пакет SDK для компонента SimpleMath включает только одну конфигурацию. Эта конфигурация должна быть сборкой выпуска или приложениями, которые используют компонент, не будут проходить сертификацию для Microsoft Store.

  9. В Обозреватель решений откройте контекстное меню узла проекта SimpleMath и выберите "Сборка".

Создание проекта расширения SimpleMathVSIX

  1. В контекстном меню узла Решения SimpleMath нажмите кнопку "Добавить>новый проект".

  2. В списке шаблонов разверните Visual C# или Visual Basic, выберите узел расширяемости и выберите шаблон проекта VSIX.

  3. В поле "Имя" укажите SimpleMathVSIX и нажмите кнопку "ОК".

  4. В Обозреватель решений выберите элемент source.extension.vsixmanifest.

  5. В строке меню выберите Вид>Код.

  6. Замените существующий XML следующим XML-кодом:

    <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. В Обозреватель решений выберите проект SimpleMathVSIX.

  8. В строке меню выберите Проект>Добавить новый элемент.

  9. В списке распространенных элементов разверните узел "Данные" и выберите XML-файл.

  10. В поле "Имя" укажите SDKManifest.xmlи нажмите кнопку "Добавить".

  11. В Обозреватель решений откройте контекстное меню SDKManifest.xml, выберите "Свойства", а затем измените значение include в свойстве VSIX на True.

  12. Замените содержимое файла следующим 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. В Обозреватель решений откройте контекстное меню проекта SimpleMathVSIX, нажмите кнопку "Добавить", а затем выберите "Создать папку".

  14. Переименуйте папку в references.

  15. Откройте контекстное меню папки "Ссылки" , нажмите кнопку "Добавить" и выберите " Создать папку".

  16. Переименуйте вложенную папку, создайте в ней вложенную папку commonconfigurationи назовите вложенную папку neutral.

  17. Повторите предыдущие четыре шага, на этот раз переименовав первую папку redistв .

    Теперь проект содержит следующую структуру папок:

    references\commonconfiguration\neutral
    redist\commonconfiguration\neutral
    
  18. В Обозреватель решений откройте контекстное меню проекта SimpleMath и выберите команду "Открыть папку" в проводник.

  19. В проводник перейдите в папку bin\Release, откройте контекстное меню файла SimpleMath.winmd и нажмите кнопку "Копировать".

  20. В Обозреватель решений вставьте файл в папку references\commonconfiguration\neutral в проекте SimpleMathVSIX.

  21. Повторите предыдущий шаг, вставив файл SimpleMath.pri в папку redist\commonconfiguration\neutral в проекте SimpleMathVSIX .

  22. В Обозреватель решений выберите SimpleMath.winmd.

  23. В строке меню выберите "Просмотреть>свойства " (клавиатура: выберите клавишу F4 ).

  24. В окне свойств измените свойство действия сборки на Content, а затем измените свойство Include в свойстве VSIX на True.

  25. В Обозреватель решений повторите этот процесс для SimpleMath.pri.

  26. В Обозреватель решений выберите проект SimpleMathVSIX.

  27. В строке меню выберите "Сборка>simpleMathVSIX".

  28. В Обозреватель решений откройте контекстное меню проекта SimpleMathVSIX и выберите команду "Открыть папку" в проводник.

  29. В проводник перейдите в папку \bin\Release, а затем запустите SimpleMathVSIX.vsix ее для установки.

  30. Нажмите кнопку "Установить ", дождитесь завершения установки и перезапустите Visual Studio.

Создание примера приложения, использующего библиотеку классов

  1. В строке меню выберите Файл >Создать >Проект.

  2. В списке шаблонов разверните visual C# или Visual Basic и выберите узел Магазина Windows.

  3. Выберите шаблон пустого приложения , назовите проект ArithmeticUI и нажмите кнопку "ОК ".

  4. В Обозреватель решений откройте контекстное меню проекта ArithmeticUI и нажмите кнопку "Добавить>ссылку".

  5. В списке ссылочных типов разверните узел Windows и выберите "Расширения".

  6. В области сведений выберите расширение библиотеки математики WinRT.

    Появится дополнительная информация о пакете SDK. Вы можете выбрать ссылку "Дополнительные сведения" , чтобы открыть https://msdn.microsoft.com/ее, как указано в файле SDKManifest.xml ранее в этом пошаговом руководстве.

  7. В диалоговом окне "Диспетчер ссылок" выберите проверка библиотеку математики WinRT, а затем нажмите кнопку "ОК".

  8. В строке меню выберите просмотр>браузера объектов.

  9. В списке "Обзор" выберите "Простая математика".

    Теперь вы можете изучить, что есть в пакете SDK.

  10. В Обозреватель решений откройте MainPage.xaml и замените его содержимое следующим кодом 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. Обновите MainPage.xaml.cs , чтобы соответствовать следующему коду:

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. Выберите клавишу F5 для запуска приложения.

  2. В приложении введите два числа, выберите операцию и нажмите кнопку = .

    Отображается правильный результат.

    Вы успешно создали и использовали пакет SDK расширения.