Sdílet prostřednictvím


Použití sady Windows App SDK v aplikaci Windows Forms (WinForms)

Sada Windows App SDK je dalším vývojem platformy pro vývoj aplikací pro Windows. Toto téma ale ukazuje, jak můžete v aplikaci Windows Forms (WinForms ) používat rozhraní API sady Windows App SDK (a rozhraní API prostředí Windows Runtime).

  • V mnoha případech budete chtít aplikaci WinForms znovu vytvořit ve formě aplikace WinUI 3 . Jen jednou z výhod přechodu na WinUI 3 je mít přístup k systému Fluent Design System (viz také aplikace pro Návrh a kód pro Windows). WinUI 3 je součástí sady Windows App SDK – takže aplikace WinUI 3 může používat i další funkce a rozhraní API sady Windows App SDK. Toto téma se nezabývá procesem migrace aplikace WinForms na WinUI 3.
  • Pokud ale zjistíte, že v aplikaci WinForms používáte funkce WinForms, které ještě nejsou dostupné ve WinUI 3, můžete v aplikaci WinForms používat funkce sady Windows App SDK (například Životní cyklus aplikací, MRT Core, DWriteCore a další). V tomto tématu se dozvíte, jak na to.

A pokud ještě nemáte existující projekt WinForms nebo chcete tento proces vyzkoušet, obsahuje toto téma kroky k vytvoření projektu WinForms, abyste ho mohli sledovat a nakonfigurovat tak, aby volala rozhraní API sady Windows App SDK.

Požadavky

  1. Nástroje pro instalaci sady Windows App SDK.
  2. Toto téma se věnuje rozbaleným i zabaleným aplikacím WinForms. Pokud je vaše aplikace WinForms nerozbalená (což je u aplikací WinForms ve výchozím nastavení), ujistěte se, že jsou nainstalované všechny závislosti pro nerozbalené aplikace (viz průvodce nasazením sady Windows App SDK pro aplikace závislé na rámci balené s externími umístěními nebo nerozbalené aplikace). Rychlým způsobem, jak to udělat, je navštívit nejnovější soubory ke stažení sady Windows App SDK, pak stáhnout a rozbalit a spustit jednu ze stabilních verzí Runtime ke stažení.

Důležité

Verze modulu Runtime, kterou instalujete, musí odpovídat verzi balíčku NuGet Microsoft.WindowsAppSDK Balíčku NuGet, který nainstalujete v pozdějším kroku.

Další informace o termínech nebalený a balenýnajdete v tématu Výhody a nevýhody balení vaší aplikace.

Vytvoření projektu WinForms, pokud ho ještě nemáte

Pokud už máte projekt WinForms, můžete přejít k další části.

  1. V sadě Visual Studio vytvořte nový projekt Windows Forms aplikace C# (jedná se o .NET projekt). Dávejte pozor, abyste zvolili šablonu projektu s přesným názvem aplikace Windows Forms, a ne s aplikací Windows Forms (.NET Framework).
  2. Pojmenujte projekt a přijměte všechny výchozí možnosti.

Teď máte projekt, který sestaví rozbalenou aplikaci WinForms.

Konfigurace projektu WinForms pro podporu sady Windows App SDK

Nejprve upravíme soubor projektu.

  1. V Průzkumníku řešení klikněte pravým tlačítkem na projekt a zvolte Upravit soubor projektu.

  2. Tento krok umožňuje volat rozhraní API prostředí Windows Runtime (WinRT) (včetně rozhraní API sady Windows App SDK). Uvnitř PropertyGroup je TargetFramework element, který je nastaven na hodnotu, například net6.0. Připojte k této cílové hodnotě platformy identifikátor (konkrétně Identifikátor cílové platformy). Pokud například vaše aplikace cílí na Windows 10 verze 2004, použijte následující:

    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
  3. Do elementu PropertyGroup přidejte také element RuntimeIdentifiers , například takto:

    <RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
    
  4. Ve výchozím nastavení není aplikace WinForms zabalená (což znamená, že není nainstalovaná pomocí MSIX). Nepřibalená aplikace musí inicializovat modul runtime sady Windows App SDK, než použije jakoukoli jinou funkci sady Windows App SDK. Můžete to provést automaticky při spuštění aplikace díky automatické inicializaci. Právě jste nastavili vlastnost projektu (také uvnitř elementu PropertyGroup ) WindowsPackageType odpovídajícím způsobem, například takto:

    <WindowsPackageType>None</WindowsPackageType>
    

    Pokud máte pokročilé potřeby (například vlastní zpracování chyb nebo načtení konkrétní verze sady Windows App SDK), pak místo automatické inicializace můžete explicitně volat rozhraní API bootstrapperu – další informace najdete v tématu Použití modulu runtime sady Windows App SDK pro aplikace zabalené s externím umístěním nebo rozbaleným.

  5. Uložte a zavřete soubor projektu.

Dále do projektu nainstalujeme balíček NuGet sady Windows App SDK.

  1. Ve Průzkumníku Řešeníklikněte pravým tlačítkem myši na uzel Závislosti projektu a zvolte Spravovat balíčky NuGet....
  2. V okně Správce balíčků NuGet vyberte záložku Procházet a nainstalujte balíček Nejnovější stabilníMicrosoft.WindowsAppSDK.

