Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A C#/WinRT lehetővé teszi a .NET használó fejlesztők számára, hogy saját Windows-futtatókörnyezet-összetevőket írjanak c# nyelven egy osztálytárprojekt használatával. A létrehozott összetevők felhasználhatók natív asztali alkalmazásokban csomaghivatkozásként vagy project hivatkozásként néhány módosítással.
Ez az útmutató bemutatja, hogyan hozhat létre egy egyszerű Windows-futtatókörnyezet összetevőt a C#/WinRT használatával, hogyan terjesztheti az összetevőt NuGet-csomagként, és hogyan használhatja fel az összetevőt egy C++/WinRT-konzolalkalmazásból. A cikkhez írt kód teljes mintáját lásd a C#/WinRT szerzői minta. A komponens-szerkesztéssel kapcsolatos további részletekért lásd: Komponensek szerkesztése.
A C#/WinRT-vel történő WinUI 3 vezérlők létrehozásáról és Windows App SDK alkalmazásokban való használatáról szóló útmutatóért tekintse meg a cikket: Útmutató: C# összetevő létrehozása WinUI vezérlőkkel és C++ Windows App SDK alkalmazásból való használat
Előfeltételek
Ehhez az útmutatóhoz a következő eszközökre és összetevőkre van szükség:
- Visual Studio 2022-ben vagy újabb verzióban
- .NET 8.0 SDK (LTS) vagy újabb
- C++/WinRT VSIX C++/WinRT project-sablonokhoz
Egyszerű Windows-futtatókörnyezet-összetevő létrehozása a C#/WinRT használatával
Először hozzon létre egy új projektet Visual Studio. Válassza ki a Osztálytár project sablont, és nevezze el a project AuthoringDemo nevet. A projekten a következő kiegészítéseket és módosításokat kell elvégezni:
A
TargetFrameworkfájlban frissítse a -t, és a következő elemeket adja hozzá aPropertyGroup-hoz:<PropertyGroup> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <Platforms>x64</Platforms> </PropertyGroup>A Windows-futtatókörnyezet típusok eléréséhez be kell állítania egy adott Windows SDK-verziót a TFM-ben. A támogatott verzióról további információt a .NET 6-os és újabb verzióiban talál: A TFM beállítás használata.
Telepítse a Microsoft.Windows.CsWinRT NuGet-csomagot a projekthez.
a). A Megoldáskezelő kattintson a jobb gombbal a projektcsomópontra, és válassza a Manage NuGet Packages lehetőséget.
b. Keresse meg a Microsoft.Windows. CsWinRT NuGet-csomag, és telepítse a legújabb verziót.
Adjon hozzá egy új
PropertyGroupelemet, amely beállítja a tulajdonságotCsWinRTComponent. Ez azt határozza meg, hogy a projekt egy Windows-futtatókörnyezet összetevő, így a projekt létrehozásakor létrejön egy.winmdfájl.<PropertyGroup> <CsWinRTComponent>true</CsWinRTComponent> </PropertyGroup>A C#/WinRT projekt tulajdonságainak teljes listájáért tekintse meg a C#/WinRT NuGet dokumentációt.
A futtatókörnyezeti osztályokat tárosztályfájlok
.cshasználatával is létrehozhatja. Kattintson a jobb gombbal aClass1.csfájlra, és nevezze át a fájlraExample.cs. Adja hozzá a következő kódot ehhez a fájlhoz, amely hozzáad egy nyilvános tulajdonságot és metódust a futtatókörnyezeti osztályhoz. Ne felejtse el megjelölni azokat az osztályokat, amelyeket elérhetővé szeretne tenni a futtatási komponensbenpublic.namespace AuthoringDemo { public sealed class Example { public int SampleProperty { get; set; } public static string SayHello() { return "Hello from your C# WinRT component"; } } }Most már létrehozhatja a projektet az összetevő
.winmdfájljának létrehozásához. Kattintson a jobb gombbal a projektre a Megoldáskezelő, majd a Build elemre. A létrehozottAuthoringDemo.winmdfájl megjelenik a build kimeneti mappájában.
NuGet-csomag létrehozása az összetevőhöz
A fejlesztők többsége NuGet-csomagként szeretné terjeszteni és megosztani Windows-futtatókörnyezet összetevőjét. Egy másik lehetőség az összetevő project hivatkozásként való felhasználása. Az alábbi lépések bemutatják, hogyan csomagolhatja be a AuthoringDemo összetevőt. A csomag létrehozásakor a C#/WinRT konfigurálja az összetevőt és a csomagban található összeszereléseket, hogy lehetővé tegye a natív alkalmazások általi használatot.
A NuGet-csomag többféleképpen is létrehozható:
Ha a project minden létrehozásakor létre szeretne hozni egy NuGet-csomagot, adja hozzá a következő tulajdonságot a AuthoringDemo project fájlhoz, majd építse újra a project.
<PropertyGroup> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup>Másik lehetőségként létrehozhat Egy NuGet-csomagot úgy is, hogy a jobb gombbal a AuthoringDemo projektre kattint a Megoldáskezelő és kiválasztja a Pack lehetőséget.
A csomag létrehozásakor a Build ablaknak azt kell jeleznie, hogy a NuGet-csomag AuthoringDemo.1.0.0.nupkg sikeresen létrejött. A NuGet-csomag tulajdonságairól a .NET parancssori felülettel A dotnet CLI használatával történő létrehozását ismertető cikkben talál további információt.
C++/WinRT alkalmazásban lévő összetevő felhasználása
A C#/WinRT által készített Windows-futtatókörnyezet összetevők bármilyen Windows-futtatókörnyezet (WinRT)-kompatibilis nyelvről használhatók. Az alábbi lépések bemutatják, hogyan hívhatja meg a fent leírt összetevőt egy C++/WinRT-konzolalkalmazásban.
Megjegyzés:
A C#/WinRT-összetevők C#/.NET-alkalmazásokból való használatát a csomagreferenciák és a projekthivatkozások egyaránt támogatják. Ez a forgatókönyv egyenértékű bármely szokásos C#-osztálykódtár használatával, és a legtöbb esetben nem jár WinRT-aktiválással. A C#/WinRT 1.3.5 verziótól kezdve a C#-felhasználók projekthivatkozásaihoz 6-os vagy újabb .NET kell.
Adjon hozzá egy új C++/WinRT-konzolalkalmazást a projektjéhez. Vegye figyelembe, hogy ez a project is része lehet egy másik megoldásnak, ha ezt választja.
a). A Megoldáskezelő-ben kattintson a jobb gombbal a megoldáscsomópontra, és kattintson a Add ->New Project.
b. A Add New Project dialog box keresse meg a C++/WinRT Konzolalkalmazás project sablont. Jelölje ki a sablont, és kattintson a Tovább gombra.
c) Nevezze el az új project CppConsoleApp nevet, majd kattintson a Create elemre.
Adjon hozzá egy hivatkozást a AuthoringDemo összetevőre NuGet-csomagként vagy project hivatkozásként.
1. lehetőség (csomaghivatkozás):
a). Kattintson a jobb gombbal a CppConsoleApp project és válassza a Manage NuGet-csomagok lehetőséget. Előfordulhat, hogy konfigurálnia kell a csomagforrásokat, hogy hivatkozást adjon hozzá a AuthoringDemo NuGet-csomaghoz. Ehhez kattintson a Settings ikonra a NuGet Csomagkezelő, és adjon hozzá egy csomagforrást a megfelelő elérési úthoz.
b. A csomagforrások konfigurálása után keresse meg a AuthoringDemo csomagot, és kattintson a Telepítés gombra.
Option 2 (Projekt hivatkozás):
a). Kattintson a jobb gombbal a CppConsoleApp project elemre, és válassza a Add ->Reference lehetőséget. A Projektek csomópontban adjon hozzá egy hivatkozást a AuthoringDemo project.
Az összetevő üzemeltetéséhez hozzá kell adnia egy jegyzékfájlt az aktiválható osztályregisztrációkhoz. A felügyelt összetevők üzemeltetésével kapcsolatos további információkért lásd: A felügyelt összetevők üzemeltetése.
a). A jegyzékfájl hozzáadásához kattintson ismét a jobb gombbal a project, és válassza a Add -> Új elem lehetőséget. Keresse meg a Szövegfájl sablont, és nevezze ki CppConsoleApp.exe.manifest. Illessze be a következő tartalmat, amely aktiválható osztályregisztrációs bejegyzésekkel adja meg a futtatókörnyezeti osztályokat:
<?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>A nem csomagolt alkalmazásokhoz az alkalmazásjegyzékfájl szükséges. A csomagolt alkalmazások esetében az alkalmazásfelhasználónak regisztrálnia kell az aktiválható osztályokat a
Package.appxmanifestcsomagjegyzékfájljában, ahogyan az Útmutató: C#-összetevő létrehozása WinUI-vezérlőkkel és felhasználása egy C++ Windows App SDK alkalmazásból című részben magyarázzuk.b. Módosítsa a project úgy, hogy a jegyzékfájl szerepeljen a kimenetben a project telepítésekor. Kattintson a CppConsoleApp.exe.manifest fájlra Megoldáskezelő, és állítsa a Content tulajdonságot True értékre. Íme egy példa arra, hogyan néz ki ez.
Nyissa meg pch.h a project fejlécfájljai alatt, és adja hozzá a következő kódsort az összetevő hozzáadásához.
#include <winrt/AuthoringDemo.h>Nyissa meg main.cpp a project forrásfájljai alatt, és cserélje le a következő tartalomra.
#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; }Hozza létre és futtassa a CppConsoleApp project. Most az alábbi kimenetnek kell megjelennie.
Kapcsolódó témakörök
Windows developer