유니버설 Windows 플랫폼 콘솔 앱 만들기
이 항목에서는 C++/WinRT 또는 C++/CX 유니버설 Windows 플랫폼(UWP) 콘솔 앱을 만드는 방법을 설명합니다.
참고
콘솔 앱(유니버설) Project 템플릿 확장은 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를 참조하세요.