Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här guiden fungerar för de flesta .NET project typer. Stegen har testats med både konsol- och gränssnittsbaserade projekt som WPF.
Den här guiden visar hur du använder winapp CLI med ett .NET-program för att felsöka med paketidentitet och paketera ditt program som en MSIX.
Paketidentitet är ett grundläggande begrepp i Windows app modellen. Det gör att ditt program kan access specifika Windows-API:er (t.ex. meddelanden, säkerhet, AI-API:er osv.), har en ren installation/avinstallation med mera.
Förutsättningar
.NET SDK: Installera .NET SDK:
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: Installera
winappverktyget via winget:winget install Microsoft.winappcli --source winget
1. Skapa en ny .NET app
Börja med att skapa ett enkelt .NET konsolprogram:
dotnet new console -n dotnet-app
cd dotnet-app
Kör den för att kontrollera att allt fungerar:
dotnet run
2. Uppdatera koden för att kontrollera identiteten
Uppdatera först din project-fil för att rikta in dig på en specifik Windows SDK-version. Öppna dotnet-app.csproj och ändra TargetFramework:
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Ersätt nu innehållet i 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. Kör utan identitet
dotnet run
Du bör se "Inte paketerad".
4. Initiera project med winapp CLI
Kommandot winapp init identifierar automatiskt .csproj-filer och kör en .NET specifik konfiguration:
winapp init
När du uppmanas att göra det:
- Paketnamn: Tryck på Retur för att acceptera standardinställningen
- Utgivarens namn: Tryck på Enter för att acceptera standardvärdet eller ange ditt namn
- Beskrivning: Tryck på Retur för att acceptera standardvärdet eller ange en beskrivning
- Version: Tryck på Retur för att acceptera 1.0.0.0
- Startpunkt: Tryck på Retur för att acceptera standardinställningen (dotnet-app.exe)
- Windows App SDK installation: Välj Stabil, Förhandsgranskning eller Experimentell
Det här kommandot:
- Uppdaterar
TargetFrameworki din.csprojtill en Windows TFM som stöds (om så behövs) - Lägg till
Microsoft.WindowsAppSDKochMicrosoft.Windows.SDK.BuildToolsNuGet-paketreferenser - Skapar
appxmanifest.xmlochAssetsmappar för din appidentitet
Anmärkning
I motsats till interna/C++-projekt skapar .NET-processen inte en winapp.yaml-fil. NuGet-paket hanteras direkt via din .csproj. Använd dotnet restore för att återställa paket efter kloning.
5. Felsöka med identitet
Skapa den körbara filen:
dotnet build -c DebugAnvänd felsökningsidentitet:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeKör den körbara filen (använd inte
dotnet runeftersom det kan återskapas):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Du bör se:
Package Family Name: dotnet-app_12345abcde
Automatisera felsökningsidentitet (valfritt)
Lägg till det här målet i .csproj filen:
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Använda Windows App SDK
Om du körde winapp inithar Microsoft.WindowsAppSDK redan lagts till som en NuGet-paketreferens. Uppdatera Program.cs för att använda api:et 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. Paket med MSIX
Skapa för lansering:
dotnet build -c ReleaseGenerera ett utvecklingscertifikat:
winapp cert generate --if-exists skipPaketera och signera:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxInstallera certifikatet (kör som administratör):
winapp cert install .\devcert.pfxInstallera genom att dubbelklicka på den genererade
.msixfilen.
Tips/Råd
- Microsoft Store signerar MSIX åt dig, du behöver inte signera innan det skickas in.
- Du kan behöva separata MSIX-paket för varje arkitektur:
dotnet build -c Release -r win-x64ellerdotnet build -c Release -r win-arm64.
Automatisera MSIX-paketering (valfritt)
Lägg till detta målobjekt till din .csproj:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
Relaterade ämnen
Windows developer