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.
Tento průvodce ukazuje, jak používat rozhraní příkazového řádku winapp v celé vnitřní smyčce aplikace WinUI 3: vytvořit projekt z oficiální šablony, sestavit a spustit ho pomocí identity balíčku, ladit pády aplikace, vyhledat ovládací prvky a rozhraní API, automatizovat uživatelské rozhraní a vytvořit podepsaný balíček MSIX. Každý krok se spustí z příkazového řádku, takže funguje v libovolném editoru, v CI a s AI agenty pro kódování.
Šablony projektů WinUI už obsahují Package.appxmanifest, takže pro aplikaci WinUI nemusíte spouštět winapp init. Pokud přidáváte identitu balíčku do existující aplikace .NET, která nepoužívá WinUI, přečtěte si místo toho téma Použití rozhraní příkazového řádku winapp s .NET.
Prerequisites
Windows 10 verze 1809 nebo novější nebo Windows 11.
Sada .NET SDK verze 8.0.100 nebo novější. Experimentální šablony Reactor vyžadují sadu .NET 10 SDK. Rozhraní příkazového řádku winapp neinstaluje sady nástrojů, takže se
winapp newawinapp runzastaví s pokyny, pokud chybí sada .NET SDK.winapp CLI:
winget install Microsoft.winappcli --source wingetVývojářský režim, který Windows vyžaduje k registraci aplikace z výstupu sestavení. Zapněte ho v nastavení > systému > pro vývojáře. Informace o těchto změnách na vašem počítači najdete v tématu Zabezpečení.
Vytvoření aplikace WinUI
winapp new Vygeneruje kostru aplikace WinUI z oficiálního Microsoft.WindowsAppSDK.WinUI.CSharp.Templates balíčku. Nainstaluje nebo aktualizuje balíček šablony na vyžádání a pak za vás zavolá dotnet new .
# Pick a template and a name interactively
winapp new
# Or create a NavigationView app without prompts
winapp new --name MyApp --template winui-navview --use-defaults
Spuštěním winapp new --list zobrazíte šablony v nainstalovaném balíčku. Balíček obsahuje tyto šablony:
| Template | Description |
|---|---|
winui |
Minimální prázdná aplikace XAML (výchozí). Viz snímek obrazovky |
winui-navview |
Aplikace XAML se skořepinou NavigationView Viz snímek obrazovky |
winui-tabview |
Aplikace XAML se shellem TabView Viz snímek obrazovky |
winui-mvvm |
Aplikace XAML, která používá model MVVM s CommunityToolkit.Mvvm. Viz snímek obrazovky |
winui-lib |
Knihovna tříd WinUI |
winui-unittest |
Balíček projektu MSTest pro jednotkové testy WinUI |
reactor, reactor-mvu, , reactor-navviewreactor-tabview |
Pokusný. Aplikace WinUI napsané jenom v jazyce C# bez XAML |
Note
Šablony Reactor odkazují na předběžné verze Microsoft.UI.Reactor balíčků. Jejich rozhraní API se mohou v budoucí verzi změnit nebo být odebrána.
Pro každou možnost se podívejte na new reference příkazů.
Sestavení a spuštění s využitím identity
Ve složce projektu příkaz winapp run sestaví projekt, nainstaluje modul runtime Windows App SDK, který odpovídá vaší architektuře, pokud chybí, zaregistruje aplikaci s identitou balíčku a spustí ji.
cd MyApp
winapp run
winapp run přijímá soubor projektu, soubor řešení, složku, která obsahuje jeden z nich, nebo složku výstupu sestavení:
# A specific project and configuration
winapp run .\MyApp.csproj -c Release --arch arm64
# A solution: winapp CLI finds the single app project and skips libraries and tests
winapp run .\MySolution.sln
# A solution with more than one app project
winapp run .\MySolution.sln --project MyApp
# Build output that you produced yourself
winapp run .\bin\x64\Debug\net10.0-windows10.0.26100.0\win-x64
Rozhraní příkazového řádku winapp přečte vlastnost projektu WindowsPackageType a rozhodne, jak projekt spustit. Projekt v balíčku běží s identitou balíčku. Projekt, který má nastaveno WindowsPackageType na None, se spustí jako rozbalená aplikace bez identity. Pokud chcete spustit zabalený projekt jako nebalený, předejte vlastnost na příkazovém řádku:
winapp run -p WindowsPackageType=None
Mezi další užitečné možnosti patří --clean odebrání předchozí registrace a uložených dat aplikace (LocalState a nastavení) pro nové první spuštění, --no-launch registraci bez spuštění aplikace a --detach --json pro vrácení ID procesu a ukončení, aby skripty a agenti mohli dál pracovat, zatímco aplikace běží. Úplný seznam najdete v části režim Project (projekty .NET SDK).
Místo toho použijte dotnet run.
Pokud chcete dotnet run, použijte Microsoft.Windows.SDK.BuildTools.WinApp balíček NuGet. Balíček se zavěsí na dotnet run, aby volal winapp run a spustil aplikaci s identitou. Projekty, které vytvoříte pomocí winapp new, už na balíček odkazují, takže dotnet run funguje bez dalšího nastavení. V případě jiných projektů nejprve přidejte balíček:
dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp --prerelease
dotnet run
Můžete předat winapp run možnosti jako WinAppRun* vlastnosti MSBuild, například dotnet run -p:WinAppRunDebugOutput=true. Pokud chcete integraci vypnout, nastavte EnableWinAppRunSupport na false v souboru projektu. Podrobnosti najdete v tématu podpora spuštění dotnet.
Ladění pádů
Přidejte --debug-output k zachycení OutputDebugString zpráv a výjimek s první šancí během běhu aplikace. Když aplikace WinUI selže se zaznamenanou výjimkou, rozhraní příkazového řádku winapp analyzuje výpis paměti po pádu a místo obecného kódu selhání vytiskne původní chybu a zásobník volání.
winapp run --debug-output
Přidejte --symbols, aby se stáhly symboly pro úplné názvy nativních funkcí. Vzhledem k tomu, že --debug-output připojí rozhraní příkazového řádku winapp jako ladicí program, nemůžete ke stejnému procesu připojit Visual Studio ani jiný ladicí program. Pokud chcete místo toho ladit integrované vývojové prostředí (IDE), přečtěte si téma Ladění pomocí rozhraní příkazového řádku winapp. Podrobnosti o analýze stowed-exception naleznete v tématu WinUI stowed-exception triage.
Najít ovládací prvky a rozhraní API
winapp find-uivyhledá ukázky XAML a C# z galerie WinUI a sady Windows Community Toolkit podle záměru a vrátí kód pro scénář, který vyberete.
winapp find-apivyhledá v rozhraní API systémů Windows a WinRT, na která váš projekt odkazuje, jako jsou Windows App SDK a typy sady Windows SDK, členy a výčty.
# Find a control by what you want to build
winapp find-ui "tabbed layout"
# Get the XAML and C# for one of the returned scenarios
winapp find-ui --id gallery-tabview-1
# Look up an API
winapp find-api NavigationView
Oba příkazy podporují --json, takže agenti pro kódování AI je můžou použít k výběru ovládacích prvků a ověření názvů rozhraní API. Další informace viz odkazy find-ui a find-api.
Automatizujte a ověřte uživatelské rozhraní
winapp ui řídí spuštěnou aplikaci prostřednictvím Microsoft model UI Automation. Slouží ke kontrole stromu elementů, vyvolání ovládacích prvků, čekání na změny stavu a pořizování snímků obrazovky. Agenti můžou ke kontrole vlastních změn použít stejné příkazy.
winapp run --detach
winapp ui inspect -a MyApp
winapp ui search Button -a MyApp
winapp ui invoke PART_PaneToggleButton -a MyApp
winapp ui screenshot -a MyApp
Selektor PART_PaneToggleButton cílí na tlačítko nabídky v šabloně winui-navview . Pro vlastní ovládací prvky zkopírujte selektor z výstupu winapp ui inspect nebo winapp ui search.
Pokud chcete aplikaci spustit v Windows Sandboxu místo na ploše, přidejte --on sandbox do winapp run a winapp ui. Další informace najdete v tématu Automatizace uživatelského rozhraní a spouštění sandboxu.
Zabalit a podepsat
Až budete připravení balíček otestovat místně, vygenerujte vývojový certifikát, jehož vydavatel odpovídá vašemu manifestu, a pak projekt sestavte a zabalte v jednom kroku:
winapp cert generate --manifest .\Package.appxmanifest
winapp pack .\MyApp.csproj -c Release --arch x64 --cert .\devcert.pfx
winapp pack sestaví projekt a vytvoří podepsanou .msix. Pokud chcete zkombinovat sestavení pro několik architektur do jedné .msixbundle, podívejte se na balíčky s více architekturami. Projekt musí být zabalený, takže projekt, který nastavuje None na WindowsPackageType, nejde zabalit. U projektů WinUI sestavení Windows App SDK spravuje manifest, vstupní bod a generování prostředků, takže --manifest, --executable a --skip-pri nejsou podporovány.
Vývojový certifikát je určený jenom pro místní testování a používá výchozí heslo. Před distribucí aplikace ji podepište pomocí důvěryhodného certifikátu, například pomocí winapp az-sign a Důvěryhodné podepisování Azure. Další informace naleznete v tématu Balení projektu přímo a zabezpečení.
Existující projekty WinUI
Rozhraní příkazového řádku winapp funguje s projekty WinUI, které jste vytvořili v Visual Studio. Vyberte pomocí winapp run soubor projektu, soubor řešení nebo složku, která některý z nich obsahuje. Pro winapp pack předejte .csproj. V Visual Studio můžete pokračovat v sestavování a ladění a používat rozhraní příkazového řádku winapp pro skripty, CI a pracovní postupy agenta.
WinUI s C++
winapp run také sestaví a spustí projekty C++/WinRT WinUI (.vcxproj), které jste vytvořili ze šablony Visual Studio WinUI Blank App (Packaged). Sestaví projekt pomocí nástroje MSBuild Visual Studio, zaregistruje aplikaci s identitou balíčku a spustí ji:
winapp run .\MyApp.vcxproj
# Or from the folder that contains the project
winapp run .
Projekty C++ potřebují Visual Studio nebo nástroje sestavení pro Visual Studio s úlohou Desktop development with C++ a nástroji pro vývoj aplikací C++ WinUI.
winapp pack nesestaví projekty .vcxproj, takže vytvořte balíček MSIX v Visual Studiu. Informace o požadavcích a možnostech najdete v tématu Projekty C++ (.vcxproj). Informace o aplikacích C++, které nepoužívají WinUI, najdete v tématu Použití rozhraní příkazového řádku winapp s C++.
Samples
-
winui-app: Zabalená aplikace WinUI s ovládacími prvky nastavenými prowinapp uiautomatizaci -
winui-unpackaged-app: aplikace WinUI, která běží bez identity balíčku -
winui-solution: Víceprojektové řešení, které ukazuje, jakwinapp runvybírá projekt aplikace. -
cpp-winui-app: zabalená aplikace C++/WinRT WinUI (Visual Studio.vcxprojs XAML), která běží swinapp run
Další kroky
Windows developer