Použití některých funkcí sady Windows App SDK v aplikaci WinForms

Tato část nabízí velmi jednoduchý příklad volání rozhraní API sady Windows App SDK z aplikace WinForms. Používá funkci MRT Core (viz Správa prostředků pomocí MRT Core). Pokud tento příklad funguje pro váš projekt WinForms (a pokud jste pro tento názorný postup vytvořili nový, pak to uděláte), můžete postupovat podle těchto kroků.

  1. Otevřete (pomocí příkazu Návrhář zobrazení) a přetáhněte tlačítko a Popisek mimo panelu nástrojů a do návrháře.

  2. Poklikáním na tlačítko tlačítko1 vygenerujte obslužnou rutinu události.

  3. Nyní přidáme kód, který používá třídu ResourceManager v sadě Windows App SDK k načtení řetězcového prostředku.

    1. Přidejte do projektu novou položku souboru Resources (.resw) (ponechte ji s výchozím názvem Resources.resw).

    2. S otevřeným souborem prostředků v editoru vytvořte nový řetězcový prostředek s následujícími vlastnostmi.

      • Název: Zpráva
      • Hodnota: Ahoj, prostředky!
    3. Uložte a zavřete soubor prostředků.

    4. Otevřete Form1.cs (pomocí příkazu Zobrazit kód ) a upravte obslužnou rutinu události tak, aby vypadala takto:

    private void button1_Click(object sender, EventArgs e)
    {
        // Construct a resource manager using the resource index generated during build.
        var manager =
            new Microsoft.Windows.ApplicationModel.Resources.ResourceManager();
    
        // Look up a string in the resources file using the string's name.
        label1.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString;
    }
    
  4. Sestavte projekt a spusťte aplikaci. Kliknutím na tlačítko zobrazíte řetězec Hello, resources!.

Návod

Pokud se při běhu zobrazí okno se zprávou, že aplikace potřebuje konkrétní verzi prostředí Windows App Runtime, a zeptá se, jestli ji chcete nainstalovat, a potom klikněte na ano. Tím přejdete na Nejnovější soubory ke stažení sady Windows App SDK. Další informace najdete v části Požadavky výše.

Další informace o závislosti balíčku Framework, kterou vaše aplikace používá při využití sady Windows App SDK, a o dalších komponentách potřebných pro práci v rozbalené aplikaci naleznete také v části architektura modulu runtime.

Zabalení a nasazení aplikace WinForms pomocí MSIX

Některé funkce a rozhraní API pro Windows (včetně rozhraní API pro oznámení sady Windows App SDK) vyžadují, aby vaše aplikace měla identitu balíčku za běhu (jinými slovy musí být zabalená). Další informace naleznete v části Funkce vyžadující identitu balíku.

  1. V Průzkumníku řešení v sadě Visual Studio klikněte pravým tlačítkem na řešení a zvolte Přidat>Nový projekt....
  2. V dialogovém okně Přidat nový projekt vyhledejte balíček, zvolte šablonu projektu Windows Application Packaging Project a klikněte na Další.
  3. Pojmenujte projekt a klikněte na Vytvořit.
  4. Chceme určit, které aplikace v řešení se mají zahrnout do balíčku. V projektu balení (není projektu WinForms), klikněte pravým tlačítkem myši na uzel závislosti a zvolte Přidat odkaz projektu....
  5. V seznamu projektů v řešení zvolte projekt WinForms a klikněte na OK.
  6. Rozbalte uzel závislostí projektu balíku a aplikací> a ověřte, že je váš projekt WinForms uveden a zvýrazněn tučně. To znamená, že se použije jako výchozí bod balíčku.
  7. Klikněte pravým tlačítkem myši na balicí projekt a zvolte Označit jako výchozí projekt.
  8. Klikněte pravým tlačítkem myši na projekt WinForms a zvolte Upravit soubor projektu.
  9. Odstraňte <WindowsPackageType>None</WindowsPackageType>, uložte a zavřete.
  10. V rozevíracím seznamu Solution Platforms vyberte x64 (místo Any Cpu).
  11. Ověřte, že můžete sestavit a spustit program.

Nyní, když jste zabalili aplikaci WinForms, můžete volat rozhraní API, která vyžadují identitu balíčku. Form1.cs Otevřete (pomocí příkazu Zobrazit kód) a upravte obslužnou rutinu události tak, aby vypadala takto:

private void button1_Click(object sender, EventArgs e)
{
    var notification = new AppNotificationBuilder()
        .AddArgument("action", "viewConversation")
        .AddArgument("conversationId", "9813")
        .AddText("Andrew sent you a picture")
        .AddText("Check this out, The Enchantments in Washington!")
        .BuildNotification();

    AppNotificationManager.Default.Show(notification);
}

Sestavte a spusťte znovu. Klikněte na tlačítko a potvrďte, že se zobrazí informační zpráva. Při zavolání z procesu, který nemá identitu balíčku za běhu, vyvolá rozhraní API oznámení výjimku.

Poznámka:

Kroky v této části vám ukázaly, jak vytvořit balíčkovanou aplikaci . Alternativou je vytvoření aplikace v balíčku s externím umístěním. Připomenutí všech těchto termínů najdete v tématu Výhody a nevýhody balení aplikace.