Exemplarische Vorgehensweise: Erstellen eines SDK mit C# oder Visual Basic

In dieser exemplarischen Vorgehensweise erfahren Sie, wie Sie mithilfe von Visual C# ein einfaches Mathematisches Bibliotheks-SDK erstellen und das SDK dann als Visual Studio-Erweiterung (VSIX) verpacken. Sie müssen die folgenden Vorgehensweisen durchführen.

Voraussetzungen

Um dieser exemplarischen Vorgehensweise folgen zu können, müssen Sie das Visual Studio SDK installieren. Weitere Informationen finden Sie unter Visual Studio SDK.

So erstellen Sie die SimpleMath-Komponente für Windows-Runtime

  1. Klicken Sie in der Menüleiste auf Datei>Neu>Projekt.

  2. Erweitern Sie in der Liste der Vorlagen Visual C# oder Visual Basic, wählen Sie den Windows Store-Node aus, und wählen Sie dann die Vorlage Komponente für Windows-Runtime aus.

  3. Geben Sie im Feld NameSimpleMath ein und wählen Sie die Schaltfläche OK.

  4. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für den Projekt-Node SimpleMath und wählen Sie Eigenschaften aus.

  5. Benennen Sie Class1.cs in Arithmetic.cs um, und aktualisieren Sie sie entsprechend dem folgenden Code:

    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. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für den Lösungsnode „SimpleMath“, und wählen Sie dann Configuration Manager aus.

    Öffnen Sie das Dialogfeld Configuration Manager.

  7. Wählen Sie in der Liste Konfiguration der aktuellen Projektmappe den Eintrag Freigabe aus.

  8. Überprüfen Sie in der Spalte Konfiguration, ob die Zeile SimpleMath auf Release festgelegt ist, und wählen Sie dann die Schaltfläche Schließen aus, um die Änderung anzunehmen.

    Wichtig

    Das SDK für die SimpleMath-Komponente enthält nur eine Konfiguration. Diese Konfiguration muss der Releasebuild sein, oder Apps, die die Komponente verwenden, werden keine Zertifizierung für den Microsoft Store bestehen.

  9. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für den SimpleMath-Projekt-Node, und wählen Sie dann Build aus.

