Procedura dettagliata: Creare un SDK con C# o Visual Basic
In questa procedura dettagliata si apprenderà come creare un SEMPLICE SDK per la libreria matematica usando Visual C# e quindi creare il pacchetto dell'SDK come estensione di Visual Studio (VSIX). Verranno completate le procedure seguenti:
Prerequisiti
Per seguire questa procedura dettagliata, è necessario installare Visual Studio SDK. Per altre informazioni, vedere Visual Studio SDK.
Per creare il componente SimpleMath Windows Runtime
Nella barra dei menu scegliere File>Nuovo>Progetto.
Nell'elenco dei modelli espandere Visual C# o Visual Basic, scegliere il nodo Windows Store e quindi scegliere il modello Componente Windows Runtime.
Nella casella Nome specificare SimpleMath e quindi scegliere il pulsante OK .
In Esplora soluzioni aprire il menu di scelta rapida per il nodo del progetto SimpleMath e quindi scegliere Proprietà.
Rinominare Class1.cs in Arithmetic.cs e aggiornarla in modo che corrisponda al codice seguente:
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); } } }
In Esplora soluzioni aprire il menu di scelta rapida per il nodo Soluzione 'SimpleMath' e quindi scegliere Configuration Manager.
Verrà visualizzata la finestra di dialogo Gestione configurazione .
Nell'elenco Configurazione soluzione attiva scegliere Rilascio.
Nella colonna Configurazione verificare che la riga SimpleMath sia impostata su Release e quindi scegliere il pulsante Chiudi per accettare la modifica.
Importante
L'SDK per il componente SimpleMath include una sola configurazione. Questa configurazione deve essere la build di versione o le app che usano il componente non passeranno la certificazione per Microsoft Store.
In Esplora soluzioni aprire il menu di scelta rapida per il nodo del progetto SimpleMath e quindi scegliere Compila.
Per creare il progetto di estensione SimpleMathVSIX
Nel menu di scelta rapida per il nodo Soluzione 'SimpleMath' scegliere Aggiungi>nuovo progetto.
Nell'elenco dei modelli espandere Visual C# o Visual Basic, scegliere il nodo Estendibilità e quindi scegliere il modello progetto VSIX.
Nella casella Nome specificare SimpleMathVSIX e quindi scegliere il pulsante OK .
In Esplora soluzioni scegliere l'elemento source.extension.vsixmanifest.
Sulla barra dei menu scegliere Visualizza>Codice.
Sostituire il codice XML esistente con il codice XML seguente:
<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>
In Esplora soluzioni scegliere il progetto SimpleMathVSIX.
Nella barra dei menu scegliere Progetto>Aggiungi nuovo elemento.
Nell'elenco elementi comuni espandere Dati e quindi scegliere File XML.
Nella casella Nome specificare
SDKManifest.xml
e quindi scegliere il pulsante Aggiungi.In Esplora soluzioni aprire il menu di scelta rapida per
SDKManifest.xml
, scegliere Proprietà e quindi modificare il valore della proprietà Includi in VSIX su True.Sostituisci il contenuto del file con il codice XML riportato di seguito:
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>
In Esplora soluzioni aprire il menu di scelta rapida per il progetto SimpleMathVSIX, scegliere Aggiungi e quindi scegliere Nuova cartella.
Rinominare la cartella in
references
.Aprire il menu di scelta rapida per la cartella Riferimenti , scegliere Aggiungi e quindi scegliere Nuova cartella.
Rinominare la sottocartella in
commonconfiguration
, creare una sottocartella al suo interno e denominare la sottocartellaneutral
.Ripetere i quattro passaggi precedenti, questa volta rinominare la prima cartella in
redist
.Il progetto contiene ora la struttura di cartelle seguente:
references\commonconfiguration\neutral redist\commonconfiguration\neutral
In Esplora soluzioni aprire il menu di scelta rapida per il progetto SimpleMath e quindi scegliere Apri cartella in Esplora file.
In Esplora file passare alla cartella bin\Release, aprire il menu di scelta rapida per il file SimpleMath.winmd e quindi scegliere Copia.
In Esplora soluzioni incollare il file nella cartella references\commonconfiguration\neutral nel progetto SimpleMathVSIX.
Ripetere il passaggio precedente incollando il file SimpleMath.pri nella cartella redist\commonconfiguration\neutral nel progetto SimpleMathVSIX .
In Esplora soluzioni scegliere SimpleMath.winmd.
Sulla barra dei menu scegliere Visualizza>proprietà (tastiera: scegliere il tasto F4).
Nella finestra Proprietà modificare la proprietà Azione di compilazione in Contenuto e quindi impostare la proprietà Includi in VSIX su True.
In Esplora soluzioni ripetere questo processo per SimpleMath.pri.
In Esplora soluzioni scegliere il progetto SimpleMathVSIX.
Nella barra dei menu scegliere Compila>sempliceMathVSIX.
In Esplora soluzioni aprire il menu di scelta rapida per il progetto SimpleMathVSIX e quindi scegliere Apri cartella in Esplora file.
In Esplora file passare alla cartella \bin\Release e quindi eseguire
SimpleMathVSIX.vsix
per installarla.Scegliere il pulsante Installa , attendere il completamento dell'installazione e quindi riavviare Visual Studio.
Per creare un'app di esempio che usa la libreria di classi
Nella barra dei menu scegliere File>Nuovo>Progetto.
Nell'elenco dei modelli espandere Visual C# o Visual Basic e quindi scegliere il nodo Windows Store .
Scegliere il modello App vuota, assegnare al progetto il nome ArithmeticUI e quindi scegliere il pulsante OK .
In Esplora soluzioni aprire il menu di scelta rapida per il progetto AritmeticUI e quindi scegliere Aggiungi>riferimento.
Nell'elenco dei tipi di riferimento espandere Windows e quindi scegliere Estensioni.
Nel riquadro dei dettagli scegliere l'estensione Libreria matematica WinRT.
Vengono visualizzate informazioni aggiuntive sull'SDK. È possibile scegliere il collegamento Altre informazioni per aprire
https://msdn.microsoft.com/
, come specificato nel file di SDKManifest.xml in precedenza in questa procedura dettagliata.Nella finestra di dialogo Gestione riferimenti selezionare la casella di controllo Libreria matematica WinRT e quindi scegliere il pulsante OK.
Sulla barra dei menu scegliere Visualizza>visualizzatore oggetti.
Nell'elenco Sfoglia scegliere Semplice matematica.
È ora possibile esplorare le informazioni disponibili nell'SDK.
In Esplora soluzioni aprire MainPage.xaml e sostituirne il contenuto con il codice XAML seguente:
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>
Aggiornare MainPage.xaml.cs in modo che corrisponda al codice seguente:
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 #";
}
}
}
}
Scegliere il tasto F5 per eseguire l'app.
Nell'app immettere due numeri, scegliere un'operazione e quindi scegliere il = pulsante.
Viene visualizzato il risultato corretto.
È stato creato e usato un SDK di estensione.