유니버설 Windows 플랫폼 콘솔 앱 만들기
이 항목에서는 C++/WinRT 또는 C++/CX 유니버설 Windows 플랫폼(UWP) 콘솔 앱을 만드는 방법을 설명합니다.
참고 항목
콘솔 앱(유니버설) 프로젝트 템플릿 확장자는 Visual Studio 2022를 지원하지 않습니다. 이 템플릿을 설치하고 사용하려면 Visual Studio 2017 또는 Visual Studio 2019가 있어야 합니다.
Windows 10 버전 1803부터 DOS 또는 PowerShell 콘솔 창과 같은 콘솔 창에서 실행되는 C++/WinRT 또는 C++/CX UWP 콘솔 앱을 작성할 수 있습니다. 콘솔 앱은 입력 및 출력에 콘솔 창을 사용하며 printf 및 getchar와 같은 유니버설 C 런타임 함수를 사용할 수 있습니다. UWP 콘솔 앱을 Microsoft Store에 게시할 수 있습니다. UWP 콘솔 앱에는 앱 목록의 항목과 시작 메뉴에 고정할 수 있는 기본 타일이 있습니다. 일반적으로 명령줄에서 UWP 콘솔 앱을 시작하지만 시작 메뉴에서 시작할 수도 있습니다.
작동 중인 앱을 하나 보려면 UWP 콘솔 앱 만들기에 대한 동영상을 참조하세요.
UWP 콘솔 앱 템플릿 사용
UWP 콘솔 앱을 만들려면 먼저 Visual Studio Marketplace에 있는 콘솔 앱(유니버설) 프로젝트 템플릿을 설치하세요. 설치된 템플릿은 새 프로젝트>설치됨>기타 언어>Visual C++>Windows 유니버설에서 콘솔 앱 C++/WinRT(유니버설 Windows) 및 콘솔 앱 C++/CX(유니버설 Windows)로 사용됩니다.
main()에 코드 추가
템플릿은 main()
함수가 포함된 Program.cpp를 추가합니다. 이는 UWP 콘솔 앱에서 실행이 시작되는 위치입니다. __argc
및 __argv
매개 변수로 명령줄 인수에 액세스합니다. main()
에서 제어가 반환되면 UWP 콘솔 앱이 종료됩니다.
콘솔 앱 C++/WinRT 템플릿에서 다음 Program.cpp의 예를 추가합니다.
#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();
}
UWP 콘솔 앱 동작
UWP 콘솔 앱은 실행되는 디렉토리 및 하위 디렉토리에서 파일 시스템에 액세스할 수 있습니다. 이는 템플릿이 AppExecutionAlias 확장을 앱의 Package.appxmanifest 파일에 추가하기 때문에 가능합니다. 이 확장을 사용하면 사용자가 콘솔 창에서 앨리어스를 입력하여 앱을 시작할 수 있습니다. 앱이 시스템 경로에 있지 않아도 앱을 시작할 수 있습니다.
파일 액세스 권한에서 설명된 대로 제한된 접근 권한 값 broadFileSystemAccess
를 추가하여 파일 시스템에 대한 광범위한 액세스 권한을 UWP 콘솔 앱에 추가적으로 제공할 수 있습니다. 이 접근 권한 값은 Windows.Storage 네임스페이스의 API에 대해 작동합니다.
템플릿이 SupportsMultipleInstances 접근 권한 값을 앱의 Package.appxmanifest 파일에 추가하므로 여러 개의 UWP 콘솔 앱 인스턴스를 한 번에 실행할 수 있습니다.
또한 템플릿은 Subsystem="console"
접근 권한 값을 Package.appxmanifest 파일에 추가하여 이 UWP 앱이 콘솔 앱임을 표시합니다. desktop4
및 iot2 namespace
접두사를 기록해 두세요. UWP 콘솔 앱은 데스크톱 및 사물 인터넷(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>
UWP 콘솔 앱을 위한 추가 고려 사항
- C++/WinRT 및 C++/CX UWP 앱만 콘솔 앱이 될 수 있습니다.
- UWP 콘솔 앱은 데스크톱 또는 IoT 프로젝트 유형을 대상으로 해야 합니다.
- UWP 콘솔 앱에서 창을 만들 수 없습니다. MessageBox() 또는 Location()이나 사용자 동의 프롬프트와 같은 여타의 이유로 창을 만들 수 있는 다른 API를 사용할 수 없습니다.
- UWP 콘솔 앱은 백그라운드 작업을 사용하지도 않고 백그라운드 작업으로 저장하지 않을 수도 있습니다.
- 명령줄 활성화를 제외하고 UWP 콘솔 앱은 파일 연결, 프로토콜 연결 등의 활성화를 지원하지 않습니다.
- UWP 콘솔 앱은 다중 인스턴스를 지원하지만 다중 인스턴스 리디렉션은 지원하지 않습니다.
- UWP 앱에 사용할 수 있는 Win32 API 목록을 보려면 UWP 앱용 Win32 및 COM API를 참조하세요.