Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
C#/WinRT umožňuje vývojářům, kteří používají .NET, vytvářet vlastní komponenty prostředí Windows Runtime v jazyce C# pomocí projektu knihovny tříd. Vytvořené komponenty je možné využívat v nativních desktopových aplikacích jako odkaz na balíček nebo jako odkaz na projekt s několika úpravami.
Tento názorný postup ukazuje, jak vytvořit jednoduchou komponentu prostředí Windows Runtime pomocí C#/WinRT, distribuovat komponentu jako balíček NuGet a využívat ji z konzolové aplikace C++/WinRT. Úplnou ukázku, která obsahuje kód pro tento článek, najdete v ukázce vytváření obsahu C#/WinRT. Další podrobnosti o vytváření najdete v tématu Vytváření komponent.
Návod k vytváření ovládacích prvků WinUI pomocí jazyka C#/WinRT speciálně pro použití v aplikacích windows App SDK najdete v článku Návod: Vytvoření komponenty jazyka C# s ovládacími prvky WinUI 3 a využití z aplikace windows App SDK jazyka C++
Požadavky
Tento názorný postup vyžaduje následující nástroje a komponenty:
Vytvoření jednoduché komponenty prostředí Windows Runtime pomocí C#/WinRT
Začněte vytvořením nového projektu v sadě Visual Studio. Vyberte šablonu projektu knihovny tříd a pojmenujte projekt AuthoringDemo. V projektu budete muset provést následující doplňky a úpravy:
TargetFrameworkAktualizujte soubor AuthoringDemo.csproj a přidejte do souboruPropertyGroup:<PropertyGroup> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <Platforms>x64</Platforms> </PropertyGroup>Pokud chcete získat přístup k typům prostředí Windows Runtime, musíte v TFM nastavit konkrétní verzi sady Windows SDK. Další podrobnosti o podporované verzi najdete viz .NET 6 a novější: Použijte možnost TFM.
Nainstalujte do projektu balíček NuGet Microsoft.Windows.CsWinRT.
a. V Průzkumníku řešení klikněte pravým tlačítkem na uzel projektu a vyberte Spravovat balíčky NuGet.
b) Vyhledejte balíček NuGet Microsoft.Windows.CsWinRT a nainstalujte nejnovější verzi. Tento průvodce používá C#/WinRT verze 1.4.1.
Přidejte nový
PropertyGroupprvek, který nastavíCsWinRTComponentvlastnost. Určuje, že projekt je komponenta prostředí Windows Runtime,.winmdaby se při sestavování projektu vygeneroval soubor.<PropertyGroup> <CsWinRTComponent>true</CsWinRTComponent> </PropertyGroup>Úplný seznam vlastností projektu C#/ WinRT najdete v dokumentaci NuGet jazyka C#/WinRT.
Třídy modulu runtime můžete vytvářet pomocí knihovny
.cssouborů tříd. Klikněte pravým tlačítkem myši naClass1.cssoubor a přejmenujte ho naExample.cs. Do tohoto souboru přidejte následující kód, který přidá veřejnou vlastnost a metodu do třídy runtime. Nezapomeňte označit všechny třídy, které chcete vystavit v komponentě runtime jakopublic.namespace AuthoringDemo { public sealed class Example { public int SampleProperty { get; set; } public static string SayHello() { return "Hello from your C# WinRT component"; } } }Teď můžete vytvořit projekt, který vygeneruje soubor pro vaši komponentu
.winmd. Klikněte pravým tlačítkem myši na projekt v Průzkumník řešenía poté klikněte na Sestavit. VygenerovanýAuthoringDemo.winmdsoubor se zobrazí ve výstupní složce sestavení.
Vygenerování balíčku NuGet pro komponentu
Většina vývojářů bude chtít distribuovat a sdílet komponentu prostředí Windows Runtime jako balíček NuGet. Další možností je využívat komponentu jako odkaz na projekt. Následující kroky ukazují, jak zabalit komponentu AuthoringDemo . Když balíček vygenerujete, C#/WinRT nakonfiguruje komponentu a hostování sestavení v balíčku tak, aby povolovala spotřebu z nativních aplikací.
Balíček NuGet můžete vygenerovat několika způsoby:
Pokud chcete vygenerovat balíček NuGet při každém sestavení projektu, přidejte do souboru projektu AuthoringDemo následující vlastnost a pak projekt znovu sestavte.
<PropertyGroup> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup>Případně můžete vygenerovat balíček NuGet tak, že v Průzkumníku řešení kliknete pravým tlačítkem na projekt AuthoringDemo a vyberete Balíček.
Při sestavování balíčku by mělo okno Sestavení indikovat, že se balíček AuthoringDemo.1.0.0.nupkg NuGet úspěšně vytvořil. Další podrobnosti o vlastnostech balíčku NuGet pomocí rozhraní příkazového řádku dotnet najdete v tématu Vytvoření balíčku pomocí rozhraní příkazového řádku .NET.
Používání komponenty ve aplikaci C++/WinRT
C#/WinRT vytvořené komponenty prostředí Windows Runtime je možné využívat z libovolného jazyka kompatibilního s prostředím Windows Runtime (WinRT). Následující kroky ukazují, jak volat výše vytvořené komponenty v konzolové aplikaci C++/WinRT.
Poznámka:
Použití komponenty C#/WinRT z aplikací C#/.NET je podporováno odkazem na balíček nebo odkazem na projekt. Tento scénář je ekvivalentem využívání jakékoli běžné knihovny tříd jazyka C# a ve většině případů nezahrnuje aktivaci WinRT. Od verze C#/WinRT 1.3.5 vyžadují odkazy na projekty uživatelů jazyka C# .NET 6.
Přidejte do svého řešení nový projekt konzolové aplikace C++/WinRT . Všimněte si, že tento projekt může být také součástí jiného řešení, pokud to zvolíte.
a. V průzkumníku řešení klikněte pravým tlačítkem na uzel řešení a klikněte na Přidat –>Nový projekt.
b) V dialogovém okně Přidat nový projekt vyhledejte šablonu projektu konzolové aplikace C++/WinRT . Vyberte šablonu a klikněte na Další.
c) Pojmenujte nový projekt CppConsoleApp a klikněte na Vytvořit.
Přidejte odkaz na komponentu AuthoringDemo, buď jako balíček NuGet, nebo odkaz na projekt.
Možnost 1 (odkaz na balíček)::
a. Klikněte pravým tlačítkem na projekt CppConsoleApp a vyberte Spravovat balíčky NuGet. Možná budete muset nakonfigurovat zdroje balíčků tak, aby přidaly odkaz na balíček AuthoringDemo NuGet. Uděláte to tak, že kliknete na ikonu Nastavení ve Správci balíčků NuGet a přidáte zdroj balíčku do příslušné cesty.
b) Po nakonfigurování zdrojů balíčků vyhledejte balíček AuthoringDemo a klikněte na Nainstalovat.
Možnost 2 (odkaz na projekt)::
a. Klikněte pravým tlačítkem na projekt CppConsoleApp a vyberte Přidat –>Referenční. Pod uzlem Projekty přidejte odkaz na projekt AuthoringDemo .
Chcete-li hostovat komponentu, budete muset přidat soubor manifestu pro aktivaci registrace tříd. Další podrobnosti o hostování spravovaných komponent najdete v tématu Hostování spravovaných komponent.
a. Pokud chcete přidat soubor manifestu, znovu klikněte pravým tlačítkem na projekt a zvolte Přidat –> nová položka. Vyhledejte šablonu textového souboru a pojmenujte ji CppConsoleApp.exe.manifest. Vložte následující obsah, který určuje třídy runtime pomocí aktivovatelných položek registrace třídy:
<?xml version="1.0" encoding="utf-8"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity version="1.0.0.0" name="CppConsoleApp"/> <file name="WinRT.Host.dll"> <activatableClass name="AuthoringDemo.Example" threadingModel="both" xmlns="urn:schemas-microsoft-com:winrt.v1" /> </file> </assembly>Soubor manifestu aplikace se vyžaduje pro aplikace, které nejsou zabalené. Pro zabalené aplikace musí spotřebitel aplikace zaregistrovat aktivovatelné třídy v souboru manifestu balíčku
Package.appxmanifest, jak je vysvětleno v Průvodce: Vytvoření komponenty jazyka C# s ovládacími prvky WinUI 3 a jejich použití v aplikaci C++ Windows App SDK.b) Při nasazování projektu upravte projekt tak, aby zahrnoval soubor manifestu ve výstupu. Klikněte na CppConsoleApp.exe.manifest soubor v Průzkumníku řešení a nastavte vlastnost Content na True. Tady je příklad, jak to vypadá.
Otevřete soubor pch.h pod hlavičkovým souborem projektu a přidejte následující řádek kódu, který bude obsahovat vaši komponentu.
#include <winrt/AuthoringDemo.h>Otevřete main.cpp pod zdrojovými soubory projektu a nahraďte ho následujícím obsahem.
#include "pch.h" #include "iostream" using namespace winrt; using namespace Windows::Foundation; int main() { init_apartment(); AuthoringDemo::Example ex; ex.SampleProperty(42); std::wcout << ex.SampleProperty() << std::endl; std::wcout << ex.SayHello().c_str() << std::endl; }Sestavte a spusťte projekt CppConsoleApp . Teď byste měli vidět následující výstup.
Související témata
Windows developer