Creare un'app console UWP (Universal Windows Platform)

Questo argomento descrive come creare un'app console C++/WinRT o C++/CX piattaforma UWP (Universal Windows Platform).

Nota

L'estensione Modelli di progetto app console (universali) non supporta Visual Studio 2022. Visual Studio 2017 o Visual Studio 2019 è necessario per installare e usare questi modelli.

A partire da Windows 10, versione 1803, puoi scrivere app console UWP C++/WinRT o C++/CX eseguite in una finestra della console, ad esempio una finestra della console DOS o PowerShell. Le app console usano la finestra della console per l'input e l'output e possono usare funzioni universalI C Runtime, ad esempio printf e getchar. Le app console UWP possono essere pubblicate in Microsoft Store. Hanno una voce nell'elenco di app e un riquadro primario che può essere aggiunto al menu Start. Le app console UWP possono essere avviate dal menu Start, anche se in genere le avvierai dalla riga di comando.

Per visualizzarne una in azione, ecco un video sulla creazione di un'app console UWP.

Usare un modello di app console UWP

Per creare un'app console UWP, installare prima di tutto i modelli di progetto app console (universali), disponibili in Visual Studio Marketplace. I modelli installati sono quindi disponibili in Nuovo progetto>Installato>Altre lingue>Visual C++>Windows universale as Console App C++/WinRT (Windows universale) and Console App C++/CX (Windows universale).

Aggiungi il tuo codice a main()

I modelli aggiungono Program.cpp, che contiene la funzione main(). Questa è la posizione in cui inizia l'esecuzione in un'app console UWP. Accedere agli argomenti della riga di comando con i parametri __argc e __argv. L'app console UWP viene chiusa quando il controllo viene restituito da main().

L'esempio seguente di Program.cpp viene aggiunto dal modello App console C++/WinRT:

#include "pch.h"

using namespace winrt;

// This example code shows how you could implement the required main function
// for a Console UWP Application. You can replace all the code inside main
// with your own custom code.

int __cdecl main()
{
    // You can get parsed command-line arguments from the CRT globals.
    wprintf(L"Parsed command-line arguments:\n");
    for (int i = 0; i < __argc; i++)
    {
        wprintf(L"__argv[%d] = %S\n", i, __argv[i]);
    }

    // Keep the console window alive in case you want to see console output when running from within Visual Studio
    wprintf(L"Press 'Enter' to continue: ");
    getchar();
}

Comportamento dell'app console UWP

Un'app console UWP può accedere al file system dalla directory da cui viene eseguita e da quelle inferiori. Ciò è possibile perché il modello aggiunge l'estensione AppExecutionAlias al file Package.appxmanifest dell'app. Questa estensione consente inoltre all'utente di digitare l'alias da una finestra della console per avviare l'app. L'app non deve trovarsi nel percorso di sistema da avviare.

Puoi anche concedere ampio accesso al file system all'app console UWP aggiungendo la funzionalità con restrizioni broadFileSystemAccess come descritto in Autorizzazioni di accesso ai file. Questa funzionalità è valida con le API nello spazio dei nomi Windows.Storage.

È possibile eseguire più istanze di un'app console UWP alla volta perché il modello aggiunge la funzionalità SupportsMultipleInstances al file Package.appxmanifest dell'app.

Il modello aggiunge anche la funzionalità Subsystem="console" al file Package.appxmanifest, che indica che questa app UWP è un'app console. Prendere nota dei prefissi desktop4 e iot2 namespace. Le app console UWP sono supportate solo nei progetti desktop e Internet delle cose (IoT).

<Package
  ...
  xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4" 
  xmlns:iot2="http://schemas.microsoft.com/appx/manifest/iot/windows10/2" 
  IgnorableNamespaces="uap mp uap5 desktop4 iot2">
  ...
  <Applications>
    <Application Id="App"
    ...
      desktop4:Subsystem="console" 
      desktop4:SupportsMultipleInstances="true" 
      iot2:Subsystem="console" 
      iot2:SupportsMultipleInstances="true"  >
      ...
      <Extensions>
          <uap5:Extension 
            Category="windows.appExecutionAlias" 
            Executable="YourApp.exe" 
            EntryPoint="YourApp.App">
            <uap5:AppExecutionAlias desktop4:Subsystem="console">
              <uap5:ExecutionAlias Alias="YourApp.exe" />
            </uap5:AppExecutionAlias>
          </uap5:Extension>
      </Extensions>
    </Application>
  </Applications>
    ...
</Package>

Considerazioni aggiuntive per le app console UWP

  • Solo le app UWP C++/WinRT e C++/CX possono essere app console.
  • Le app console UWP devono essere destinate al tipo di progetto Desktop o IoT.
  • Le app console UWP potrebbero non creare una finestra. Non possono usare MessageBox() o Location() o qualsiasi altra API che può creare una finestra per qualsiasi motivo, ad esempio richieste di consenso dell'utente.
  • Le app console UWP potrebbero non utilizzare attività in background né fungere da attività in background.
  • Ad eccezione dell'attivazione della riga di comando, le app console UWP non supportano i contratti di attivazione, tra cui associazione di file, associazione di protocolli e così via.
  • Anche se le app console UWP supportano istanze multiple non supportano il reindirizzamento a più istanze
  • Per un elenco delle API Win32 disponibili per le app UWP, vedi API Win32 e COM per le app UWP