Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Ten przewodnik działa w przypadku większości typów .NET project. Kroki zostały przetestowane w projektach konsolowych oraz projektach typu WPF opartych na interfejsie użytkownika.
W tym przewodniku pokazano, jak używać interfejsu wiersza polecenia winapp z aplikacją .NET do debugowania przy użyciu tożsamości pakietu i spakowania aplikacji jako pliku MSIX.
Tożsamość pakietu jest podstawową koncepcją w modelu Windows app. Dzięki niej aplikacja może uzyskiwać dostęp do określonych interfejsów API systemu Windows (takich jak powiadomienia, zabezpieczenia, interfejsy API itp.), mieć czyste środowisko instalacji/odinstalowywania i wiele więcej.
Wymagania wstępne
.NET SDK: Zainstaluj zestaw SDK .NET:
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: zainstaluj
winappnarzędzie za pomocą winget:winget install Microsoft.winappcli --source winget
1. Tworzenie nowej aplikacji .NET
Zacznij od utworzenia prostej aplikacji konsolowej .NET:
dotnet new console -n dotnet-app
cd dotnet-app
Uruchom go, aby upewnić się, że wszystko działa:
dotnet run
2. Aktualizowanie kodu w celu sprawdzenia tożsamości
Najpierw zaktualizuj plik project, aby był przeznaczony dla określonej wersji zestawu Windows SDK. Otwórz dotnet-app.csproj plik i zmień element TargetFramework:
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Teraz zastąp zawartość elementu 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. Uruchamianie bez tożsamości
dotnet run
Powinien zostać wyświetlony komunikat "Nie spakowane".
4. Zainicjuj projekt za pomocą interfejsu wiersza polecenia winapp
Polecenie winapp init automatycznie wykrywa pliki .csproj i uruchamia konfigurację specyficzną dla .NET:
winapp init
Po wyświetleniu monitu:
- Nazwa pakietu: naciśnij klawisz Enter, aby zaakceptować wartość domyślną
- Nazwa wydawcy: Naciśnij klawisz Enter, aby zaakceptować wartość domyślną lub wprowadź swoją nazwę
- Opis: Naciśnij klawisz Enter, aby zaakceptować wartość domyślną lub wprowadzić opis
- Wersja: Naciśnij klawisz Enter, aby zaakceptować 1.0.0.0
- Punkt wejścia: Naciśnij klawisz Enter, aby zaakceptować wartość domyślną (dotnet-app.exe)
- Windows App SDK setup: Wybierz Stable, Preview lub Experimental
To polecenie:
- Aktualizuje
TargetFrameworkw.csprojdo obsługiwanego Windows TFM (jeśli to konieczne) - Dodaje odwołania do pakietów NuGet
Microsoft.WindowsAppSDKiMicrosoft.Windows.SDK.BuildTools - Tworzy
appxmanifest.xmliAssetsfolder dla tożsamości aplikacji
Uwaga / Notatka
W przeciwieństwie do projektów natywnych/C++ przepływ .NET nie tworzy pliku winapp.yaml. Pakiety NuGet są zarządzane bezpośrednio za pośrednictwem elementu .csproj. Użyj dotnet restore, aby przywrócić pakiety po sklonowaniu.
5. Debugowanie przy użyciu tożsamości
Skompiluj plik wykonywalny:
dotnet build -c DebugZastosuj tożsamość debugowania:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeUruchom plik wykonywalny (nie używaj
dotnet rungo, ponieważ może zostać ponownie skompilowany):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Powinieneś zobaczyć:
Package Family Name: dotnet-app_12345abcde
Automatyzowanie tożsamości debugowania (opcjonalnie)
Dodaj ten element docelowy do pliku .csproj.
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Używanie Windows App SDK
Jeśli uruchomiono polecenie winapp init, Microsoft.WindowsAppSDK zostało już dodane jako odwołanie do pakietu NuGet. Zaktualizuj Program.cs, aby korzystać z Windows App Runtime API:
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. Pakiet z plikiem MSIX
Kompilacja do wydania:
dotnet build -c ReleaseGenerowanie certyfikatu programistycznego:
winapp cert generate --if-exists skipPakowanie i podpisywanie:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxZainstaluj certyfikat (uruchom jako administrator):
winapp cert install .\devcert.pfxZainstaluj , klikając dwukrotnie wygenerowany
.msixplik.
Wskazówka
- Sklep Microsoft Store podpisuje plik MSIX, dlatego nie trzeba się podpisywać przed przesłaniem.
- Może być konieczne oddzielne pakiety MSIX dla każdej architektury:
dotnet build -c Release -r win-x64lubdotnet build -c Release -r win-arm64.
Automatyzowanie pakowania MSIX (opcjonalnie)
Dodaj ten element docelowy do elementu .csproj:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>