Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Esta guía funciona para la mayoría de los tipos de .NET project. Los pasos se han probado con proyectos basados en la consola y en la interfaz de usuario, como WPF.
En esta guía se muestra cómo usar la CLI de winapp con una aplicación de .NET para realizar depuración con la identidad del paquete y empaquetar tu aplicación en un MSIX.
La identidad del paquete es un concepto básico en el modelo de Windows app. Permite a tu aplicación acceder a APIs específicas de Windows (como notificaciones, seguridad, APIs de IA, etc.), tener una experiencia de instalación y desinstalación limpia, etc.
Prerrequisitos
.NET SDK: Instale el SDK de .NET:
winget install Microsoft.DotNet.SDK.10 --source wingetCLI de winapp: instale la
winappherramienta mediante winget:winget install Microsoft.winappcli --source winget
1. Crear una nueva aplicación de .NET
Empiece por crear una aplicación de consola de .NET sencilla:
dotnet new console -n dotnet-app
cd dotnet-app
Ejecútelo para asegurarse de que todo funciona:
dotnet run
2. Actualización del código para comprobar la identidad
En primer lugar, actualice el archivo project para tener como destino una versión específica de Windows SDK. Abra dotnet-app.csproj y cambie :TargetFramework
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Ahora reemplace el contenido de 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. Ejecutar sin identidad
dotnet run
Debería ver "No empaquetado".
4. Inicie el proyecto con la CLI de winapp
El comando
winapp init
Cuando se le solicite,
- Nombre del paquete: presione Entrar para aceptar el valor predeterminado.
- Nombre del editor: Presione Intro para aceptar el valor predeterminado o escriba su nombre.
- Descripción: presione Entrar para aceptar el valor predeterminado o escriba una descripción.
- Versión: presione Entrar para aceptar 1.0.0.0.
- Punto de entrada: presione Entrar para aceptar el valor predeterminado (dotnet-app.exe)
- Windows App SDK configuración: Seleccione Estable, Versión preliminar o Experimental
Este comando:
- Actualiza el
TargetFrameworken tu.csproja un TFM de Windows compatible (si es necesario) - Agrega
Microsoft.WindowsAppSDKyMicrosoft.Windows.SDK.BuildToolsreferencias de paquetes NuGet - Crea la carpeta
appxmanifest.xmlyAssetspara la identidad de tu aplicación
Nota:
A diferencia de los proyectos nativos o de C++, el flujo de .NET no crea un archivo winapp.yaml. Los paquetes NuGet se administran directamente a través de .csproj. Use dotnet restore para restaurar paquetes después de la clonación.
5. Depurar con identidad
Compile el archivo ejecutable:
dotnet build -c DebugAplicar la identidad de depuración:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeEjecute el archivo ejecutable (no utilice
dotnet runya que podría reconstruir):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Debería ver lo siguiente:
Package Family Name: dotnet-app_12345abcde
Automatizar identidad de depuración (opcional)
Agregue este destino al .csproj archivo:
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Uso de Windows App SDK
Si ejecutó winapp init, Microsoft.WindowsAppSDK ya se agregó como referencia de paquete NuGet. Actualice Program.cs para usar la API de 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. Paquete con MSIX
Compilación para lanzamiento:
dotnet build -c ReleaseGenere un certificado de desarrollo:
winapp cert generate --if-exists skipEmpaquetar y firmar:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxInstale el certificado (ejecute como administrador):
winapp cert install .\devcert.pfxInstale haciendo doble clic en el archivo generado
.msix.
Sugerencia
- La Microsoft Store firma el MSIX por ti, no es necesario firmar antes de la submisión.
- Es posible que necesite paquetes MSIX independientes para cada arquitectura:
dotnet build -c Release -r win-x64odotnet build -c Release -r win-arm64.
Automatización del empaquetado MSIX (opcional)
Agregue este objetivo 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>
Temas relacionados
- Referencia de la CLI de winapp
- Introducción a la CLI de winapp
- documentación de Windows App SDK