Aplicaciones de consola con SDK de Aplicaciones para Windows

Puede crear aplicaciones de consola que usen características de SDK de Aplicaciones para Windows, como la administración del ciclo de vida de las aplicaciones, la activación enriquecida, las notificaciones push, etc. A diferencia de las aplicaciones de consola de UWP (que requieren plantillas especiales y C++/WinRT), las aplicaciones de consola de escritorio usan tipos de proyecto estándar .NET o C++.

Creación de una aplicación de consola con SDK de Aplicaciones para Windows

Paso 1: Crear un proyecto de consola de .NET

Use la plantilla de aplicación de consola de .NET estándar:

dotnet new console -n MyConsoleApp
cd MyConsoleApp

Paso 2: Agregar el paquete NuGet de SDK de Aplicaciones para Windows

dotnet add package Microsoft.WindowsAppSDK

Paso 3: Uso de las API de SDK de Aplicaciones para Windows

using Microsoft.Windows.AppLifecycle;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Console app with Windows App SDK");

        // Check activation kind
        var activatedArgs = AppInstance.GetCurrent().GetActivatedEventArgs();
        Console.WriteLine($"Activation kind: {activatedArgs.Kind}");

        // Use single-instance pattern
        var instance = AppInstance.FindOrRegisterForKey("my-console-app");
        if (!instance.IsCurrent)
        {
            Console.WriteLine("Another instance is running. Redirecting...");
            await instance.RedirectActivationToAsync(activatedArgs);
            return;
        }

        // Your app logic here
        Console.WriteLine("Press Enter to exit.");
        Console.ReadLine();
    }
}

Identidad del paquete para aplicaciones de consola

Algunas características de SDK de Aplicaciones para Windows requieren la identidad del paquete MSIX. Puede proporcionar la identidad del paquete de la aplicación de consola de dos maneras:

  • Paquete como MSIX: cree un Windows Application Packaging Project y agregue la aplicación de consola como referencia.
  • Usar identidad externa : registre un paquete disperso para la identidad sin empaquetado MSIX completo.

Note

Las características como las notificaciones push, las tareas en segundo plano y los servicios de aplicaciones requieren la identidad del paquete. Las API básicas de ciclo de vida y activación funcionan sin empaquetar.

Diferencias con las aplicaciones de consola de UWP

Feature Aplicaciones de consola para UWP Aplicaciones de consola de escritorio
Compatibilidad con idiomas Solo C++/WinRT y C++/CX C#, C++y cualquier lenguaje de .NET
plantilla de Project Plantilla especial de consola para UWP (VS 2017/2019) Consola de .NET estándar o Win32
Requisito de manifiesto desktop4:Subsystem="console" No es necesario
Activation AppExecutionAlias en manifiesto Línea de comandos estándar o activación enriquecida
Integración del SDK Limitado a las API de WinRT Acceso completo SDK de Aplicaciones para Windows

Importante

Las aplicaciones de consola de UWP requieren plantillas de Visual Studio especiales que ya no se mantienen activamente. Para las nuevas aplicaciones de consola, use un proyecto de consola de .NET estándar con el paquete NuGet SDK de Aplicaciones para Windows.

Escenarios comunes

Herramientas de línea de comandos con integración de Windows

Cree herramientas de la CLI que se integren con las características de Windows:

using Microsoft.Windows.AppNotifications;

// Send a notification from a console app (requires package identity)
var builder = new AppNotificationBuilder()
    .AddText("Build complete")
    .AddText("Your project built successfully.");

AppNotificationManager.Default.Show(builder.BuildNotification());

Procesamiento en segundo plano

Las aplicaciones de consola funcionan bien para las tareas de procesamiento en segundo plano:

  • Utilidades de importación y exportación de datos
  • Supervisores de archivos y procesadores
  • Ejecutables de tareas programadas
  • Herramientas para desarrolladores y scripts de automatización