So erstellen Sie das Erweiterungsprojekt SimpleMathVSIX

  1. Wählen Sie im Kontextmenü für den Projektmappennode „SimpleMath“ die Option Neues Projekt>hinzufügen aus.

  2. Erweitern Sie in der Liste der Vorlagen Visual C# oder Visual Basic, wählen Sie den Erweiterungsnode und dann die VSIX-Projektvorlage aus.

  3. Geben Sie im Feld NameSimpleMathVSIX ein und wählen Sie die Schaltfläche OK.

  4. Wählen Sie in Projektmappen-Explorer die Datei source.extension.vsixmanifest aus.

  5. Wählen Sie in der Menüleiste Ansicht>Code aus.

  6. Ersetzen Sie das vorhandene XML durch das folgende 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. Wählen Sie im Projektmappen-Explorer das Projekt SimpleMathVSIX aus.

  8. Wählen Sie in der Menüleiste Projekt>Neues Element hinzufügen aus.

  9. Erweitern Sie in der Liste der allgemeinen ElementeDaten, und wählen Sie dann XML-Datei aus.

  10. Geben Sie im Feld NameSDKManifest.xml an, und wählen Sie dann die Schaltfläche Hinzufügen aus.

  11. Öffnen Sie in Projektmappen-Explorer das Kontextmenü für SDKManifest.xml, wählen Sie Eigenschaften aus, und ändern Sie dann den Wert der Include in VSIX-Eigenschaft in True.

  12. Ersetzen Sie den Inhalt der Datei durch folgendes 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. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für das Projekt SimpleMathVSIX, wählen Sie Hinzufügen und dann Neuer Ordner aus.

  14. Benennen Sie den Ordner in references um.

  15. Öffnen Sie das Kontextmenü für den Ordner Verweise, wählen Sie Hinzufügen und dann Neuer Ordner aus.

  16. Benennen Sie den Unterordner in commonconfiguration um, erstellen Sie einen Unterordner darin, und nennen Sie den Unterordner neutral.

  17. Wiederholen Sie die vorherigen vier Schritte, diesmal wird der erste Ordner umbenannt in redist.

    Die Projekt enthält jetzt die folgende Ordnerstruktur:

    references\commonconfiguration\neutral
    redist\commonconfiguration\neutral
    
  18. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für das Projekt SimpleMath, und wählen Sie die Schaltfläche Ordner in Datei-Explorer öffnen aus.

  19. Navigieren Sie im Datei-Explorer zum Ordner bin\Release, öffnen Sie das Kontextmenü für die Datei SimpleMath.winmd, und wählen Sie dann Kopieren aus.

  20. Fügen Sie in Projektmappen-Explorer die Datei in den Ordner references\commonconfiguration\neutral im SimpleMathVSIX-Projekt ein.

  21. Wiederholen Sie den vorherigen Schritt, indem Sie die Datei SimpleMath.pri in den Ordner redist\commonconfiguration\neutral im Projekt SimpleMathVSIX einfügen.

  22. Wählen Sie im Projektmappen-ExplorerSimpleMath.winmd aus.

  23. Wählen Sie auf der Menüleiste Eigenschaften>ansehen aus (Tastatur: F4-TASTE auswählen).

  24. Ändern Sie im Eigenschaftenfenster die Eigenschaft Buildaktion in Inhalt, und ändern Sie dann die EigenschaftIn VSIX einschließen in True.

  25. Wiederholen Sie diesen Vorgang im Projektmappen-Explorer für SimpleMath.pri.

  26. Wählen Sie im Projektmappen-Explorer das Projekt SimpleMathVSIX aus.

  27. Klicken Sie in der Menüleiste auf Build>SimpleMathVSIX.

  28. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für das Projekt SimpleMathVSIX, und wählen Sie die Schaltfläche Ordner in Datei-Explorer öffnen aus.

  29. Navigieren Sie in Datei-Explorer zum Ordner \bin\Release und führen Sie SimpleMathVSIX.vsix aus, um ihn zu installieren.

  30. Klicken Sie auf die Schaltfläche Installieren, warten Sie, bis die Installation abgeschlossen ist, und starten Sie Visual Studio neu.

Erstellen einer Beispiel-App, die die Klassenbibliothek verwendet

  1. Klicken Sie in der Menüleiste auf Datei>Neu>Projekt.

  2. Erweitern Sie in der Liste der Vorlagen Visual C# oder Visual Basic und wählen Sie den Windows Store-Node aus.

  3. Wählen Sie die Vorlage Leere App aus, nennen Sie das Projekt ArithmeeticUI, und klicken Sie dann auf die Schaltfläche OK.

  4. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für das ArithmeticUI Projekt und klicken Sie dann auf Referenz>hinzufügen.

  5. Erweitern Sie in der Liste der Verweistypen Windows, und wählen Sie dann Erweiterungen aus.

  6. Wählen Sie im Detailbereich die Erweiterung WinRT Math Bibliothek aus.

    Weitere Informationen zu Ihrem SDK werden angezeigt. Sie können den Link Weitere Informationen auswählen, um https://msdn.microsoft.com/ zu öffnen, wie in der SDKManifest.xml-Datei in der exemplarischen Vorgehensweise angegeben.

  7. Aktivieren Sie im Dialogfeld Referenz-Manager das Kontrollkästchen WinRT Math Bibliothek und dann die Schaltfläche OK.

  8. Wählen Sie in der Menüleiste Object Browser>ansehen aus.

  9. Wählen Sie in der Browserliste die Option Simple Math aus.

    Sie können jetzt erkunden, was im SDK enthalten ist.

  10. Öffnen Sie im Projektmappen-Explorer MainPage.xaml und ersetzen Sie den Inhalt durch den folgenden XAML-Code:

    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. Aktualisieren Sie MainPage.xaml.cs so, dass es dem folgenden Code entspricht:

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. Drücken Sie die F5-Taste, um die Anwendung auszuführen.

  2. Geben Sie in der App zwei beliebige Nummern ein, wählen Sie eine Operation aus, und wählen Sie dann die = Schaltfläche aus.

    Das richtige Ergebnis wird angezeigt.

    Sie haben erfolgreich ein Erweiterungs-SDK erstellt und verwendet.