이 항목에서는 C++/WinRT 또는 C ++/CX UWP(유니버설 Windows 플랫폼) 콘솔 앱을 만드는 방법을 설명합니다.
비고
콘솔 앱(유니버설) 프로젝트 템플릿 확장은 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 콘솔 앱을 만들려면 먼저 Visual Studio Marketplace에서 사용할 수 있는 콘솔 앱(유니버설) 프로젝트 템플릿을 설치합니다. 설치된 템플릿은 새 프로젝트>설치됨>기타 언어>Visual C++>Windows 유니버설에서 콘솔 앱 C++/WinRT(유니버설 Windows) 및 콘솔 앱 C++/CX(유니버설 Windows)로 사용할 수 있습니다.
main()에 코드 추가
템플릿은 함수를 포함하는 main()
을 추가합니다. 여기서 UWP 콘솔 앱에서 실행이 시작됩니다.
__argc
및 __argv
매개 변수를 사용하여 명령줄 인수에 액세스합니다. 제어가 main()
에서 반환되면, UWP 콘솔 앱이 종료됩니다.
Program.cpp 예제는 콘솔 앱 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();
}
UWP 콘솔 앱 동작
UWP 콘솔 앱은 실행되는 디렉터리 및 아래에서 파일 시스템에 액세스할 수 있습니다. 템플릿이 AppExecutionAlias 확장을 앱의 Package.appxmanifest 파일에 추가하기 때문에 가능합니다. 또한 이 확장을 사용하면 사용자가 콘솔 창에서 별칭을 입력하여 앱을 시작할 수 있습니다. 앱이 실행되기 위해 시스템 경로에 있을 필요는 없습니다.
또한 파일 액세스 권한에 설명된 대로 제한된 기능을 broadFileSystemAccess
추가하여 UWP 콘솔 앱에 파일 시스템에 대한 광범위한 액세스를 제공할 수 있습니다. 이 기능은 Windows.Storage 네임스페이스의 API에서 작동합니다.
템플릿이 SupportsMultipleInstances 기능을 앱의 Package.appxmanifest 파일에 추가하기 때문에 UWP 콘솔 앱의 인스턴스를 두 개 이상 한 번에 실행할 수 있습니다.
또한 이 템플릿은 이 UWP 앱이 콘솔 앱임을 나타내는 Package.appxmanifest 파일에 기능을 추가 Subsystem="console"
합니다.
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 콘솔 앱은 백그라운드 작업을 사용할 수 없으며 백그라운드 작업으로 작동할 수도 없습니다.
- Command-Line 활성화를 제외하고, UWP 콘솔 앱은 파일 연결, 프로토콜 연결 등을 포함한 활성화 계약을 지원하지 않습니다.
- UWP 콘솔 앱은 다중 인스턴싱을 지원하지만, 다중 인스턴싱 리디렉션을 지원하지 않습니다.
- UWP 앱에서 사용할 수 있는 Win32 API 목록을 보려면 Win32 및 UWP 앱용 COM API를 참조하세요