共用方式為


逐步解說︰使用 C# 或 Visual Basic 建立 SDK

在本逐步解說中,您將學會如何使用 Visual C# 建立簡單的數學程式庫 SDK,然後將 SDK 封裝為 Visual Studio 擴充功能 (VSIX)。 您將完成下列程序:

必要條件

若要依照本逐步解說執行作業,您必須安裝 Visual Studio SDK。 如需詳細資訊,請參閱 Visual Studio SDK

建立 SimpleMath Windows 執行階段元件

  1. 在功能表列上,選擇 [檔案]>[新增]>[專案]

  2. 在範本清單中,展開 Visual C#Visual Basic,選擇 Windows Store 節點,然後選擇 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

    組態管理員對話方塊開啟。

  7. 使用中的方案組態清單中,選擇發行

  8. 組態資料行中,確認 SimpleMath 資料列已設定為發行,然後選擇關閉按鈕以接受變更。

    重要

    SimpleMath 元件的 SDK 只包含一個組態。 此組態必須是發行版本,否則使用該元件的應用程式將無法通過 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 的捷徑功能表,選擇 屬性,然後將包含在 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. 方案總管中,將檔案貼到 SimpleMathVSIX 專案的 references\commonconfiguration\neutral 資料夾中。

  21. 重複上一個步驟,將 SimpleMath.pri 檔案貼到 SimpleMathVSIX 專案的 redist\commonconfiguration\neutral 資料夾中。

  22. 方案總管中,選擇 SimpleMath.winmd

  23. 在功能表列上,選擇檢視>屬性 (鍵盤:選擇 F4 鍵)。

  24. 屬性視窗中,將建置動作屬性變更為內容,然後將包含在 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。