Použití rozhraní příkazového řádku winapp s .NET souborovými aplikacemi

Funkční příklad najdete v ukázce dotnet-file-app. Úplné reference najdete v tématu Režim s jedním souborem v referenčních informacích rozhraní příkazového řádku.

V .NET 10 lze spustit jeden soubor .cs bez souboru projektu. Tento průvodce ukazuje, jak tento soubor spustit s identitou balíčku pomocí winapp run, aby fungovala rozhraní API, jako je Windows.ApplicationModel.Package.Current, oznámení aplikací a AI v zařízení. Manifest ani prostředky obrázků nemusíte vytvářet: winapp je za vás vygeneruje.

Identita balíčku je základním konceptem modelu Windows app. Umožňuje aplikaci přistupovat ke konkrétním rozhraním API Windows, zajistit bezproblémovou instalaci a odinstalaci a další možnosti. Aplikace založená na souborech spuštěná pomocí dotnet run nemá žádnou identitu balíčku.

Prerequisites

  1. .NET SDK 10.0.300 nebo novější: Nainstalujte sadu .NET 10 SDK (vyžaduje restartování po instalaci):

    winget install Microsoft.DotNet.SDK.10 --source winget
    
  2. winapp CLI: Nainstalujte nástroj prostřednictvím wingetu (nebo aktualizujte winapp , pokud už je nainstalovaný):

    winget install Microsoft.winappcli --source winget
    

1. Vytvořte aplikaci založenou na souborech

Vytvořte složku se souborem s názvem hello.cs:

#: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");
}

Řádky #:property nakonfigurují aplikaci tak, jak by to udělal .csproj. Položka Windows TargetFramework poskytuje kódu přístup k rozhraním API prostředí Windows Runtime, jako je Package.

Spusťte ho pomocí dotnet run:

dotnet run hello.cs

Výstup je Not packaged: Aplikace se spouští bez identity balíčku.

2. Spuštění s identitou balíčku

Spusťte stejný soubor s winappem:

winapp run hello.cs

Winapp aplikaci sestaví, vygeneruje manifest a výchozí prostředky image ve výstupu sestavení, zaregistruje aplikaci jako balíček a spustí ji. Výstup teď zobrazuje identitu balíčku:

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

Vaše zdrojová složka stále obsahuje pouze hello.cs. Vzhledem k tomu, že se jedná o konzolovou aplikaci (OutputType=Exe), winapp ji spustí prostřednictvím aliasu spuštění, takže se její výstup zobrazí v terminálu.

Registrace zůstane po ukončení aplikace na místě, takže opětovné spuštění winapp run hello.cs znovu použije stejnou identitu. Odeberete ho v kroku 5.

3. Pojmenujte balíček

Ve výchozím nastavení je název balíčku název souboru plus krátká hodnota hash cesty k souboru. Pokud chcete zvolit vlastní název, nejprve zrušte registraci aktuálního balíčku, protože nový název zaregistruje nový balíček:

winapp unregister hello.cs

Pak přidejte #:property direktivy na začátek hello.cs:

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

Spusť ho znovu:

winapp run hello.cs

Výstup zobrazuje nový název, například Package Family Name: com.contoso.hello_<publisher-hash>. Aplikace se také zobrazí v nabídce Start jako Contoso Hello.

Pro každou vlastnost identity a její výchozí hodnotu viz vlastnosti manifestu.

4. Spusťte pomocí dotnet run

Pro získání stejného zabaleného spuštění z prostého dotnet run odkažte na balíček Microsoft.Windows.SDK.BuildTools.WinApp v horní části hello.cs:

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

Výstup zobrazuje stejnou identitu balíčku jako winapp run. Vzhledem k tomu dotnet run, že se sestavuje do jiné výstupní složky, varuje, že nahrazuje existující registraci nainstalovanou z jiného umístění. To je očekávané a můžete ho ignorovat.

Balíček také dává aplikaci zástupnou ikonu okna, takže okenní aplikace zobrazí ikonu v záhlaví. Chcete-li použít vlastní soubor, nasměrujte ApplicationIcon na soubor .ico:

#:property ApplicationIcon=Assets\MyApp.ico

Vlastnosti, které určují toto spuštění, naleznete v tématu Spuštění s dotnet run.

5. Vyčistěte

Odeberte registraci předáním souboru .cs do winapp unregister:

winapp unregister hello.cs

Přidat možnosti nebo vlastní manifest

Některá rozhraní API potřebují deklarované oprávnění. Například Windows rozhraní API AI potřebujísystemAIModels:

#:property WinAppCapabilities=systemAIModels

Winapp zapíše každou funkci do správného elementu manifestu. Podívejte se na Schopnosti, kde najdete úplný seznam a pravidla pojmenování.

Obslužné programy protokolů, přidružení souborů a další integrace prostředí potřebují ručně vytvořený manifest. Umístěte hello.appxmanifest vedle hello.cs a aplikace winapp jej použije místo jeho vygenerování. Viz Dodejte vlastní manifest.

Další kroky

  • Distribuční balíček: winapp run registruje aplikaci pouze pro vývoj. Pokud chcete vytvořit MSIX, který můžete distribuovat, přesuňte kód do projektu a v průvodci .NET postupujte podle Vytvoření balíčku pomocí MSIX.
  • prozkoumat rozhraní Windows API: S identitou balíčku teď můžete používat oznámení, AI na zařízení a další rozhraní API závislé na identitě