Aplicações de consola com SDK de Aplicações Windows

Pode criar aplicações de consola que utilizam funcionalidades do SDK de Aplicações Windows, como gestão do ciclo de vida da aplicação, ativação rica, notificações push e muito mais. Ao contrário das aplicações de consola UWP (que exigiam modelos especiais e C++/WinRT), as aplicações de consola de ambiente de trabalho usam tipos de projeto padrão em .NET ou C++.

Crie uma aplicação de consola com o SDK de Aplicações Windows

Passo 1: Criar um projeto de consola .NET

Use o modelo padrão da aplicação de consola .NET:

dotnet new console -n MyConsoleApp
cd MyConsoleApp

Passo 2: Adicionar o pacote NuGet do SDK de Aplicações Windows

dotnet add package Microsoft.WindowsAppSDK

Passo 3: Usar APIs do SDK de Aplicações 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();
    }
}

Identidade de pacote para aplicações de consola

Algumas funcionalidades do SDK de Aplicações Windows requerem identidade de pacote MSIX. Pode atribuir identidade ao pacote da sua app de consola de duas formas:

  • Empacote como MSIX — Crie um projeto de empacotamento de aplicações do Windows e adicione a sua aplicação de consola como referência.
  • Utilizar identidade externa — Registe um pacote esparso para fins de identidade sem empacotamento MSIX completo.

Note

Funcionalidades como notificações push, tarefas em segundo plano e serviços de aplicação exigem identidade de pacote. APIs básicas do ciclo de vida e de ativação funcionam sem empacotamento.

Diferenças em relação às aplicações de consola UWP

Feature Aplicações de consola UWP Aplicações de consola para ambiente de trabalho
Suporte de idiomas Apenas C++/WinRT e C++/CX C#, C++ e qualquer linguagem .NET
Modelo de projeto Modelo especial de consola UWP (VS 2017/2019) Consola .NET padrão ou Win32
Requisito de manifesto desktop4:Subsystem="console" Não é obrigatório
Activation AppExecutionAlias no ficheiro de manifesto Linha de comandos padrão ou ativação rica
Integração SDK Limitado a APIs WinRT Acesso total ao SDK de Aplicações Windows

Importante

As aplicações de consola UWP exigiam modelos especiais do Visual Studio que já não são mantidos ativamente. Para novas aplicações de consola, use um projeto padrão de consola .NET com o pacote NuGet do SDK de Aplicações Windows.

Cenários comuns

Ferramentas de linha de comandos com integração no Windows

Construa ferramentas de CLI que se integrem com funcionalidades do 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());

Processamento em segundo plano

As aplicações de consola funcionam bem para tarefas de processamento em segundo plano:

  • Utilitários de importação/exportação de dados
  • Observadores e processadores de ficheiros
  • Executáveis de tarefas agendadas
  • Ferramentas de programador e scripts de automação