Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Questa guida funziona per la maggior parte dei tipi di .NET project. I passaggi sono stati testati sia con progetti basati su console che su interfaccia utente come WPF.
Questa guida illustra come usare l'interfaccia della riga di comando di winapp con un'applicazione .NET per eseguire il debug con l'identità del pacchetto e creare un pacchetto dell'applicazione come MSIX.
L'identità del pacchetto è un concetto di base nel modello di Windows app. Consente all'applicazione di access API Windows specifiche (ad esempio Notifiche, Sicurezza, API di intelligenza artificiale e così via), avere un'esperienza di installazione/disinstallazione pulita e altro ancora.
Prerequisiti
.NET SDK: Installa il .NET SDK:
winget install Microsoft.DotNet.SDK.10 --source wingetCLI di winapp: installa lo
winappstrumento tramite winget:winget install Microsoft.winappcli --source winget
1. Creare una nuova app .NET
Per iniziare, creare una semplice applicazione console .NET:
dotnet new console -n dotnet-app
cd dotnet-app
Eseguirlo per verificare che tutto funzioni:
dotnet run
2. Aggiornare il codice per verificare l'identità
Prima di tutto, aggiornare il file project per specificare una versione specifica di Windows SDK. Aprire dotnet-app.csproj e modificare :TargetFramework
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Sostituire ora il contenuto di 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. Eseguire senza identità
dotnet run
Verrà visualizzato il messaggio "Non incluso nel pacchetto".
4. Inizializzare il progetto con la CLI di winapp
Il comando winapp init rileva automaticamente i file .csproj ed esegue un'installazione specifica di .NET:
winapp init
Quando richiesto:
- Nome pacchetto: premere INVIO per accettare l'impostazione predefinita
- Publisher nome: premere INVIO per accettare il valore predefinito o immettere il nome
- Descrizione: premere INVIO per accettare l'impostazione predefinita o immettere una descrizione
- Versione: premere INVIO per accettare 1.0.0.0
- Punto di ingresso: premere INVIO per accettare il valore predefinito (dotnet-app.exe)
- Windows App SDK setup: Seleziona Stabile, Anteprima o Sperimentale
Questo comando:
- Aggiorna il
TargetFrameworknel tuo.csproja un TFM di Windows supportato (se necessario) - Aggiunge
Microsoft.WindowsAppSDKeMicrosoft.Windows.SDK.BuildToolsriferimenti al pacchetto NuGet - Crea le cartelle
appxmanifest.xmleAssetsper l'identità dell'app
Annotazioni
A differenza dei progetti nativi/C++, il flusso del .NET non crea un file winapp.yaml. I pacchetti NuGet vengono gestiti direttamente tramite .csproj. Usare dotnet restore per ripristinare i pacchetti dopo la clonazione.
5. Eseguire il debug con l'identità
Compilare il file eseguibile:
dotnet build -c DebugApplicare l'identità di debug:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeEseguire l'eseguibile (non usare
dotnet runpoiché potrebbe ricompilare):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Dovresti vedere:
Package Family Name: dotnet-app_12345abcde
Automazione dell'identità di debug (facoltativo)
Aggiungi questo obiettivo al file .csproj.
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Uso di Windows App SDK
Se esegui winapp init, Microsoft.WindowsAppSDK è già stato aggiunto come riferimento al pacchetto NuGet. Aggiornare Program.cs per usare l'API di 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. Pacchetto con MSIX
Compilazione per il rilascio:
dotnet build -c ReleaseGenerare un certificato di sviluppo:
winapp cert generate --if-exists skipPacchetto e firma:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxInstallare il certificato (esegui come amministratore):
winapp cert install .\devcert.pfxEseguire l'installazione facendo doppio clic sul file generato
.msix.
Suggerimento
- Microsoft Store firma MSIX per te, non è necessario firmare prima dell'invio.
- Potrebbe essere necessario separare i pacchetti MSIX per ogni architettura:
dotnet build -c Release -r win-x64odotnet build -c Release -r win-arm64.
Automazione della creazione di pacchetti MSIX (facoltativo)
Aggiungi questa destinazione a .csproj:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>