Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Deze handleiding werkt voor de meeste .NET project typen. De stappen zijn getest met zowel console- als op gebruikersinterface gebaseerde projecten, zoals WPF.
Deze handleiding laat zien hoe u de winapp CLI gebruikt met een .NET-toepassing om fouten op te sporen met pakketidentiteit en uw toepassing als msix te verpakken.
Pakketidentiteit is een kernconcept in het Windows app model. Hiermee kan uw toepassing specifieke Windows-API's (zoals meldingen, beveiliging, AI-API's, enzovoort) access, een schone installatie-/verwijderingservaring hebben, en meer.
Vereiste voorwaarden
.NET SDK: installeer de .NET SDK:
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: Installeer het
winapphulpprogramma via winget:winget install Microsoft.winappcli --source winget
1. Een nieuwe .NET-app maken
Begin met het maken van een eenvoudige .NET consoletoepassing:
dotnet new console -n dotnet-app
cd dotnet-app
Voer deze uit om te controleren of alles werkt:
dotnet run
2. Werk code bij om de identiteit te controleren
Werk eerst uw project-bestand bij om een specifieke Windows SDK-versie te targeten. Open dotnet-app.csproj en wijzig het TargetFramework element volgende:
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Vervang nu de inhoud van 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. Uitvoeren zonder identiteit
dotnet run
U ziet nu 'Niet verpakt'.
4. Initialiseer project met winapp CLI
De opdracht winapp init detecteert automatisch .csproj bestanden en voert een .NET-specifieke installatie uit:
winapp init
Wanneer u hierom wordt gevraagd:
- Pakketnaam: druk op Enter om de standaardwaarde te accepteren
- Publisher naam: Druk op Enter om de standaardinstelling te accepteren of voer uw naam in
- Beschrijving: Druk op Enter om de standaardinstelling te accepteren of voer een beschrijving in
- Versie: Druk op Enter om 1.0.0.0 te accepteren
- Toegangspunt: Druk op Enter om de standaardwaarde (dotnet-app.exe) te accepteren
- Windows App SDK setup: Selecteer Stabiel, Voorbeeld of Experimenteel
Deze opdracht:
- Hiermee werkt u
TargetFrameworkin.csprojbij naar een ondersteunde Windows TFM (indien nodig) - Voegt
Microsoft.WindowsAppSDKenMicrosoft.Windows.SDK.BuildToolsNuGet-pakketverwijzingen toe - Maakt
appxmanifest.xmlenAssetsmap voor uw app-identiteit
Opmerking
In tegenstelling tot systeemeigen/C++-projecten maakt de .NET flow niet een bestand winapp.yaml. NuGet-pakketten worden rechtstreeks beheerd via uw .csproj. Gebruik dotnet restore deze functie om pakketten te herstellen na het klonen.
Debuggen met identiteit
Bouw het uitvoerbare bestand:
dotnet build -c DebugDebug-identiteit toepassen
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeVoer het uitvoerbare bestand uit (gebruik
dotnet rundit niet omdat het opnieuw kan worden opgebouwd):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
U ziet het volgende:
Package Family Name: dotnet-app_12345abcde
Foutopsporingsidentiteit automatiseren (optioneel)
Voeg dit doel toe aan uw .csproj bestand:
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Windows App SDK gebruiken
Als u winapp init hebt uitgevoerd, is Microsoft.WindowsAppSDK al als een NuGet-pakketverwijzing toegevoegd. Werk Program.cs bij zodat het de Windows App Runtime-API gebruikt.
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. Pakket met MSIX
Build voor release:
dotnet build -c ReleaseEen ontwikkelingscertificaat genereren:
winapp cert generate --if-exists skipPakket en teken:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxInstalleer het certificaat (als beheerder uitvoeren):
winapp cert install .\devcert.pfxInstalleer door te dubbelklikken op het gegenereerde
.msixbestand.
Aanbeveling
- De Microsoft Store ondertekent de MSIX voor u. U hoeft de MSIX niet te ondertekenen voordat u deze inzendt.
- Mogelijk hebt u afzonderlijke MSIX-pakketten nodig voor elke architectuur:
dotnet build -c Release -r win-x64ofdotnet build -c Release -r win-arm64.
MSIX-pakketten automatiseren (optioneel)
Voeg dit doel toe aan uw .csproj:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
Verwante onderwerpen
Windows developer