Winapp CLI használata .NET fájlalapú alkalmazásokkal

Egy működő példáért tekintse meg a dotnet-file-app mintát. A teljes referenciaért tekintse meg az egyfájlos módot a parancssori felület referenciájában.

A .NET 10 egyetlen .cs fájlt is futtathat projektfájl nélkül. Ez az útmutató bemutatja, hogyan futtathatja azt a fájlt csomagidentitás használatával winapp run, így az olyan API-k, mint a Windows.ApplicationModel.Package.Current, az alkalmazásértesítések és az eszközön futó AI működnek. Nem kell manifesztet vagy képi erőforrásokat készítened: a winapp létrehozza őket.

A csomagidentitás a Windows app modell alapvető fogalma. Lehetővé teszi az alkalmazás számára adott Windows API-k elérését, tiszta telepítési/eltávolítási élményt és egyebeket. A dotnet run használatával futtatott fájlalapú alkalmazás nem rendelkezik csomagidentitással.

Prerequisites

  1. .NET SDK 10.0.300 vagy újabb verziója: Telepítse a .NET 10 SDK-t (a telepítés után újra kell indítani):

    winget install Microsoft.DotNet.SDK.10 --source winget
    
  2. winapp CLI: Telepítse az eszközt a winapp wingettel (vagy frissítse, ha már telepítve van):

    winget install Microsoft.winappcli --source winget
    

1. Fájlalapú alkalmazás létrehozása

Hozzon létre egy mappát egy hello.cs nevű fájllal:

#:property OutputType=Exe
#:property TargetFramework=net10.0-windows10.0.19041.0

using Windows.ApplicationModel;

try
{
    Console.WriteLine($"Package Family Name: {Package.Current.Id.FamilyName}");
}
catch (InvalidOperationException)
{
    // Thrown when the app doesn't have package identity
    Console.WriteLine("Not packaged");
}

A #:property sorok úgy konfigurálják az alkalmazást, ahogyan egy .csproj tenné. A Windows TargetFramework hozzáférést biztosít a kódnak Windows-futtatókörnyezet API-khoz, például Package.

Futtassa ezzel: dotnet run

dotnet run hello.cs

A kimenet a következő Not packaged: az alkalmazás csomagidentitás nélkül fut.

2. Futtatás csomagidentitással

Futtassa ugyanazt a fájlt a winappal:

winapp run hello.cs

A winapp létrehozza az alkalmazást, létrehoz egy manifestfájlt és alapértelmezett képerőforrásokat a build kimenetében, regisztrálja az alkalmazást csomagként, és elindítja azt. A kimenet most a csomag identitását jeleníti meg:

Package Family Name: hello-<hash>_<publisher-hash>

A forrásmappa továbbra is csak hello.cs tartalmaz. Mivel ez egy konzolalkalmazás (OutputType=Exe), a winapp egy végrehajtási aliason keresztül indítja el, így a kimenete megjelenik a terminálban.

A regisztráció az alkalmazás kilépése után is érvényben marad, így a winapp run hello.cs ismételt futtatása ugyanazt az identitást használja. Az 5. lépésben eltávolíthatja.

3. A csomag elnevezése

Alapértelmezés szerint a csomag neve a fájlnév, valamint a fájl elérési útjának rövid hash-e. A saját név kiválasztásához először szüntesse meg az aktuális csomag regisztrációját, mert egy új név egy új csomagot regisztrál:

winapp unregister hello.cs

Ezután adja hozzá a(z) #:property irányelveket a(z) hello.cs tetejéhez:

#:property WinAppPackageName=com.contoso.hello
#:property WinAppDisplayName=Contoso Hello
#:property Version=1.0.0

Futtassa újra:

winapp run hello.cs

A kimenetben például Package Family Name: com.contoso.hello_<publisher-hash>az új név látható. Az alkalmazás a Start menüben Contoso Hello néven is megjelenik.

Minden identitástulajdonságról és annak alapértelmezett értékéről a Jegyzékfájl tulajdonságai című témakörben olvashat.

4. Futtatás a következővel: dotnet run

Ha ugyanazt a csomagolt indítást egyszerű dotnet run-ból szeretné lekérni, hivatkozzon a hello.cs tetején lévő Microsoft.Windows.SDK.BuildTools.WinApp csomagra:

#:package Microsoft.Windows.SDK.BuildTools.WinApp@*
dotnet run hello.cs

A kimenet ugyanazt a csomagidentitást jeleníti meg, mint a winapp run. Mivel dotnet run egy másik kimeneti mappába épít, figyelmeztet arra, hogy egy másik helyről telepített meglévő regisztrációs bejegyzést cserél le. Ez várható, és figyelmen kívül hagyhatja.

A csomag helyőrző ablak ikont is biztosít az alkalmazásnak, így egy ablakos alkalmazás egy ikont jelenít meg a címsorban. Ha a sajátját szeretné használni, mutasson a .ico fájlra a(z) ApplicationIcon használatával:

#:property ApplicationIcon=Assets\MyApp.ico

Az indítást vezérlő tulajdonságokról lásd: Futtatás a következővel dotnet run.

5. Tisztítás

Távolítsa el a regisztrációt úgy, hogy a .cs fájlt átadja a winapp unregister számára:

winapp unregister hello.cs

Képességek vagy egyéni manifest hozzáadása

Egyes API-knak deklarált képességre van szükségük. A Windows AI API-knak például a következőkre van szükségük systemAIModels:

#:property WinAppCapabilities=systemAIModels

A winapp minden képességet a megfelelő manifest elemébe ír. A teljes listát és az elnevezési szabályokat lásd a Capabilities résznél.

A protokollkezelőknek, fájltársításoknak és más shellintegrációknak manifesztumra van szükségük. Helyezzen egy hello.cs jelet a(z) hello.appxmanifest mellé, és a winapp azt használja ahelyett, hogy létrehozna egyet. Lásd: Saját manifest használata.

Következő lépések