Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieses Handbuch funktioniert für die meisten .NET project Typen. Die Schritte wurden sowohl mit Konsolen- als auch ui-basierten Projekten wie WPF getestet.
In diesem Handbuch wird veranschaulicht, wie Sie die winapp CLI mit einer .NET Anwendung zum Debuggen mit Paketidentität und Verpacken Ihrer Anwendung als MSIX verwenden.
Die Paketidentität ist ein Kernkonzept im Windows app-Modell. Sie ermöglicht Ihrer Anwendung den Zugriff auf bestimmte Windows-APIs (z. B. Benachrichtigungen, Sicherheit, KI-APIs usw.), eine einfache Installation/Deinstallation und vieles mehr.
Voraussetzungen
.NET SDK: Installieren Sie das .NET SDK:
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: Installieren Sie das
winappTool über winget:winget install Microsoft.winappcli --source winget
1. Erstellen einer neuen .NET App
Erstellen Sie zunächst eine einfache .NET Konsolenanwendung:
dotnet new console -n dotnet-app
cd dotnet-app
Führen Sie sie aus, um sicherzustellen, dass alles funktioniert:
dotnet run
2. Aktualisieren von Code zum Überprüfen der Identität
Aktualisieren Sie zunächst Ihre project-Datei auf eine bestimmte Windows SDK-Version. Öffnen Sie dotnet-app.csproj und ändern Sie das TargetFramework.
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Ersetzen Sie nun den Inhalt von 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. Ohne Identität ausführen
dotnet run
Es sollte "Nicht verpackt" angezeigt werden.
4. Initialisiere das Projekt mit winapp CLI
Der Befehl winapp init erkennt automatisch .csproj-Dateien und führt ein .NET-spezifisches Setup aus:
winapp init
Wenn Sie dazu aufgefordert werden:
- Paketname: Drücken Sie die EINGABETASTE, um die Standardeinstellung zu akzeptieren.
- Publisher Name: Drücken Sie die EINGABETASTE, um die Standardeinstellung zu akzeptieren oder Ihren Namen einzugeben.
- Beschreibung: Drücken Sie die EINGABETASTE, um die Standardeinstellung zu akzeptieren oder eine Beschreibung einzugeben.
- Version: Drücken Sie die EINGABETASTE, um 1.0.0.0 zu akzeptieren.
- Einstiegspunkt: Drücken Sie die EINGABETASTE, um die Standardeinstellung zu übernehmen (dotnet-app.exe)
- Windows App SDK-Setup: Wählen Sie Stabil, Vorschau oder Experimentell
Dieser Befehl:
- Aktualisiert
TargetFrameworkin Ihrem.csprojauf ein unterstütztes Windows TFM (falls erforderlich) - Addiert
Microsoft.WindowsAppSDKundMicrosoft.Windows.SDK.BuildToolsNuGet-Paketverweise - Erstellt
appxmanifest.xmlundAssetsOrdner für Ihre App-Identität
Hinweis
Im Gegensatz zu nativen/C++-Projekten erstellt der .NET-Ablauf nicht eine winapp.yaml Datei. NuGet-Pakete werden direkt über Ihre .csproj. Verwenden Sie dotnet restore, um Pakete nach dem Klonen wiederherzustellen.
5. Debuggen mit Identität
Erstellen Sie die ausführbare Datei:
dotnet build -c DebugDebugidentität anwenden:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeFühren Sie die ausführbare Datei aus (nicht verwenden
dotnet run, da sie neu erstellt werden kann):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Sie sollten Folgendes sehen:
Package Family Name: dotnet-app_12345abcde
Automatisieren der Debugidentität (optional)
Fügen Sie dieses Ziel Ihrer .csproj-Datei hinzu.
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Verwenden von Windows App SDK
Wenn Sie winapp init ausgeführt haben, wurde Microsoft.WindowsAppSDK bereits als NuGet-Paketreferenz hinzugefügt. Aktualisieren Sie Program.cs, um die Windows App-Runtime-API zu verwenden:
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 mit MSIX
Build für Release:
dotnet build -c ReleaseGenerieren eines Entwicklungszertifikats:
winapp cert generate --if-exists skipPacken und Signieren:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxInstallieren Sie das Zertifikat (als Administrator ausführen):
winapp cert install .\devcert.pfxInstallieren Sie , indem Sie auf die generierte
.msixDatei doppelklicken.
Tipp
- Der Microsoft Store signiert das MSIX für Sie, sodass Sie es nicht vor der Übermittlung signieren müssen.
- Möglicherweise benötigen Sie separate MSIX-Pakete für jede Architektur:
dotnet build -c Release -r win-x64oderdotnet build -c Release -r win-arm64.
Automatisieren von MSIX-Verpackungen (optional)
Fügen Sie dieses Ziel zu Ihrem .csproj:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
Zugehörige Themen
Windows developer