逐步解說︰使用 C# 或 Visual Basic 建立 SDK
在本逐步解說中,您將學會如何使用 Visual C# 建立簡單的數學程式庫 SDK,然後將 SDK 封裝為 Visual Studio 擴充功能 (VSIX)。 您將完成下列程序:
必要條件
若要依照本逐步解說執行作業,您必須安裝 Visual Studio SDK。 如需詳細資訊,請參閱 Visual Studio SDK。
建立 SimpleMath Windows 執行階段元件
在功能表列上,選擇 [檔案]>[新增]>[專案]。
在範本清單中,展開 Visual C# 或 Visual Basic,選擇 Windows Store 節點,然後選擇 Windows 執行階段元件範本。
在名稱方塊,指定 SimpleMath,然後選擇確定按鈕。
在方案總管中,開啟 SimpleMath 屬性節點的捷徑功能表,然後選擇屬性。
將 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); } } }
在方案總管中,開啟方案 [SimpleMath] 節點的捷徑功能表,然後選擇 Configuration Manager。
組態管理員對話方塊開啟。
在使用中的方案組態清單中,選擇發行。
在組態資料行中,確認 SimpleMath 資料列已設定為發行,然後選擇關閉按鈕以接受變更。
重要
SimpleMath 元件的 SDK 只包含一個組態。 此組態必須是發行版本,否則使用該元件的應用程式將無法通過 Microsoft Store 的認證。
在方案總管中,開啟 SimpleMath 專案節點的捷徑功能表,然後選擇建置。
建立 SimpleMathVSIX 擴充功能專案
在方案 [SimpleMath]節點的捷徑功能表上,選擇新增>新增專案。
在範本清單中,展開 Visual C# 或 Visual Basic,選擇擴充性節點,然後選擇 VSIX 專案 範本。
在名稱方塊中,指定 SimpleMathVSIX,然後選擇確定按鈕。
在方案總管中,選擇 source.extension.vsixmanifest 項目。
在功能表列上依序選擇 [檢視]>[程式碼]。
將現有 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>
在方案總管中,選擇 SimpleMathVSIX 專案。
在功能表列中,選擇 [專案]>[加入新項目]。
在共同項目清單中,展開資料,然後選擇 XML 檔案。
在名稱方塊中,指定
SDKManifest.xml
,然後選擇新增按鈕。在方案總管中,開啟
SDKManifest.xml
的捷徑功能表,選擇 屬性,然後將包含在 VSIX 屬性的值變更為 True。以下列 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>
在方案總管中,開啟 SimpleMathVSIX 專案的捷徑功能表,選擇新增,然後選擇新增資料夾。
將資料夾重新命名為
references
。開啟參考資料夾的捷徑功能表,選擇新增,然後選擇新增資料夾。
將子資料夾重新命名為
commonconfiguration
,在其中建立子資料夾,然後將子資料夾 命名為neutral
。重複上述四個步驟,這次將第一個資料夾重新命名為
redist
。專案現在包含下列資料夾結構:
references\commonconfiguration\neutral redist\commonconfiguration\neutral
在方案總管中,開啟 SimpleMath 專案的捷徑功能表,然後選擇在檔案總管中開啟資料夾。
在檔案總管中,瀏覽至 bin\Release 資料夾,開啟 SimpleMath.winmd 檔案的捷徑功能表,然後選擇複製。
在方案總管中,將檔案貼到 SimpleMathVSIX 專案的 references\commonconfiguration\neutral 資料夾中。
重複上一個步驟,將 SimpleMath.pri 檔案貼到 SimpleMathVSIX 專案的 redist\commonconfiguration\neutral 資料夾中。
在方案總管中,選擇 SimpleMath.winmd。
在功能表列上,選擇檢視>屬性 (鍵盤:選擇 F4 鍵)。
在屬性視窗中,將建置動作屬性變更為內容,然後將包含在 VSIX 屬性變更為 True。
在方案總管中,針對 SimpleMath.pri 重複此程序。
在方案總管中,選擇 SimpleMathVSIX 專案。
在功能表列上,選擇建置>建置 SimpleMathVSIX。
在方案總管中,開啟 SimpleMathVSIX 專案的捷徑功能表,然後選擇在檔案總管中開啟資料夾。
在檔案總管中,瀏覽至 \bin\Release 資料夾,然後執行
SimpleMathVSIX.vsix
將其安裝。選擇安裝按鈕,等待安裝完成,然後重新啟動 Visual Studio。
建立使用類別庫的範例應用程式
在功能表列上,選擇 [檔案]>[新增]>[專案]。
在範本清單中,展開 Visual C# 或 Visual Basic,然後選擇 Windows 市集節點。
選擇空白應用程式範本,將專案命名為 ArithmeticUI,然後選擇確定按鈕。
在方案總管中,開啟 ArithmeticUI 專案的捷徑功能表,然後選擇新增>參考。
在參考類型清單中,展開 Windows,然後選擇擴充功能。
在詳細資料窗格中,選擇 WinRT 數學程式庫擴充功能。
顯示有關 SDK 的其他資訊 您可以選擇更多資訊連結來開啟
https://msdn.microsoft.com/
,正如您在本逐步解說前面的 SDKManifest.xml 檔案中指定的那樣。在參考管理員對話框中,選取 WinRT 數學程式庫核取方塊,然後選擇確定按鈕。
在功能表列上選擇檢視>物件瀏覽器。
在瀏覽清單中,選擇簡單數學。
您現在可以探索 SDK 的內容。
在方案總管中,開啟 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>
更新 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 #";
}
}
}
}
選擇 F5 鍵以執行應用程式。
在應用程式中,輸入任兩個數字、選擇作業,然後選擇 = 按鈕。
顯示正確結果。
您已成功建立及使用擴充功能 SDK。