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

Poznámka:

Tato příručka funguje pro většinu typů .NET project. Tento postup jsme otestovali pomocí konzolových i uživatelských projektů, jako je WPF.

Tato příručka ukazuje, jak pomocí winapp CLI s .NET aplikací ladit aplikaci pomocí identity balíčku a zabalit aplikaci jako MSIX.

Identita balíčku je základním konceptem modelu Windows app. Umožňuje aplikaci přistupovat k konkrétním rozhraním API systému Windows (jako jsou oznámení, zabezpečení, rozhraní API AI atd.), má čistý proces instalace a odinstalace a další.

Předpoklady

  1. .NET SDK: Nainstalujte sadu .NET SDK:

    winget install Microsoft.DotNet.SDK.10 --source winget
    
  2. winapp CLI: Nainstalujte winapp nástroj přes winget:

    winget install Microsoft.winappcli --source winget
    

1. Vytvoření nové aplikace .NET

Začněte vytvořením jednoduché konzolové aplikace .NET:

dotnet new console -n dotnet-app
cd dotnet-app

Spusťte ho, abyste měli jistotu, že všechno funguje:

dotnet run

2. Aktualizace kódu pro kontrolu identity

Nejprve aktualizujte soubor project tak, aby cílil na konkrétní verzi sady Windows SDK. Otevřete dotnet-app.csproj a změňte TargetFramework.

<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>

Nyní nahraďte obsah :Program.cs

using Windows.ApplicationModel;

try
{
    var package = Package.Current;
    var familyName = package.Id.FamilyName;
    Console.WriteLine($"Package Family Name: {familyName}");
}
catch (InvalidOperationException)
{
    Console.WriteLine("Not packaged");
}

3. Spuštění bez identity

dotnet run

Měla by se zobrazit zpráva "Nenabalené".

4. Inicializace project pomocí rozhraní příkazového řádku winapp

Příkaz winapp init automaticky rozpozná soubory .csproj a spustí .NET specifické nastavení:

winapp init

Po zobrazení výzvy:

  • Název balíčku: Stisknutím klávesy Enter přijměte výchozí nastavení.
  • Publisher název: Stisknutím klávesy Enter přijměte výchozí hodnotu nebo zadejte své jméno.
  • Popis: Stisknutím klávesy Enter přijměte výchozí hodnotu nebo zadejte popis.
  • Verze: Stisknutím klávesy Enter přijměte verzi 1.0.0.0.
  • Vstupní bod: Stisknutím klávesy Enter přijměte výchozí (dotnet-app.exe)
  • nastavení Windows App SDK: Vyberte stabilní, preview nebo experimentální.

Tento příkaz:

  • Aktualizuje vaši TargetFramework verzi .csproj na podporovanou sadu Windows TFM (v případě potřeby).
  • Přidá odkazy na balíčky NuGet Microsoft.WindowsAppSDK a Microsoft.Windows.SDK.BuildTools
  • Vytvořte složky appxmanifest.xml a Assets pro identitu vaší aplikace

Poznámka:

Na rozdíl od nativních projektů nebo projektů C++ tok .NET nevytváří soubor winapp.yaml. Balíčky NuGet se spravují přímo prostřednictvím vašeho .csproj. Slouží dotnet restore k obnovení balíčků po klonování.

5. Ladění s identitou

  1. Sestavení spustitelného souboru:

    dotnet build -c Debug
    
  2. Použít identitu ladění:

    winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
    
  3. Spusťte spustitelný soubor (nepoužívejte dotnet run pokud by to mohlo vyvolat opětovné sestavení):

    .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
    

Měli byste vidět:

Package Family Name: dotnet-app_12345abcde

Automatizace identity ladění (volitelné)

Přidejte tento cíl do .csproj souboru:

<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
    <Exec Command="winapp create-debug-identity &quot;$(TargetDir)$(TargetName).exe&quot;"
          WorkingDirectory="$(ProjectDir)"
          IgnoreExitCode="false" />
</Target>

6. Použití Windows App SDK

Pokud jste spustili winapp init, Microsoft.WindowsAppSDK už byl přidán jako odkaz na balíček NuGet. Aktualizujte Program.cs tak, aby používalo rozhraní API Windows App Runtime:

using Windows.ApplicationModel;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var package = Package.Current;
            var familyName = package.Id.FamilyName;
            Console.WriteLine($"Package Family Name: {familyName}");

            var runtimeVersion = Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeInfo.AsString;
            Console.WriteLine($"Windows App Runtime Version: {runtimeVersion}");
        }
        catch (InvalidOperationException)
        {
            Console.WriteLine("Not packaged");
        }
    }
}

7. Balíček s MSIX

  1. Sestavení pro vydání:

    dotnet build -c Release
    
  2. Vygenerování vývojového certifikátu:

    winapp cert generate --if-exists skip
    
  3. Balíček a podepsání:

    winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfx
    
  4. Nainstalujte certifikát (spusťte ho jako správce):

    winapp cert install .\devcert.pfx
    
  5. Nainstalujte poklikáním na vygenerovaný .msix soubor.

Návod

  • Microsoft Store za vás podepíše MSIX, před odesláním se nemusíte podepisovat.
  • Pro každou architekturu možná budete potřebovat samostatné balíčky MSIX: dotnet build -c Release -r win-x64 nebo dotnet build -c Release -r win-arm64.

Automatizace balení MSIX (volitelné)

Přidejte tento cíl do svého .csproj:

<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
    <Exec Command="winapp pack &quot;$(TargetDir.TrimEnd('\'))&quot; --cert &quot;$(ProjectDir)devcert.pfx&quot;"
          WorkingDirectory="$(ProjectDir)"
          IgnoreExitCode="false" />
</Target>