WinUI 3.0์ ์ถ์์ ํจ๊ป ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต๊ณ ์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๋ง๋ค๊ณ ์ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๊ทํ์ ๋์๊ณผ ํผ๋๋ฐฑ์ ํ์ํฉ๋๋ค. ์ด ํ ๋ก ์ฃผ์ ๋ WinUI 3.0์ ์ํ ๊ฐ๋ฐ ๊ฒฝํ ๋ฐ ๋๊ตฌ์ ์ค์ ์ ๋ก๋๋ค.
๋ฐ์คํฌํฑ์ WinUI๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ธ์์ Windows UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. @marb2000 ์ ์์ผ๋ก ๋ช ์ฃผ ๋์ ๋ ์์ธํ ํ ๋ก ๊ฒ์๋ฌผ์ ์์ฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ ์์ ์ํด ๊ทธ๋๊น์ง ์ด ์ค๋ ๋๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ญ์์ค.
WinUI 3.0์ ์ฌ์ฉํ์ฌ Visual Studio 2019์ฉ ์ ์์ฉ ํ๋ก๊ทธ๋จ ํ ํ๋ฆฟ์ ๋ง๋ค ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํ ํ๋ฆฟ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๊ฐ๋๋ WinUI 3.0์ ํ์ํ ๋ชจ๋ ํญ๋ชฉ์ด ํฌํจ๋ฉ๋๋ค. ์ฐธ์กฐ์ ํตํฉ๋ WinUI Nuget ํจํค์ง, ์ ๋ฐ์ดํธ๋ ์ฝ๋ ์จ๊น ๋ฐ ๋๊ตฌ ์ฐฝ์ ๋์ด๋ ํ ์ธํธ์ ์ปจํธ๋กค. ์ค๋๋ WinUI Nuget์ ์ถ๊ฐํ๋ฉด Intellisense์ ๋๊ตฌ ์ฐฝ์์ ์ก์ธ์คํ ์ ์๋ ๋ ๊ฐ์ง ์ปจํธ๋กค ์ธํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
์๋ ์๋ด์์๋ WinUI 3.0 UWP C# ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋ก์ด ํ๊ฒฝ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๊ทํ์ ํผ๋๋ฐฑ(ํ ๋ก ์ค๋ ๋ ๋งํฌ)์ ๋ค์๊ณ ์ฌ๊ธฐ์ WinUI 3.0๊ณผ ํจ๊ป ์ง์ํ ๊ณํ์ธ ์ธ์ด ๋ชฉ๋ก์ด ๋ช ์๋์ด ์์ต๋๋ค.
ํ ๋ก ์์ ์ป์ ์ง์ ์ ์ธ ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก F# ์ง์์ ๋ชจ์ํ๊ณ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
๋ง์ด๊ทธ๋ ์ด์ (WinUI 3.0 ์ฑํ) ๋ฐ ํ๋ํ๋ ๊ฐ๋ฅํ ํ ์ฝ๊ฒ ๋ง๋ค๊ณ ์ ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐฉ๋ฒ์ ์๋ ค๋ฉด ๊ทํ์ ๋์์ด ํ์ํฉ๋๋ค.
WinUI 3.0 ๊ฐ๋ฐ์ ์ฌ์ฉ์ ์์ํ๋ ค๋ฉดโฆ
์ฐ๋ฆฌ๋ ์ด ๊ณผ์ ์ ๊ฐ๋ฅํ ํ ๊ฐ๋จํ๊ฒ ๋ง๋ค๊ณ ์ ํฉ๋๋ค. ๊ด๋ฒ์ํ ๋ฌธ์๋ ํฌํจํ ๊ณํ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ ํ์ฌ ๊ตฌ์ฑ ์์ ๋๋ ์ฌ์ฉ์ ์ง์ ์ปจํธ๋กค์ด ํฌํจ๋์ง ์์ต๋๋ค.
MSIX๋ ๋ชจ๋ ์ฑ์ ๋ํ ์ต์ ํจํค์ง ๋ฐฉ๋ฒ์ ๋๋ค. Win32์ WinUI์ ๊ฒฝ์ฐ ClickOnce๋ฅผ ์ง์ํด์ผ ํฉ๋๊น? ์ด๋ค ๋ค๋ฅธ ํจํค์ง ๋ฐฉ๋ฒ์ ๋ํ ์ง์์ ํฌํจํด์ผ ํฉ๋๊น? ํนํ Win32์ WinUI์ ๊ฒฝ์ฐ
์ฌ๊ธฐ์์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ค๋ฃจ์ง ์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ๊ณ์ํด์ ํ์ฅํ ๊ฒ์ ๋๋ค. WinUI์ ๊ฐ๋ฐ์ ๋ฐ ๋๊ตฌ ์ฌ์ฉ ๊ฒฝํ์ ๋ํ ์๊ฐ, ์ฐ๋ ค ๋๋ ์๊ฒฌ์ด ์๋ ๊ฒฝ์ฐ ์ฃผ์ ํ์ง ๋ง์ญ์์ค. ํ ๋ก ์ ์์ํ๋ ๋ฐ ๋์์ด ๋๋๋ก ์๋ ๋ชฉ๋ก์ ํฌํจํ์ต๋๋ค.
์๋ง๋ ๋จผ ์ด์ผ๊ธฐ์ผ ์ ์์ง๋ง Blend๋ ์ ๋ฐ ๊ฒ์ฌ๊ฐ ํ์ํ๊ณ ๋์์ธ ์ค์ฌ์ ์ํฌํ๋ก๊ฐ ํ์ํฉ๋๋ค.
XAML ๋์์ด๋๋ ๊ฐ๋ ฅํ๊ณ ๊ฐ๋ ฅํด์ผ ํฉ๋๋ค.
ํ์ด์ง/์ฐฝ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์๊ฐํํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ, ํนํ ์์น๋ ์ปจํธ๋กค์์ ์ค์ํฉ๋๋ค.
๊ฐ๋ณ ์ปจํธ๋กค/ํ ํ๋ฆฟ๊ณผ ๊ฐ์ ํ์ด์ง ์ธ๋ถ์ UI ์์๋ฅผ ์๊ฐํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
CoreOS, "Surface Phone", Surface Hub, Xbox, HoloLens์ฉ์ผ๋ก ๋ง๋ค์ด์ง ๋์คํ๋ ์ด ์ปจํธ๋กค ์ฌ์ฉ์ ์ง์ ์ ๋ชจ๋ ๋์์ด๋ ๋ด์์ ์ด๋ฃจ์ด์ง๋๋ค.
WinForms, WPF, MFC ๋ฐ WinUI Desktop์ด ์๋ํ ๊ธฐํ ๋ชจ๋ ํ๋ ์์ํฌ์ ํผํฉ๋ XAML์ฉ ๊ฒฐํฉ ๋์์ด๋.
XAML์ ๊ฐ์ ธ์ค๊ณ ๋ด๋ณด๋ด๋ ์ข์ ๋ฐฉ๋ฒ์ ํตํด ๋์์ด๋๋ ๊ธฐ๋ณธ ์ฑ๊ณผ ๊ฒฉ๋ฆฌ๋ Blend์์ ์์ ํ ๋ค์ ์ด๋ฅผ ๊ฐ๋ฐ ํ์ ์ ๋ฌํ์ฌ ์ฑ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์์คํ ๋ฆฌ์์ค์ ๋ ๋์ ์๊ฐํ ๋ฐ ๋ชฉ๋ก์ ๋ฌผ๋ก ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๊ธฐ ์ํด ๊ฐ๋ฒผ์ด ์คํ์ผ๋ก ์ง์ ํ ์ ์๋ ์ ์ญ ๋ฆฌ์์ค๋ฅผ ๋์ด๋ด๋ ํ๋ฅญํ ๋ฐฉ๋ฒ๊ณผ ๋์์ธ ํ๋ฉด์ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
WinForms, MFC ๋ฑ๊ณผ ๊ด๋ จ๋ ์ฑ์ผ๋ก ๋ค์ํ DPI ํ์ฅ์ ํ ์คํธํ๋ ๋ ๋์ ๋ฐฉ๋ฒ
์๋ก์ด ์ปจํธ๋กค์ฉ ํ ํ๋ฆฟ, ๋ง์ถคํ ํ ๋ง ๋ฆฌ์์ค ์ฌ์ , Fluent ํ ๋ง ํธ์ง๊ธฐ ํตํฉ, ์ง์๋๋ ์ฑ ์กฐํฉ์ฉ ํ ํ๋ฆฟ(Xaml UI๊ฐ ์๋ Win32 MFC ๋ฑ) .
ํ์ผ ์ ํ๊ธฐ, ์์ ํธ๋ ์ด ํ๋ผ์ด์์๊ณผ ๊ฐ์ ์ ธ ํตํฉ ์ง์ ์ฉ ํ ํ๋ฆฟ.
๋ช ๊ฐ์ง ์๊ฐ์ผ ๋ฟ์ ๋๋ค...
์ ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
*.h
๋ฐ *.cpp
ํ์ผ์ ๋ฐ๋ก ์ด๋ํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์์ฑํ๊ณ ์ฝ๋๋ฅผ ๋ณต์ฌํ ๋ค์ vcxproj ํ์ผ์ ์ธ๋ก๋ ๋ฐ ํธ์งํ์ฌ ์ค์ฒฉ์ ์์ ํด์ผ ํฉ๋๋ค.) vcxproj๋ณด๋ค ๋ ํ๋์ ์ด๊ณ ์ ์ฐํ ๊ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง XBF ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐํ ์์กด์ฑ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค.๋ ๋ค๋ฅธ ์ผ์ด ์๊ธฐ๋ฉด ์ด๊ณณ์ ๊ธ์ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์!
์ฌ๊ธฐ์ ๊ถ๊ธํ ๊ฒ์... ๊ธ์, < winui:Listview ๋๋ < controls:listview ๋๋ ๊ฐ๋ฐ์๊ฐ ๊ฒฐ์ ํ ๊ฒ๊ณผ ๊ฐ์ ๋ค์์คํ์ด์ค ์ ๋์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๊น? ๊ฐ๋ฅํ๋ฉด ์ง๊ธ๊ณผ ๊ฐ์ ๊ฒฝํ์ ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
Windows.UI.Xaml.Controls๋ฅผ ์ฌ์ฉํ ์ ์๊ณ WinUI๊ฐ ๊ธฐ๋ณธ ์ ํ์ด๋ฏ๋ก ๋ค์์คํ์ด์ค ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ง๊ธ์ XAML ๋์์ด๋๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋๋ ๋ง ๊ทธ๋๋ก ์ค์ ์์ ๋นํ์ฑํํฉ๋๋ค. XAML Designer๋ ๋๋ฆฌ๊ณ ๋ ๋์ ์ง์์ด ํ์ํฉ๋๋ค. WPF์๋ ์ข์์ง๋ง UWP์๋ ์ข์ง ์์์ต๋๋ค. ํนํ ๋ฐ์ํ ๋์์ธ, ํ์ด์ง ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ํ์ ๋ฑ์ ํ๋ ค๋ ๊ฒฝ์ฐ์ ๊ทธ๋ ์ต๋๋ค.
์ด๊ฒ์ ์๋ง๋ ๋จผ ๋ฏธ๋์ ๋ํ ํผ๋๋ฐฑ์ผ ์ ์์ง๋ง, ์ดํด๋ณด๊ธฐ์ ์ข์ ํผ๋๋ฐฑ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. WPF ๋์์ด๋๊ฐ ํจ์ฌ ๋น ๋ฆ
๋๋ค.
์ด๊ฒ์ ์๋๋ฐ์ค ๋๋ฌธ์
๋๊น ์๋๋ฉด ๋ฌด์ ๋๋ฌธ์
๋๊น?
๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ๋ ๋ฐ ํฅ๋ฏธ๋ก์ด ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค. ํนํ ScrollViewer์ ๊ฐ์ ์ ๋ฐ์ดํธ๋ WinUI 3.0 ์ปจํธ๋กค๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋๊ตฌ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ ๋ฐ์ดํธ/์ฌ์์ฑ๋ ์ปจํธ๋กค์ ๋ํด ์ต์ํ ๊ฐ๋ฅํ ๊ฒฝ๊ณ ๋ฅผ ํ์ํด์ผ ํฉ๋๋ค.
x:Bind
๋ํ ๋์์ธ ๋ฐ์ดํฐ ์ง์์ ํจ์ ๋ฐ์ธ๋ฉ์์ ๋ณต์กํ ๋์ฐ๋ฏธ๋ฅผ ์์ฑ ์ค์ด๋ฏ๋ก ์๋นํ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ xaml ๋ด์ฅ ํจ์๊ฐ ์ผ๋ถ ๋์ฐ๋ฏธ๋ฅผ ๋์ฒดํ ์ ์๋ค๋ฉด ์ํฉ์ด ๋ ๋์์ง ์ ์์ต๋๋ค.TL;DR ์ฑ ๋ชจ๋ธ ์ง์ ์์ ์ธ์คํด์ค ๊ณต์กด์ ์ํฉ๋๋ค. ๋์ผํ ๋ฒ์ ์ด๋ผ๋ Visual Studio ํ์ด๋ธ์ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ/์ต์ ์ธํธ๋ก ์คํํ ์ ์์ต๋๋ค. ํ์ฌ ์ ์ผํ ์๋ฃจ์ ์ xcopy์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ฒซ์งธ, ๋งค์ผ ๊ฐ๋ฐํ๋ ์ฑ๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค(๋๋ถ๋ถ์ ๊ฒฝ์ฐ >>debug ์ฌ์ฉ). ๊ทธ๋์ ์์ ์ ์ธ ๋น๋์ ๊ณต์กดํ๋ ๊ฐ๋ฐ ๋น๋๊ฐ ๋ง์ ๋์์ด ๋ ๊ฒ์
๋๋ค. ํ์ฌ ๋ฒ์ ๋ฒํธ๋ฅผ ๋๋ฆฌ๊ณ , ๋๋ฒ๊ทธ msix๋ฅผ ํจํค์งํ๊ณ , ์ค์น๋ ํจํค์ง ๋ฒ์ ์ ๋๋ฒ๊ทธํ๋๋ก ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๋ค๋ฅธ ๋๋ฒ๊ทธ ๋จ๊ณ์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํ ๊ฒ์
๋๋ค. ๋ณต์กํ ์ค์ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๋๋ฒ๊ทธ ์ธ์คํด์ค๊ฐ ์์ ์ ์ธ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์์์ ๊ฐ์ง ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๊ฒฉ๋ฆฌ๋ฅผ ์ํฉ๋๋ค. ์ด๊ฒ์ ์ด๋ก ์ ์ผ๋ก ํด๋ ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ก์ธ์คํ์ฌ ํด๊ฒฐ๋์ง๋ง UWP์ SQLite๊ฐ ์ด๋ฅผ ์ง์ํ์ง ์๊ณ ๋ด๊ฐ ์๋ ๋ค๋ฅธ ์๋ฒ ๋๋ ACID ์์ง์ด ์๋ ๊ฒ์ด ๋๋ฌด ์ ๊ฐ์
๋๋ค.
์, ๊ทธ๋ฆฌ๊ณ ๋ ํ ๊ฐ์ง. vcxproj๊ฐ NuGet ํจํค์ง ์ฐธ์กฐ์ packages.config๋ฅผ ์ฌ์ฉํ๋๋ก ์๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์กฐ์น๋ฅผ ์ทจํ ์ ์๋ค๋ฉด ์ ๋ง _์ ๋ง_ ๊ฐ์ฌํฉ๋๋ค. WinUI๋ C++/WinRT ๋ฐ ๊ธฐํ ์ฃผ์ ๊ตฌ์ฑ ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก NuGet ํจํค์ง๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ๋๋ packages.config๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ง๋ก ์ข์ํ์ง ์์ต๋๋ค. PackageReference๊ฐ ํจ์ฌ ๋ ํจ์จ์ ์ ๋๋ค(vcxproj๋ฅผ ๋ค๋ฅธ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํด๋ ๋น๋๊ฐ ์์๋์ง ์์). ๋ณต์ ๋์์ด ์ ์ ํ ์๊ฐ์ ์คํ๋๋ ํ vcxproj์์ ์ฌ์ฉํ ๋ ์ค์ ๋ก ์๋ํฉ๋๋ค. (vcxproj ๋์์ด ๋น SDK C# ํ๋ก์ ํธ์ ๋ํ PackageReference ๋ณต์ ๊ธฐ๊ณ๋ฅผ ๊ฐ์ ์ ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋๋ค.) ์ ๋ PackageReference ํญ๋ชฉ ์งํฉ์ด ๋ณ๊ฒฝ๋ ๋ ๋ณต์ ๋์์ ์๋์ผ๋ก ์คํํ๋ ๋์ ์งํฉ์ ์์ฑํ์ต๋๋ค. VS๋ ์ด ์์ ์ ์ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ ์์ฒด(์์ง). ๋ถํํ๋ NuGet ์์คํ ์ ์ด์ ๋ํด ์๋ฌด๊ฒ๋ ์์ง ๋ชปํ๋ฏ๋ก C++/WinRT ํ์ผ ํ ํ๋ฆฟ์ ์ถ๊ฐํ ๋ packages.config ํ์ผ์ ์ถ๊ฐํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๋ก ์ธํด ๋ชจ๋ ์ข ๋ฅ์ ํผ๋์ด ๋ฐ์ํ์ฌ ์์ธ๊ฐ ๋ฐ์ํ๊ณ ํ๋ก์ ํธ ํ์ผ์ด ์์๋ฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ต์ ์ ๋ฐฉ๋ฒ์ ํ์คํ์ง ์์ง๋ง ์ ์ด๋ WinUI 3๊ฐ ์ถ์๋๊ธฐ ์ ์ ์ดํด๋ณผ ์ ์๋ค๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์!
WinUI๊ฐ ์ ํ๋ก์ ํธ SDK( Microsoft.NET.Sdk ๋๋ MSBuild.Sdk.Extras)๋ฅผ ์ง์ํ๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
์ด์ ์คํ์ผ์ csproj ํ์ผ์ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ WinUI๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๋ฐ ์ ์ฉํ ์ ์๋ ์ฌ๋ฌ TargetFrameworks๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
F#์ด ์ง์๋์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ฌ๊ธฐ์์ Azure DevOps ๋ฐ Visual Studio App Center ๊ธฐ๋ฅ์ ๋ ผ์ํด์ผ ํฉ๋๊น?
@vitorgrs ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์์คํ์ด์ค ์ ๋์ฌ๊ฐ ์๋ ๊ธฐ๋ณธ ์ปจํธ๋กค์ ์ ํธํ๋ฉฐ ์ฝ๋์ "๋ ธ์ด์ฆ"๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒ์ด ๊ธฐ๋ณธ ์ปจํธ๋กค์ด๊ณ ์ด๋ค ๊ฒ์ด ํ์ฌ์ธ์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ฌผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๊ฐ ์ข์ ๊ฒ์ ๋๋ค. ํฐ ํ์ฌ ๊ณต๊ธ์(Telerik, DevExpress,...)์ ํจ๊ป ์๋ํ๋ ๊ฒฝ์ฐ ์ด๋ฏธ ํฐ ์ผ์ด ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ฒ์ ์ UWP XAML ํ ํ๋ฆฟ์ ๋ํ ๊ด์ฌ/ํ์๊ฐ VS ์ ํ๋ก์ ํธ ํ๋ฆ์ ๋จ์ ์์ต๋๊น?
๋ด ์ชฝ์์๋ ํ ํ๋ฆฟ์ ์ ์งํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ UWP์ WinUI์ ์๋ ์ปจํธ๋กค์ด ์์ ์ ์์ต๋๊น? ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ ์ ์๋ค๋ฉด ๊ธฐ์กด UWP ์ฑ์ ๋น๋ํ๊ณ ํ์ํ ์ปจํธ๋กค์ด ์์ ๋ WinUI๋ก ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํ๋ ์ ํจํ ์ด์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ ํ๋ฆฟ์ด ํ์ํ ์ ์์ต๋๋ค.
์ฑ์ ๋น๋ํ๊ณ ์ต์ Visual Studio ๋ฒ์ ์ผ๋ก ๋ ์ด์ ์ฑ์ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์์๊ฒ ํผ๋์ ์ค ์๋ ์์ต๋๋ค.
ํ์ง๋ง ๊ฐ์ธ์ ์ผ๋ก ํ ํ๋ฆฟ์ ์ ์งํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
Visual Studio์ ํ ํ๋ฆฟ ๋ฐ ๊ตฌ์ฑ ์์์ ๊ด๋ จํ์ฌ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฑ๊ณต์ ์ผ๋ก ๋์๋๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
๋์๊ฒ ์ด๊ฒ์ UWP์ ์ ํฉํด ๋ณด์ ๋๋ค. ์ด์ Win32์์๋ ๋์ผํ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. :)
์ด ์ฐ์ต์ด ๋์์ด ๋์์ผ๋ฉฐ ์๋๋ฆฌ์ค๊ฐ ๊ตฌ์ฒดํ๋๋ฉด ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์ถ์ต๋๊น?
์, ํ์คํ. ์ด ์ฐ์ต์ ๋ฏธ๋์ ๋ชจ์ต๊ณผ ๋ชจ์ต์ ์ดํดํ๋ ๋ฐ ๋งค์ฐ ๋์์ด ๋ฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๋ ๋ณด๊ณ ์ถ๋ค.
1-3๋จ๊ณ๋ฅผ ์๋ํํ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉด ๋์์ด ๋ ๊น์?
๋ถ๋ช ํ. ์ด ๋ง์ด๊ทธ๋ ์ด์ ์๋ ์ฝ๊ฐ์ Visual Studio ํ์ฅ์ด ํ๋ฅญํ ์ต์ ์ด ๋ ์ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋ ๊ฒ๊ณผ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋ ๊ฒ์ ์ถ๋ ฅํ๋ "WinUI Compatibility Analyzer"์ ๊ฐ์ ๊ฒ๋ ์๊ฐํ ์ ์์ต๋๋ค. .NET ์ด์์ฑ ๋ถ์๊ธฐ์ ์ ์ฌํ ๊ฒ.
๊ธฐ๋ณธ Windows 10 ์ปจํธ๋กค ์ธํธ ์ธ๋ถ์์ ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
์ผ๋ฐ์ ์ผ๋ก Telerik DataGrid ๋ฐ Community Toolkit
ํ์ฌ ์๊ฐํ๊ณ ์์ง ์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์ง์ํ ์ ์์ต๋๊น?
์ค์นํ Win SDK๋ณด๋ค ๋ฎ์ ๋ฒ์ ์ UWP ์ฑ์ Visual Studio์์ ์ด๋ฉด Visual Studio์์ ์๋์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. WinUI ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ํด์๋ ์ด์ ๊ฐ์ ๊ฒ์ ์๊ฐํด์ผ ํ ์๋ ์์ต๋๋ค. ํ์คํ์ง ์์ง๋ง ๋ช ์ฌํด์ผ ํ ์ฌํญ์ ๋๋ค. ํนํ Visual Studio์ ๋ ์ด์ ์ผ๋ฐ UWP ํ ํ๋ฆฟ์ด ์์ผ๋ฉด ํ ํ๋ฆฟ์ผ๋ก ๋ง๋ค ์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ฐ๋ฐ์์๊ฒ ํผ๋์ ์ค ์ ์์ต๋๋ค.
๋ค๋ฅธ ๋๊ธ์์ ์ด๋ฏธ ์ธ๊ธํ๋ฏ์ด SDK ์คํ์ผ์ .csproj ํ์ผ๋ก ์ ํํด์ผ ํ ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Windows ํ ํ๋ฆฟ ์คํ๋์ค์ winui 3.0 ํ ํ๋ฆฟ์ ์ถ๊ฐํฉ๋๋ค.
๋ฐ์คํฌํฑ์ WinUI๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ธ์์ Windows UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. @marb2000 ์ ์์ผ๋ก ๋ช ์ฃผ ๋์ ๋ ์์ธํ ํ ๋ก ๊ฒ์๋ฌผ์ ์์ฑํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ ์์ ์ํด ๊ทธ๋๊น์ง ์ด ์ค๋ ๋๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ญ์์ค.
.net ๊ฐ๋ฐ์๋ก์ ๊ฐ์ฅ ๊ด์ฌ์ด ๊ฐ๋ ๋ถ๋ถ์ ๋๋ค.
- ์ด์ ๋ฒ์ ์ UWP XAML ํ ํ๋ฆฟ์ ๋ํ ๊ด์ฌ/ํ์๊ฐ VS ์ ํ๋ก์ ํธ ํ๋ฆ์ ๋จ์ ์์ต๋๊น?
ํ ํ๋ฆฟ ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ซ์๊ฐ ๋ฎ์ผ๋ฉด(์: "๋น ์ฑ(์ ๋๋ฒ์ค ์๋์ฐ)"๋ง ์ธ์ด๋น, ๊ทธ๋์ C#์ ๊ฒฝ์ฐ 1๊ฐ) ๋ ธ์ด์ฆ๊ฐ ์ ๊ณ ์ง์์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ ํ๋ฆฟ์ด ๋ช ๊ฐ ์ด์ ํฌํจ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจํ์ง ์๊ณ ์ ํ์ VS ์ค์น ๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํ์ฌ ์ถ๊ฐํฉ๋๋ค.
- Visual Studio์ ํ ํ๋ฆฟ ๋ฐ ๊ตฌ์ฑ ์์์ ๊ด๋ จํ์ฌ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฑ๊ณต์ ์ผ๋ก ๋์๋๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ค์บํด๋ฉ์ด ์๋ ์ค์ ๋น ํ ํ๋ฆฟ์ ์ ์งํฉ๋๋ค(ํํ ๋ฆฌ์ผ์ ๋ ์ ํฉ). asp.net ์ฝ์ด๊ฐ ๋ฌด์์ ํ๋์ง ์ดํด๋ณด์ญ์์ค. ์๋ก์ด ํ๋ก์ ํธ ๊ฒฝํ์์ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ฐ ํ ํ๋ฆฟ "์ฑ(UWP WinUI)"์ ์ ํํ ๋ค์ ์ฑ ๋ชจ๋ธ๊ณผ ๊ด๋ จ๋ ๋ ๋ฒ์งธ ํ๋ฉด์์ ๋ค์ํ ํ ํ๋ฆฟ์ ์ ํํ ์ ์์ต๋๋ค. ์ด ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๋ฐ ๋์ ํ๋ซํผ ๋ฒ์ ๋ ์ ํํฉ๋๋ค(์ถ๊ฐ ๋จ๊ณ ์์). ์๋ฅผ ๋ค์ด ์ฑ ํจํค์ง ํ๋ก์ ํธ๋ฅผ ์ง์ ์์ฑํ๋ ์ต์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ํ ํ๋ก์ ํธ ๊ฐ์ ๋๊ตฌ ์์์ ๊ตฌ์ฑ ์์์ ๋ํ ์ข์ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ ์ปจํธ๋กค์ ํ๋ก์ ํธ๋ณ๋ก ๊ทธ๋ฃนํ๋ ๋๊ตฌ ์์์ ์ฆ์ ํ์๋์ด์ผ ํฉ๋๋ค. ์๋ง๋ ๊ทธ๋ค์ ๊ตฌ๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ๋์์ด๋ ์์ด์ฝ์ ๋ํ ์ง์์ผ ๊ฒ์ ๋๋ค.
- ์ด ์ฐ์ต์ด ๋์์ด ๋์์ผ๋ฉฐ ์๋๋ฆฌ์ค๊ฐ ๊ตฌ์ฒดํ๋๋ฉด ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์ถ์ต๋๊น?
์
- 1-3๋จ๊ณ๋ฅผ ์๋ํํ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉด ๋์์ด ๋ ๊น์?
์ข์ ๋ฌธ์(๋ช ํํ ๋จ๊ณ๊ฐ ์๋ ํ ํ์ด์ง)๋ก ์ถฉ๋ถํด์ผ ํฉ๋๋ค. csproj๋ฅผ ์ง์ ํธ์งํ์ง ์๊ณ VS ๋ด์์ ๋ชจ๋ ์์ ์ ์ํํ ์ ์๋ค๋ฉด ๋จ๊ณ๋ฅผ ์ค๋ช ํ๋ ๋ฌธ์ ํ์ด์ง๋ง ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ csproj ํ์์ผ๋ก ์ ํํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด(๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒ ํ๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค) ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด csproj ํ์ผ์ ํธ์งํด์ผ ํ๋ฏ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๊ฐ ํ์คํ ํ์ํฉ๋๋ค.
MSIX๋ ๋ชจ๋ ์ฑ์ ๋ํ ์ต์ ํจํค์ง ๋ฐฉ๋ฒ์ ๋๋ค. Win32์ WinUI์ ๊ฒฝ์ฐ ClickOnce๋ฅผ ์ง์ํด์ผ ํฉ๋๊น? ์ด๋ค ๋ค๋ฅธ ํจํค์ง ๋ฐฉ๋ฒ์ ๋ํ ์ง์์ ํฌํจํด์ผ ํฉ๋๊น? ํนํ Win32์ WinUI์ ๊ฒฝ์ฐ
clickonce์ msix ๋ฐฐํฌ์ ์ฐจ์ด์ ์ ๋น๊ตํ์ญ์์ค.
์ ์๊ฒ ๊ฐ์ฅ ์ฑ๊ฐ์ ๋ฌธ์ ๋ 2์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋๋ฉ์ธ์ ๋ฑ๋ก๋์ง ์์ ์ปดํจํฐ์ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐํฌ๋๋ clickonce ์ฑ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์ข ๋ฅ์ ์ฑ์ ๊ฒฝ์ฐ ์ ํจํ ๊ณต๊ฐ ์๋ช ์ธ์ฆ์๋ก ํจํค์ง์ ์๋ช ํด์ผ ํฉ๋๋ค.
Appx ํจํค์ง ํ์์ ์ข ์ข Store๋ฅผ ๋์์ผ๋ก ํ๋ ์ฑ์ ๋ํด์๋ง ๊ด๊ณ ๋๊ณ ์ ํ ์ฌํญ์ด ํ์๋ ๋ ์น ๋ฐฐํฌ ํ์์๋ ์ ์ฉ๋๋์ง ์ฌ๋ถ๋ฅผ ํญ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ ํ๋ ์์ํฌ ๊ฐ์ ๋ชจ๋ ์ฐจ์ด์ ์ ์์ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
- ๋์์ด๋ ๊ฒฝํ
๊ณต์ฐ, ๊ณต์ฐ, ๊ณต์ฐ, ํ๋ก์ ํธ๊ฐ ๋ง์ ๋๊ท๋ชจ ์๋ฃจ์ ์ง์.
Windows 10 SDK์ WinUI ๋ฒ์ ๊ณผ WinUI Xaml ๋์์ด๋๊ฐ ์คํ ์์ค๋ก ๋ง๋ค์ด์ง ์์ ์ ๋๊น?
๋์์ธ ํ์ ์ํฌํ๋ก ๋ฐ ๊ฒฝํ์ ๋ํ ์์ฒญ์ ๊ฒ์ํ ์ ์์ต๋๊น?
SDK๋ WinUI์ nuget ๋ฆด๋ฆฌ์ค์ ์ ์ฌํ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ฅผ ๊ฒ์ ๋๊น?
์ถ๊ฐ ํต์ฆ:
๊ด๋ฆฌํ ๋น๊ด๋ฆฌํ ๋ฏน์ฑ ๋๋ฒ๊ทธ ํ๊ฒฝ์ ๊ฐ์ ํฉ๋๋ค.
ํ์ฌ ๋น๊ด๋ฆฌ ์ฝ๋์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ๊ด๋ฆฌ ๋๋ฒ๊ทธ ์ฌ์ดํธ์ COMException
๊ฐ ํ์๋ฉ๋๋ค. ํธ์ถ ์คํ์ด ๊ด๋ฆฌ/๋น๊ด๋ฆฌ ๊ฒฝ๊ณ๋ฅผ 1ํ ์ด์ ๊ต์ฐจํ๋ฉด ์ํฉ์ด ๋ ๋๋น ์ง ์ ์์ต๋๋ค.
WPF์ ๋น๊ตํ์ฌ ๊ด๋ฆฌ๋๋ ํธ์ถ ์คํ์ ํญ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ throw๋ ์์ธ๋ ๋๋ฒ๊ทธ์ ์ ์ฉํ ๋ฌธ์์ด์ ์ ๋ฌํฉ๋๋ค.
๊ด๋ฆฌ๋์ง ์๋ ์ธ๊ณ์ COM ๋ชจ๋ธ์ด ๊ด๋ฆฌ๋๋ ๊ฒ๋งํผ ํธ๋ฆฌํ์ง ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ด๋ ํ๋ ์์ํฌ์์ ์์ธ(์๋ชป๋ HResult)๊ฐ ๋ฐ์ํ๋ฉด ์คํ ์์ค ์ ์ฅ์์์ ์ฝ๋ ํ์ ์ฐพ๋ ๋ฐ ํ์ํ ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค . ๋ฐฉ๋ฒ์ ์๋์ผ ์ ์์ง๋ง ๊ฒฐ์ ์ ์ด์ด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ClickOnce์ ํฌ๊ฒ ์์กดํ๋ฏ๋ก ๋จ๊ธฐ์ ์ผ๋ก ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฐ๋ฆฌ๋ MSIX๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ํฅ์ด ์์ง๋ง ์ ์ฌํ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ฉด.
ํ ํ๋ฆฟ์ ๊ฒฝ์ฐ NavigationView ๋ฐ ํ์์ ์ํ ์์ฉ๊ตฌ UI์ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ํ ํ๋ฆฟ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๊ณ ๋ง์
์ฐ๋ฆฌ๋ ClickOnce์ ํฌ๊ฒ ์์กดํ๋ฏ๋ก ๋จ๊ธฐ์ ์ผ๋ก ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฐ๋ฆฌ๋ MSIX๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ํฅ์ด ์์ง๋ง ์ ์ฌํ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ฉด.
ํ ํ๋ฆฟ์ ๊ฒฝ์ฐ NavigationView ๋ฐ ํ์์ ์ํ ์์ฉ๊ตฌ UI์ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ํ ํ๋ฆฟ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๊ณ ๋ง์
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฑ "์" ๊ตฌ์กฐ ๋ฐ ํจํด - ๊ฐ๋ฐ์๊ฐ ๋น ๋ฅด๊ฒ ์์ํ๊ณ ์คํํ ์ ์๋๋ก ํ ํ๋ฆฟ์ผ๋ก ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. Microsoft์ ์์ฌ ์ฑ์ ์ด๋ฌํ ๋ ์ด์์์ ๋ชจ๋ฒ์ด ๋์ด์ผ ํ๋ฉฐ Fluent Design ๋ฐ WinUI์ ๋ํ ๋์, ์ผ๊ด์ฑ ๋ฐ UI ๋์์ธ ๊ท๋ฒ ์ค์ ์ธก๋ฉด์์ ๋ชจ๋ฒ ์ฌ๋ก๋ก ์๋ํด์ผ ํฉ๋๋ค.
@shaggygi @mdtauk
"๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฑ "์" ๊ตฌ์กฐ ๋ฐ ํจํด" ๋ฐ "ํ
ํ๋ฆฟ์ ๊ฒฝ์ฐ NavigationView ๋ฐ ํ์์ ์ํ ์์ฉ๊ตฌ UI ๋ฐ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค." Microsoft์ ์ปค๋ฎค๋ํฐ์์ ์ ์ง ๊ด๋ฆฌํ๊ณ ๊ฐ๋ฐํ๋ Windows ํ
ํ๋ฆฟ ์คํ๋์ค ๊ฐ ์์ต๋๋ค. ์๊ฐ๋ฅผ ์ธ์ฉํ์๋ฉด:
WTS(Windows ํ ํ๋ฆฟ ์คํ๋์ค)๋ ๋ง๋ฒ์ฌ ๊ธฐ๋ฐ ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ ์๋ก์ด UWP(์ ๋๋ฒ์ค Windows ํ๋ซํผ) ์ฑ ์์ฑ์ ๊ฐ์ํํ๋ Visual Studio 2017 ๋ฐ 2019 ํ์ฅ์ ๋๋ค. ๊ฒฐ๊ณผ UWP ํ๋ก์ ํธ๋ ์ต์ Windows 10 ๊ธฐ๋ฅ์ ํตํฉํ๋ ๋์์ ์ ์ฆ๋ ํจํด๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ตฌํํ๋ ์ ๊ตฌ์ฑ๋ ์ฝ๊ธฐ ๊ฐ๋ฅํ ์ฝ๋์ ๋๋ค.
@Felix-Dev๋ ๊ฒฐ๊ตญ UWP ์ธ์๋ WPF ํ ํ๋ฆฟ์ด ์์ต๋๊น?
@shaggygi ๋ฐ๊ฐ์ด ์์์ด ์์ ๊ฒ ์ด ์ค๋ ๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฐ๋ฆฌ๋ C++/WinRT๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ์ฌ xaml ๋์์ด๋ ๋๋ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐํ์์ ์ปจํธ๋กค์ ๋ง๋ค๊ณ UWP xaml์ ํตํด ์คํ์ผ์ ์ง์ ํ ๊ฒ์ ๋๋ค. ๋ํน/ํ๋กํ ์ฐฝ ๋ฑ์ ํฌํจํ์ฌ xaml ์ฌ์ด ์๋ ๋ํ ์์์ ๋ชจ๋๋ฆฌ์ค ์์ Windows๋ ํ์ํฉ๋๋ค.
๋ด C++ ์ฑ์ฉ XAML์ ์์ฑํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ ์ ๊ณ ํต์ค๋ฌ์ด ๊ฒฝํ์ ํ์ต๋๋ค.
๋ชจ๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ํจํค์งํ๊ธฐ ์ํด ๋ฌธ์ํ๋์ง ์์ ๋ง์ ํ๋ก์ ํธ ์์ฑ๊ณผ ๊ธฐํ ํดํน์ ์ถ๊ฐํด์ผ ํ์ต๋๋ค.
์๋ฅผ ๋ค์ด:
<_NoWinAPIFamilyApp>true</_NoWinAPIFamilyApp>
๋ฐ <_VC_Target_Library_Platform>Desktop</_VC_Target_Library_Platform>
๋ ๊ฐ์ง ํ๋ก์ ํธ ์์ฑ์ ์ถ๊ฐํด์ผ ํ์ต๋๋ค. ์ด ์์ฑ์ ์์ ํ ๋ฌธ์ํ๋์ง ์๊ณ ์ ํฐ๋ฏธ๋์ ์์ค ์ฝ๋๋ฅผ ๊ฒ์ฌํด์ผ๋ง ์์๋ผ ์ ์์ต๋๋ค.Microsoft.Toolkit.Win32.UI.XamlApplication
NuGet ํจํค์ง๋ฅผ ์ถ๊ฐํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ ํด๋์ค๋ฅผ ๋ง๋ค์๊ณ Microsoft.VCRTForwarders
๋ ์ถ๊ฐํ ๋๊น์ง ๋ก๋ํ ์ ์์์ต๋๋ค. ๋ค์ ํฐ๋ฏธ๋ ์์ค๋ฅผ ๊ฒ์ฌํ ๋ ์ด๊ฒ์ ์ฐพ์์ต๋๋ค. ๋ ํจํค์ง์ ๋ํ ํ์๊ฐ ์ด๋์๋ ์์ต๋๋ค.<DisableEmbeddedXbf>false</DisableEmbeddedXbf>
๋ฅผ ์ถ๊ฐํ ๋๊น์ง XBF๋ ์๋ํ์ง ์์์ต๋๋ค. ์ด maxVersionTested
๋ ์นด๋ฉ ์ผ์ด์ค ๋ฒ์ ์ ์ฌ์ฉํ๋ผ๋ ์ง์นจ์๋ ๋ถ๊ตฌํ๊ณ ๋ชจ๋ ์๋ฌธ์๋ก ๋ณ๊ฒฝํ ๋๊น์ง ์์ ํ ๋ฌด์๋์์ต๋๋ค. https://github.com/MicrosoftDocs/windows-uwp/issues/1781 # ์ด์ ๋ํ C++/WinRT๋ ๊ณจ์น ์ํ ๋ฌธ์ ์์ต๋๋ค.
[msg]redefinition [context]: MyClass
๊ฐ ์์๋๋ฐ ์ด๋ C++/WinRT ํค๋๋ก ์ธํด ์ค๋ ๊ฑธ๋ฆฌ๋ ํด๋ฆฐ ๋น๋๋ฅผ ์คํํ ๋๊น์ง ๋น๋๋ฅผ ๋ฐฉํดํ๊ณ ์ฌ๋ผ์ง์ง ์์์ต๋๋ค. ๊ทธ ๋ฌธ์ ๋ ์ด๋ป๊ฒ ๋ ๋ง๋ฒ์ฒ๋ผ ์ค๊ฐ์ ์ฌ๋ผ์ก์ต๋๋ค.AppT<>
ํด๋์ค๋ฅผ ์์ฑํด์ผ ํ์ต๋๋ค. ํฐ๋ฏธ๋ ์ฑ๊ณผ XAML ์ฌ ์ํ์ ๋ง์น ์ฌ์ฉ์๊ฐ ๊ทผ๋ณธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋์ ์ํํด์ผ ํ๋ ์์
์ธ ๊ฒ์ฒ๋ผ ๋์ผํ ์์
์ ์ํํฉ๋๋ค.๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ด ์ฑ ๋งค๋ํ์คํธ์ activatableClass
์ถ๊ฐํด๋ ํจํค์ง๋์ง ์์ ์ํ๋ก ์๋ํ์ง ์์ต๋๋ค(PRI๋ฅผ ๋ณํฉํ์ง ์์์ ๋์ ๊ฐ์ด XAML ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์๋ค๋ ๋ฌธ์ ). ์ด๋ ์ค์ํฉ๋๋ค. ๋ด ์ฑ์ด ์ง์ํ ์ ์์ต๋๋ค.
1-3๋จ๊ณ์ ์๋ํ๋ ํนํ ์๋ฐฑ ๊ฐ์ ํ์ผ์์ ๋ค์์คํ์ด์ค ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ํ์คํ ๋์์ด ๋ฉ๋๋ค. ๊ทธ ์์ compat ๋ถ์๊ธฐ๋ ํ์ฌ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์ผ๋ง๋ ํธํ๋๋์ง์ ๋ํ ๋ณด๊ณ ์๋ฅผ ์์ฑํ๊ณ ํ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ๋ .net ํ๋ ์์ํฌ > .net ์ฝ์ด์ ๊ฐ์ด ์ข์ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๋ฏธ ๋งํ๋ฏ์ด ๊ธฐ๋ฅ์ด ๋ ํ๋ถํ ํธ์ง๊ธฐ๊ฐ ์ข์ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ ์ง์ฅ์์ ๋๋ถ๋ถ์ ์๊ฐ XAML์ ์์์
์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ๋๋ถ๋ถ ์ฑ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง์ ๋ํ ๋๋ต์ ์ธ ๊ณจ๊ฒฉ์ ๋ํ ๊ฐ์ด๋๋ก ๋์์ด๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. Intellisense ๋ฐ ์ค๋งํธ ๋ฆฌํฉํ ๋ง์ ํนํ ์ฌ์ฉ์ ์ ์ UserControls
๊ฐ ๋ง์ ๊ฒฝํฅ์ด ์๋ ๊ฒฝ์ฐ์ ๊ฐ์ ํญ๋ชฉ(์: ์ข
์์ฑ ์์ฑ ๋๋ ํ๊ทธ)์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐ CTRL + R + R
์ ๊ฐ์ QoL์ด ์ ๋ง ๋์์ด ๋ ๊ฒ์
๋๋ค. GoTo ๊ตฌํ ๋ฐ ์ฐธ์กฐ. Roslyn ๋ถ์๊ธฐ ์ง์๋ ์ ๋ง ์ข์ต๋๋ค.
๋ค์์คํ์ด์ค ๊ฐ์ ์ฌํญ์ ํ์ฅํฉ๋๋ค. ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค์ ์๋ก์ด XmlnsDefinition
๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์ ๋์ฌ๊ฐ ์๋ ์ฌ์ฉ์ ์ ์ ์ปจํธ๋กค์ ๋ ์ฝ๊ฒ ์ํํ ์ ์๊ณ ๋งํฌ์
imo๋ฅผ ์ ๋ฆฌํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ชจํธํ ์ปจํธ๋กค์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ ๋์ฌ๊ฐ ํ์ํ๋ฉด ์ข์ ๊ฒ์
๋๋ค. ํด๋์ค๊ฐ ์๋ํ๋ ๋ฐฉ์์ GoTo ๊ตฌํ๊ณผ๋ ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค์ ์ด๋ฆ๊ณผ ์ ์ฒด ๋ค์์คํ์ด์ค๋ฅผ ํ์ํ๊ธฐ ์ํด ์ปจํธ๋กค ์์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด ์ปจํธ๋กค์ ์ถ์ฒ๋ฅผ ์ ์ ์์ ๊ฒ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด C# ์ฝ๋์์ ๋ค์์คํ์ด์ค ๋ณ์นญ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์
๋๋ค.
๋๋ถ๋ถ ๋๊ตฌ์์ ๋ฆฌํฉํ ๋ง์ ๋ ์ทจ์ฝํ๊ฒ ํ๊ฑฐ๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ด๊ณ ๋งํฌ์ ์ ๋ ์ฝ๊ฒ ํ์ํ ์ ์๋๋ก C# ํธ์ง๊ธฐ์ฒ๋ผ ์๋ํ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๊ทธ ์ธ์๋ XAML ์ธ์ด ์์ฒด์ ๊ดํด์๋ ์ฅํฉํจ์ ์ค์ด๋ ๊ฒ์ด #62 ๋ฐ #279์์ ๋ ผ์๋ ์คํ์ผ๋ง์ด ๋๋ ์ข์ ์๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋ค์์คํ์ด์ค ๊ฐ์ ์ฌํญ์ ํ์ฅํฉ๋๋ค. ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค์ ์๋ก์ด
XmlnsDefinition
๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์ ๋์ฌ๊ฐ ์๋ ์ฌ์ฉ์ ์ ์ ์ปจํธ๋กค์ ๋ ์ฝ๊ฒ ์ํํ ์ ์๊ณ ๋งํฌ์ imo๋ฅผ ์ ๋ฆฌํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ชจํธํ ์ปจํธ๋กค์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ ๋์ฌ๊ฐ ํ์ํ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ํด๋์ค๊ฐ ์๋ํ๋ ๋ฐฉ์์ GoTo ๊ตฌํ๊ณผ๋ ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค์ ์ด๋ฆ๊ณผ ์ ์ฒด ๋ค์์คํ์ด์ค๋ฅผ ํ์ํ๊ธฐ ์ํด ์ปจํธ๋กค ์์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด ์ปจํธ๋กค์ ์ถ์ฒ๋ฅผ ์ ์ ์์ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด C# ์ฝ๋์์ ๋ค์์คํ์ด์ค ๋ณ์นญ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค.ํ์ด์ง ์ปจํธ๋กค์ WinUI 3.0 ๋ฒ์ ์ ์ด๋ฌํ ์ปจํธ๋กค์ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์ด๊ฒ์ด SDK ์์ค์ ๊ฒ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
WinUI๋ฅผ ์ฌ์ฉํ ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์์ ์ ์์ต๋๊น?
ํ ๊ฐ์ง ์์ ์ฌํญ์ ๋น๋์์ Windows.UI.Xaml.*
WinMD ์ฐธ์กฐ๋ฅผ ์ ์ธํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด์ ๋น๋ ๋์์ ํตํฉ WinMD(์ผ๋ช
)๋ง ์ฐธ์กฐํฉ๋๋ค. Windows.winmd
, ๊ฐ๋ณ WinMD๋ ์ฐธ์กฐํ๋๋ก ๋์์ ์ต์
์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๋น๋ ์ค์ธ ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ฐธ์กฐ๋ฅผ ํฌํจํ๊ฑฐ๋ ์ ์ธํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด .NET dll
์ฒ๋ผ ๋์ํ๊ธฐ ๋๋ฌธ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. ์์คํ
์์ ์ ๊ณตํ๋ ๊ฒ์ด ์๋ ํจํค์ง ๋ด๋ถ์ ๋ก์ปฌ ๋ฒ์ ์ผ๋ก ์ด์
๋ธ๋ฆฌ ๋ฆฌ๋๋ ์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ฐฉ๋ฒ์ด .NET Framework์ฉ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง UAP์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ข
๋ฅ์ ์๋๋ฆฌ์ค์ ๋ํ ์๋ฃจ์
์ด ์์ด์ผ ํฉ๋๋ค. msix/appx
๋งค๋ํ์คํธ์ FrameworkDependency๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ํ ์ ์์ต๋๋ค ์ฐ๋ฆฌ๋ ํจ๊ป ์๋ก์ด WinUI์ ๊ณต๊ธํ๊ธฐ ์ํด ๊ทธ๊ฒ์ ์ฌ์ฉํ ์์๋ Windows.*
๋ณด๋ค๋ ๋ค์ ์คํ์ด์ค Microsoft.*
๊ฒ๋ค.
๊ฐ๋ฐ์ ์ธก์์๋ ์ฝ๋๊ฐ ์๋ ์ฐธ์กฐ ๋ง ๋ณ๊ฒฝํ๋ฏ๋ก ์ฑ์ ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ์ด๋ ค์์ด ๋ํ ๊ฒ์ ๋๋ค!
๋ค์์คํ์ด์ค๋ฅผ ์ ํ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค!
ํํ:
์ฝ๋๋ฅผ ์๋ค๋ก ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
๋ก์ปฌ WinUI ์ฝ๋๊ฐ ์์ ํ๋๋ฉด Windows ํ๋ซํผ์ผ๋ก ๋ค์ ๋ณํฉํ์ฌ ๋ชจ๋ ์ Windows ๋ฆด๋ฆฌ์ค์์ ์์คํ ์ฑ๊ณผ LOB ์ฑ์ด ์๋ก์ด ๊ฐ์ ์ฌํญ์ ํ์ฉํ ์ ์์ต๋๋ค.
ํํธ์ผ๋ก๋ .NET Framework์ ๊ฐ์ด ํธํ์ฑ์ด ๋์ ๋งค์ฐ ์์ ์ ์ธ ์์คํ ํ๋ ์์ํฌ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ชฝ์ .NET Core์ ๊ฐ์ผ๋ฉฐ ๋ ๋น ๋ฅธ ์๋๋ก ๋ณ๊ฒฝ๋๋ฉฐ ๋ ๊ฐ์ง์ ๋ชจ๋ ์ด์ ์ด ์๊ณ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
ํฌํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Find&Replace๋ฅผ ์ฌ์ฉํ๋ฉด ํฉ๋ฆฌ์ ์ผ๋ก ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ์ธ์คํด์ค ์๋ ์๋นํ ์ ์ ๊ฒ์ ๋๋ค.
๋ํ ๋ ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
App
ํด๋์ค์ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํ ํ XAML์ ์ด๊ฒ์ ์ถ๊ฐํ ๋๊น์ง ์ด๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค. ๋ค์ ํฐ๋ฏธ๋ ์ฑ์์ ์ฐพ์๊ณ ์ค์ ๋ก ์ํํ๋ ์์
์ ๋ํด ์ ์์ง ๋ชปํ์ต๋๋ค.xml
<Target Name="PlaceAppXbfAtRootOfResourceTree" DependsOnTargets="GetPackagingOutputs">
<ItemGroup>
<_RelocatedAppXamlData Include="@(PackagingOutputs)" Condition="'%(Filename)' == 'App' and ('%(Extension)' == '.xaml' or '%(Extension)' == '.xbf')" />
<PackagingOutputs Remove="@(_RelocatedAppXamlData)" />
<PackagingOutputs Include="@(_RelocatedAppXamlData)">
<TargetPath>%(Filename)%(Extension)</TargetPath>
</PackagingOutputs>
</ItemGroup>
</Target>
cannot find type Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication
์ ์ ์ฌํ ์ค๋ฅ์ ํจ๊ป ๋ฌด์์๋ก ์์ ํ ์ค๋จ๋๋ฉฐ ํ๋ก์ ํธ๋ฅผ ๋ค์ ๋น๋ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ํด๋ฆฐ ๋น๋๋ฅผ ์ํํ๋ ๊ฒ์
๋๋ค.bin\x64\Debug\AppX
์์ ํจํค์ง๋์ง ์์ appx ์ถ๋ ฅ์ ์์ํ ๋ค์ VS ๋ด์์ ๋๋ฒ๊ฑฐ๋ฅผ ์ฃผ์
ํ๊ฑฐ๋ ์ฑ ํจํค์ง๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์์ ํ๋ก์ธ์ค๋ก.Windows ๋ฐ์คํฌํฑ์ ๊ด๋ จ ํญ๋ชฉ 2019๋ 7์ 25์ผ .
์ค๋ ์๊ฐ WinForms, UWP ๊ฒฝํ์ด ์๋ WPF ๊ฐ๋ฐ์์ ๋๋ค. ์ฌ๊ธฐ ๋ด 2์ผํธ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ด ํ์ํฉ๋๋ค.
์ด ํ์ด์ง/์ฐฝ ํ ํ๋ฆฟ์ด ํ์ํฉ๋๋ค.
์ ์ด ํ ํ๋ฆฟ์ด ํ์ํฉ๋๋ค.
์ด ๋ง์ง๋ง ๋ ๊ฐ๋ ํจ๊ป ์๋ํ์ฌ ์ฌ์ด Master-Detail ์ฐฝ์ ๋ง๋ญ๋๋ค.
์ด๋ฌํ ๋ชจ๋ ํ ํ๋ฆฟ๊ณผ ํ์ด์ง ๋ฑ์ ์ด๋ฏธ Windows Template Studio ํ๋ก์ ํธ์์ ์ํ๋๊ณ ์์ต๋๋ค. ๋ชจ๋ ๋ค์ ๋ง๋๋ ๋์ ๋์ผํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฅด์ง ์๊ฒ ์ต๋๊น?
SDK ์คํ์ผ ํ๋ก์ ํธ ํ์ผ
๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์ด ์ธ๊ธํ๋ฏ์ด ์ ๊ฐ ๋ณด๊ณ ์ถ์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ ์ค ํ๋๋ UWP ๋ฐ "Desktop XAML" ์ฑ ๋ชจ๋์ ๋ํ ์๋ก์ด SDK ์คํ์ผ ํ๋ก์ ํธ ํ์ผ ํ์์ ๋ํ ์ง์์
๋๋ค.
UWP์ Desktop XAML ์ฑ ๋ชจ๋ธ ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์
"Desktop XAML" ์ฑ์ ๋น๋ํ๊ธฐ ์์ํ๋ฉด UWP ์ฑ์์ ์ผ๋ง๋ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ต๋๊น? UWP ์๋๋ฐ์ค์ ์ ์ฝ ์กฐ๊ฑด ๋ด์ ๋จธ๋ฌผ๋ ๋ค๋ ๊ฒ์ ์๊ฒ ๋๋ฉด ๋์ค์ ์ด๋ฅผ UWP ์ฑ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด ๊ฐ๋จํ ๊น์? ๋๋ UWP ์ฑ์ ๋น๋ํ๊ธฐ ์์ํ๊ณ ๋ ๋ง์ ๊ฒ์ด ํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๋ ๊ฒฝ์ฐ "Desktop XAML" ์ฑ์ผ๋ก ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๊น?
์ ๋ Template Studio๋ฅผ ์ง์ํ๊ณ ์์ต๋๋ค.
์ ๋ Template Studio๋ฅผ ์ง์ํ๊ณ ์์ต๋๋ค.
Template Studio๋ XAML C++ ํ๋ก์ ํธ๋ฅผ ์ง์ํฉ๋๊น?
Template Studio๊ฐ ์ํํ๋ ์์ ์ WinUI SDK IMO์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค.
Template Studio๊ฐ ์ํํ๋ ์์ ์ WinUI SDK IMO์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค.
Visual Studio IDE IMO์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค! ๐
์์ ์ Windows ํ ํ๋ฆฟ ์คํ๋์ค๊ฐ UWP ํ๋ก์ ํธ ์์ฑ์ ์ํด ์ฌ์ธ์ ์์ ์ ์ํํ๊ณ ์์ผ๋ฏ๋ก xaml C++ ์ง์๊ณผ ๊ฐ์ ๊ฒ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ผ๋์ ๋๊ณ Windows ํ ํ๋ฆฟ ์คํ๋์ค์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ ๋น ๋ฅด๊ณ ๋ ๋ง์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. uwp ํ๋ก์ ํธ์ ๋ชจ๋ ์๋ก์ด ํ์ ์ด ํ๋์ ํ๋ก์ ํธ์ ๋จ์ ์์ผ๋ฉด ํจ์จ์ ์ ๋๋ค.
XAML์ด๋ MVVM ์์ด ์ง์ WinUI 3 ์คํ์ ํ์ ๊ณ์ธต์ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ์ด๋ฏธ ์ฝ๋๋ฒ ์ด์ค์ ์ผ์ข ์ MV ์ํคํ ์ฒ๊ฐ ์๋ ๊ธฐ์กด์ ๋๊ท๋ชจ C++ ์ํํธ์จ์ด์ ํนํ ์ ์ฉํฉ๋๋ค. ๊ทธ๋ค์ HWND + GDI๋ณด๋ค ๋ ๋์ ๊ฒ์ ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ด WinUI 3๊ฐ ์ฅ๋๊ฐ์ด ์๋๋ผ ์ง์งํ ์ํํธ์จ์ด๋ฅผ ์ค์ ๋ก ์ง์ํ ์ ์๋ค๊ณ ์๊ฐํ๊ฒ ํ์ญ์์ค.
@be5invis ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ํ์ฌ ์ ์ผํ ์๋ฃจ์ ์ XamlDirect์ด์ง๋ง ๋ฏธ๋ค์จ์ด ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
์ด๋ฏธ Xaml Islands๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ๋ฅผ ์๋์ผ๋ก ๋น๋ํ ์ ์์ต๋๋ค. DesktopWindowXamlSource๊ฐ ์๋ํ๊ณ ์ฐฝ์ ์ฐ๊ฒฐ๋๋๋ก ํ ๋ค์ ์ฝ๋์์ ์ปจํธ๋กค์ ๋ง๋ค๊ณ ์ ๋ ฌ/๋ ์ด์์ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
https://gist.github.com/sylveon/5bc68b2801333b24f7b3165c3f098cc9#file -picker-cpp-L46
@MarkIngramUK CreateWindow
๋ฅผ WinUI ๊ธฐ๋ฅ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋ "์๋ฒฝํ" ๊ฒ์ด ํ์ํ ์ ์์ต๋๋ค.
๋์์ธ์ ์ํด ๋ฏธ๋์ WinUI WPF ํ ํ๋ฆฟ์ด ํ์ฌ UWP ์ฑ๊ณผ ๊ฐ์ ์ ๋ชฉ ํ์์ค๋ก ํ์ด์ง ์ฝํ ์ธ ๋ฅผ ํ์ฅํ๋ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์ถ์ต๋๋ค. ์ง๊ธ์ ๊ธฐ์กด XAML ์์ผ๋๋ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ ์ต์ ๋ณด๊ธฐ๊ฐ ์๋๋ผ WPF/WinForms ์ฐฝ ๋ด๋ถ์์ ์ปจํธ๋กค์ ํธ์คํ ํ๊ณ ์์ต๋๋ค.
@LucasHaines WinUI 3.0์์ ์ง์ํ ๊ณํ์ธ ์ธ์ด ๋ชฉ๋ก: C#, C++/WinRT, Visual Basic. ์ฐ๋ฆฌ๋ F#์ ์ง์์ ๋ชจ์ํ๊ณ ์์ต๋๋ค.
์ด๊ฒ์ F#๋ฟ๋ง ์๋๋ผ ๋ชจ๋ .Net ์ธ์ด์ ๋ํด ์๋ชปํ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ํ ํ๋ฆฟ๊ณผ .xaml ํ์ผ์ ๋ํด ์๊ฐํ๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค. ์ด๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํ์ง ์๊ณ ์ง์ ์ง๊ณ ์นดํซ๊ณผ ์ปคํผ์ ์ ์๋ฆฌ์ ๋๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
WinUI๋ฅผ Nuget ํจํค์ง๋ก .Net Standard 2.0/.Net Core 3.0/.Net 5 ํ๋ก์ ํธ์ ์ค์นํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ด๋ถ์ ์ ์๋ ๋ชจ๋ ํด๋์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ WinUI ํ๋ก์ ํธ(C# ์ ์ฉ์ผ ์ ์์)์์ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด WinUI ๋ณด๊ธฐ๋ฅผ ๋ชจ๋ .Net ์ธ์ด๋ก ๋ง๋ค ์ ์์ต๋๋ค. Xamarin.Forms๊ฐ ์ํํ๋ ๋ฐฉ๋ฒ์ ํ์ธํ์ธ์ .
ํด๋์ค๋ ์ด๋ฏธ F#์์ ์ฌ์ฉํ ์ ์์ต๋๋ค(๋ชจ๋ .NET ์ธ์ด์์ ์ฌ์ฉํ ์ ์๋ Windows ๋ฐํ์ ๊ตฌ์ฑ ์์์ด๊ธฐ ๋๋ฌธ์).
๋ ์ด์์์ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ๋ชจ๋ WinUI ๊ด๋ฆฌ์ ๋ํด Py/WinRT๋ฅผ ์ฌ์ฉํ์ฌ Python์ ํตํด ์ํํ ์๋ ์์ต๋๋ค.
@sylveon ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ์์ ์ด ์์ต๋๊น? ๊ด์ฌ์ด ์์ํ ๋ฐ...
๊ทธ๋ค ๋ชจ๋. WinUI์ ๊ณต๊ฐ API๋ Windows ๋ฐํ์ ๊ตฌ์ฑ ์์์ผ ๋ฟ์ ๋๋ค.
@LucasHaines WinUI 3.0์์ ์ง์ํ ๊ณํ์ธ ์ธ์ด ๋ชฉ๋ก: C#, C++/WinRT, Visual Basic. ์ฐ๋ฆฌ๋ F#์ ์ง์์ ๋ชจ์ํ๊ณ ์์ต๋๋ค.
์ด๊ฒ์ F#๋ฟ๋ง ์๋๋ผ ๋ชจ๋ .Net ์ธ์ด์ ๋ํด ์๋ชปํ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ํ ํ๋ฆฟ๊ณผ .xaml ํ์ผ์ ๋ํด ์๊ฐํ๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค. ์ด๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํ์ง ์๊ณ ์ง์ ์ง๊ณ ์นดํซ๊ณผ ์ปคํผ์ ์ ์๋ฆฌ์ ๋๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
WinUI๋ฅผ Nuget ํจํค์ง๋ก .Net Standard 2.0/.Net Core 3.0/.Net 5 ํ๋ก์ ํธ์ ์ค์นํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ด๋ถ์ ์ ์๋ ๋ชจ๋ ํด๋์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ WinUI ํ๋ก์ ํธ(C# ์ ์ฉ์ผ ์ ์์)์์ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด WinUI ๋ณด๊ธฐ๋ฅผ ๋ชจ๋ .Net ์ธ์ด๋ก ๋ง๋ค ์ ์์ต๋๋ค. Xamarin.Forms๊ฐ ์ํํ๋ ๋ฐฉ๋ฒ์ ํ์ธํ์ธ์ .
์ด ์ฃผ์ /์ง๋ฌธ์ ๋๊ตฌ์ ๊ดํ ๊ฒ์
๋๋ค. ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์ธ์ด์์ ์ง์ ์ฐธ์กฐํ ์ ์์ง๋ง ๋๊ตฌ์ ์ธ์ด ์ง์ ๊ฐ์ ์ ์๊ฐ ๋ชจํธํฉ๋๋ค.
Xamarin.Forms๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ด๋ C# ๋ฐ F#์ ๋ํ ๋๊ตฌ๋ง ์ ๊ณตํฉ๋๋ค. VB.Net ๋ฐ Xamarin.Forms๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋น๋ํ ์ ์์ง๋ง ๋๊ตฌ๊ฐ ์๊ณ ๋ฌธ์๊ฐ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ _๊ณต์์ ์ผ๋ก ์ง์๋์ง_ ์์ต๋๋ค.
WinUI ์๋์ฐ์ ํน์ ์ ๊ฐ์ด ๋ํ, ๋ค๋ง ์ด๋ค ๋ท๋ท ํ์ค 2.0 / ๋ท๋ท ์ฝ์ด 3.0 / ๋ท๋ท 5 ํ๋ก์ ํธ์์ ์ฐธ์กฐ ํ ์ ์์ต๋๋ค.
์ผ๋ถ ์๋๋ฆฌ์ค์ ๋ํ ํ๋ก์ ํธ/์ปดํ์ผ๋ฌ/ํจํค์ง ์์ค ์ง์๋ ํ์ํฉ๋๋ค.
v2.2 ๋ฆด๋ฆฌ์ค ์ ๋ํ ํ๋ฅญํ ์์ ํ. v3.0 ์ํ์ ๋ํ ๊ฐ๋ตํ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ ์ ์์ต๋๊น?
๋๋ ์ด๊ฒ์ด ์ฌ๋ฌ ๋ฒ ์ธ๊ธ๋๋ ๊ฒ์ ๋ณด์์ง๋ง ์ด๋ค ๋ฐฉํฅ์ผ๋ก๋ ๋ช ํํ ๋ฐฉํฅ์ด ์์์ต๋๋ค. WinUI 3.0์๋ ๋ชจ๋ ์ปจํธ๋กค์ด ์์ผ๋ฏ๋ก ์ด์ WinUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปจํธ๋กค์ ์ฐธ์กฐํ๊ธฐ ์ํ ๋ค์์คํ์ด์ค ์๊ตฌ ์ฌํญ์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ XAML์ ๋ง์ด ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์ ํฌ๊ฒ ๋ฐฉํดํ๋ฉฐ UNO ํ๋ซํผ ๋ฐ Avalonia์ ๊ฐ์ ๊ฐ๋จํ ํธํ์ฑ์ ๊นจ๋จ๋ฆฝ๋๋ค.
XAML์์ xmlns:mux="using:Microsoft.UI.Xaml.Controls"
๋ํ ํ์์ฑ์ ์ ๊ฑฐํ์ญ์์ค. ์ฝ๋ ๋นํ์ธ๋๊ฐ ์ฌ์ ํ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ํ๋ก์ ํธ์ ์ผ๋ถ ์์น์ ์ด์ ๋ํ ๊ตฌ์ฑ์ด ์์ ์๋ ์์ต๋๋ค.
XAML์์
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
๋ํ ํ์์ฑ์ ์ ๊ฑฐํ์ญ์์ค.
XAML _markup_์์๋ ํ์ํ์ง ์์ง๋ง ์ฝ๋ ์จ๊น์์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
Windows ์ปจํธ๋กค์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ(OS์์ ์ ๊ฑฐ๋์ง ์์ ๊ฒฝ์ฐ) - XAML์์ ๋ค์์คํ์ด์ค๋ฅผ ์ ์ธํด์ผ ํฉ๋๋ค.
Windows ์ปจํธ๋กค์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ(OS์์ ์ ๊ฑฐ๋์ง ์์ ๊ฒฝ์ฐ) - XAML์์ ๋ค์์คํ์ด์ค๋ฅผ ์ ์ธํด์ผ ํฉ๋๋ค.
์๋๋ฆฌ์ค๊ฐ ์๋ WinUI 3.0์ ์ฌ์ฉํ๋ฉด OS ์ปจํธ๋กค์ WinUI 3.0 ์ปจํธ๋กค๊ณผ ํผํฉ ๋ฐ ์ผ์น์ํฌ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ปจํธ๋กค์ OS์ ๋ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ WinUI 2.x์์๋ง ์๋ํฉ๋๋ค(๋ํ NavigationView ๋ฐ TreeView์ ๊ฐ์ ๋ ์์น์์ ์ ํ์ ์ ๊ณตํ์ฌ ๋ชจํธ์ฑ์ ์ ๋ฐํ๋ ์ด์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค).
Windows ์ปจํธ๋กค์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ(OS์์ ์ ๊ฑฐ๋์ง ์์ ๊ฒฝ์ฐ) - XAML์์ ๋ค์์คํ์ด์ค๋ฅผ ์ ์ธํด์ผ ํฉ๋๋ค.
์๋๋ฆฌ์ค๊ฐ ์๋ WinUI 3.0์ ์ฌ์ฉํ๋ฉด OS ์ปจํธ๋กค์ WinUI 3.0 ์ปจํธ๋กค๊ณผ ํผํฉ ๋ฐ ์ผ์น์ํฌ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ปจํธ๋กค์ OS์ ๋ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ WinUI 2.x์์๋ง ์๋ํฉ๋๋ค(๋ํ NavigationView ๋ฐ TreeView์ ๊ฐ์ ๋ ์์น์์ ์ ํ์ ์ ๊ณตํ์ฌ ๋ชจํธ์ฑ์ ์ ๋ฐํ๋ ์ด์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค).
์ข์ ์์์ ๋๋ค. OS์์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ์ง ์๋๋ก ํ ๊ฒ์ ๋๋ค. ์ค์ ์ฑ, ์ ธ ๋ฐ ๊ธฐํ OS ๋ถ๋ถ๋ WinUI 3.0์ผ๋ก ์ด๋ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ ํ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๋ XAML๋ก์ ๊ด๋ฆฌ์ ๋๊ตฌ, ์๋ํจ๋ ๋ฑ์ ํฌํธ๋ฅผ ํฌ๋งํฉ๋๋ค!
@jevansaks ์๊ฒ ์ต๋๋ค . ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@mdtauk XAML ์์ 'OS' ๋ ๊ฑฐ์ ์ปจํธ๋กค๊ณผ ์๋ก์ด 'WinUI 3.0' ํ๋ซํผ ์ปจํธ๋กค์ ๊ตฌ๋ถํ ํ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด WinUI 3.0์ผ๋ก ์ด๋ํ๊ณ ์์ผ๋ฉฐ OS ์ปจํธ๋กค์ ๋ ์ด์ ๊ธฐ๋ฅ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฌ์ ํ ๋ ๊ฑฐ์ ์ปจํธ๋กค์ ๋์์ผ๋ก ํ๋ ค๋ ๊ฒฝ์ฐ WinUI 3.0 ์ดํ์๋ ์ด์ SDK ๋ฐ Visual Studio ๋ฒ์ ์ผ๋ก ๊ฐ๋ฐํด์ผ ํฉ๋๋ค. XAML์์ ๋ ๊ฐ์ Microsoft/Windows UI ์ปจํธ๋กค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๊ธฐ๋ฅ์ ์ ์งํ๋ ๊ฒ์ ์์ ์ธ๊ธํ ์ด์ ๋ก ๋ฐฉํด๊ฐ ๋ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ, WinUI ๊ฐ๋ฐ์ ๋ถ๋ฆฌ๋ก ๋ง์นจ๋ด ์ด์ ๊ฐ์ ๋ณ๊ฒฝ์ 'ํ์ฉ'ํ๋ ์ง์ ๊ฐ๋ฅํ ๊ฒฝ๋ก๋ก ์ ํํ ์ ์์ต๋๋ค.
ํธ์ง: ํ์ ํ๊ธฐ ์ ์ ์๋ก๊ณ ์นจํ๋ ๊ฒ์ ์์์ต๋๋ค. ์ด์ ๋๋ถ๋ถ์ด ์ค๋ณต๋ฉ๋๋ค.
@robloo ์ด์ ๋ฒ์ ์ UWP Xaml์ ์์ ํ ๋์ฒดํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ๋ํ OS๊ฐ Inbox Apps ๋ฐ Shell์ฉ์ผ๋ก ์ด์ ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ํ WinUI 3.0์ผ๋ก ์ ํํ๋ ๊ณผ์ ๊ณผ Win32 ์ฑ๊ณผ ๋์ผํ ์๋ช ์ฃผ๊ธฐ๋ก WinUI 3.0์ผ๋ก ์์ ํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ค๋ช ํ๋ ๊ฐ๋ฐ์ ๋น๋์ค๊ฐ ๋ง์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ ์ด์ ์๋ถ ๊ณต๊ธ์ด ํ์ ์์ผ๋ฉฐ ํ์ด์ง ์ํ ๋ฐ ํ์ ๋ฑ์ ์ ์ฅํ๋ ๋ ๋์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
WinUI 3.0์ผ๋ก ์ด๋ํ ๊ณํ์ธ ์ฑ์ ๋ฐ๋ผ Wordpad๋ฅผ ์ฌ์ฉํ๊ณ ์ฝ๋๋ฅผ WinUI์ ๋ด์ฅ๋ ์ UI๋ก ์ฎ๊ธฐ๋ ๊ฒ๊ณผ ๊ฐ์ ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. WinUI 3.0์ผ๋ก
WinUI 3์ ๊ฒฝ์ฐ ๋์์ธ ์ธ์ด์์ ์ฑ ๊ธฐ๋ฅ์ ๋ฐฐ์น์ ๊ด๋ จํ์ฌ ์ด๋ ์ ๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํฉ๋๋ค.
์ด์ ๊ด๋ จํ์ฌ ์ฑ ์ค์ .
์ฑ ์ค์ ์ ์ด๋์์ ์ฐพ์ ์ ์์ต๋๊น? ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํด๋ฆญํฉ๋๊น? ์ผ์ชฝ ํ๋จ ๋ชจ์๋ฆฌ? ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ํ๋กํ ์๋ฐํ๋ฅผ ํด๋ฆญํ๊ณ ์ค์ ์ ๋๋ฅด๋์? ์ผ์ชฝ ์๋จ์ ํด๋ฆญํฉ๋๊น? ์ผ์ชฝ ์๋? ํธ์ง > ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ด๋ํฉ๋๊น?
NavigationView๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค...
๋ณด๋ธ ์ฌ๋: shaheedmalik [email protected]
๋ณด๋ธ ๋ ์ง: 2019๋
9์ 12์ผ ๋ชฉ์์ผ ์คํ 3:48:12
๋ฐ๋ ์ฌ๋: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋ ์คํ ๋์ [email protected] ; ๋๊ธ [email protected]
์ ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] WinUI 3.0 ๊ฐ๋ฐ์ ๊ฒฝํ ๋ฐ ๋๊ตฌ - ์
๋ ฅ ํ์(#1045)
WinUI 3์ ๊ฒฝ์ฐ ๋์์ธ ์ธ์ด์์ ์ฑ ๊ธฐ๋ฅ์ ๋ฐฐ์น์ ๊ด๋ จํ์ฌ ์ด๋ ์ ๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํฉ๋๋ค.
์ด์ ๊ด๋ จํ์ฌ ์ฑ ์ค์ .
์ฑ ์ค์ ์ ์ด๋์์ ์ฐพ์ ์ ์์ต๋๊น? ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํด๋ฆญํฉ๋๊น? ์ผ์ชฝ ํ๋จ ๋ชจ์๋ฆฌ? ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ํ๋กํ ์๋ฐํ๋ฅผ ํด๋ฆญํ๊ณ ์ค์ ์ ๋๋ฅด๋์? ์ผ์ชฝ ์๋จ์ ํด๋ฆญํฉ๋๊น? ์ผ์ชฝ ์๋? ํธ์ง > ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ด๋ํฉ๋๊น?
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ง์ ์ด ์ด๋ฉ์ผ์ ํ์ ๋ GitHub์์์ ๋ณผ https://github.com/microsoft/microsoft-ui-xaml/issues/1045?email_source=notifications&email_token=AD3GCLB5VXXUOYIA2NIEZATQJKTIZA5CNFSM4ICOLUJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6TGV4I#issuecomment-531000049 , ๋๋ ์ค๋ ๋ ์์๊ฑฐ https : //๋ก github์ ์์ต๋๋ค. com/notifications/unsubscribe-auth/AD3GCLCQQ6L7H3LEJAHUDMLQJKTIZANCNFSM4ICOLUJQ .
Visual Studio์ ํ ํ๋ฆฟ ๋ฐ ๊ตฌ์ฑ ์์์ ๊ด๋ จํ์ฌ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฑ๊ณต์ ์ผ๋ก ๋์๋๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
Visual Studio์์ WinUI/XAML ์์ผ๋๋๊ฐ C++/WinRT์ ์๋ํ๋๋ก ํ๋ ค๋ฉด ์๋นํ ๋ ธ๋ ฅ๊ณผ ๋ฌธ์ํ๋์ง ์์ ํ๋ก์ ํธ ๊ตฌ์ฑ ์์ฑ์ด ํ์ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ถฉ๋ถํ ๊ฐ์กฐํ ์๋ ์์ง๋ง ๋์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ WinUI๊ฐ Windows ์ด์์ผ๋ก ๋ ๋๋ง๋๋ค๋ ๊ฒ์ ๋๋ค.
Surface Duo๋ฅผ ๋ณด์๋ง์ Microsoft๊ฐ Android ๊ธฐ๋ฐ ์ฅ์น๋ฅผ ์ถ์ํ ๋ ํฌ๋ก์ค ํ๋ซํผ ๊ฐ๋ฐ ์คํ ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ ์ง ๊ถ๊ธํ์ต๋๋ค. Xamarin.Forms๋ ์ฌ๋ฌ ๊ฐ์ง ๋ช ๋ฐฑํ ์ด์ ๋ก ์ด๋ฅผ ์๋ผ๋ด์ง ์์ต๋๋ค. Microsoft๊ฐ ์๋ ๋์ ๋ค์ํ ํํ๋ก ์์ฒญ๋์ด ์จ (UNO ํ๋ซํผ๊ณผ ์ ์ฌํ์ง๋ง ์์ฑ๋๊ณ ์์ ์ ์ธ) ํฌ๋ก์ค ํ๋ซํผ ํดํท์ ์์ ํ ์์ฉํด์ผ ํ ๋์ ๋๋ค. ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๊ฐ๋ฐ์๋ค์ ์ํด ์์ง ๋งํ์ง ์์ ๋ช ๊ฐ์ง ๊ณํ์ ๊ฐ๊ณ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Satya๋ "์ฐ๋ฆฌ๋ ๊ฒฝํ๊ณผ ํ๋์ ์ฅ์น๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ์๋๋ผ ์ฐ๋ฆฌ ์ถ์ ๋ชจ๋ ์ฅ์น์ ์ ์ฉ๋๋ ๊ฒ์ ์ํ์ต๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค. Panos๊ฐ ๋ฐ๋ผ๋ ๋๋ก ๊ฐ๋ฐ์๊ฐ ์ด ๋์ด๊ธฐ๊ตฌ์ ์ฐธ์ฌํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด ์ด๊ฒ์ด ์ต์ ์ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ๋ฐ์์๊ฒ Surface Duo์ ๋๋จธ์ง ์ ํ๊ตฐ ๊ฐ์ '๊ฒฝํ'์ ํ์ฅํ๊ธฐ ์ํด ๋ ๊ฐ์ ๊ฐ๋ณ UI๋ฅผ ์์ฑํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ๋๋ค. ํ๋์ 'ํจ๋ฐ๋ฆฌ' ์ฅ์น์ ์ํ ๊ฐ๋ฐ์์๊ฒ ์ด๋ ๊ณต์ ํ ์์ฒญ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ ํ๋ซํผ์์ "๋ค์ดํฐ๋ธ ๋ฃฉ์คํ"๋ก ๋ค๋ฅด๊ฒ ๋ ๋๋ง๋ฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ค. ์ ๋ฐ ํ์ง๋ง, ๋ด๊ฐ Fluent Design์ด ํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๋ง์ง๋ง ์ผ์ ๋ ๋ง์ ๋ถ์ผ์น๋ฅผ ์ผ๊ธฐํ๋ ๊ฒ์ด์ง ๋ํ์ง ์๊ฒ ํ๋ ๊ฒ์
๋๋ค.
ํธ์ง: ์๋ ๋๊ธ์ด ์ ๊ฑฐ๋จ
Satya๋ "์ฐ๋ฆฌ๋ ๊ฒฝํ๊ณผ ํ๋์ ์ฅ์น๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ์๋๋ผ ์ฐ๋ฆฌ ์ถ์ ๋ชจ๋ ์ฅ์น์ ์ ์ฉ๋๋ ๊ฒ์ ์ํ์ต๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค. Panos๊ฐ ๋ฐ๋ผ๋ ๋๋ก ๊ฐ๋ฐ์๊ฐ ์ด ๋์ด๊ธฐ๊ตฌ์ ์ฐธ์ฌํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด ์ด๊ฒ์ด ์ต์ ์ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ๋ฐ์์๊ฒ Surface Duo์ ๋๋จธ์ง ์ ํ๊ตฐ ๊ฐ์ '๊ฒฝํ'์ ํ์ฅํ๊ธฐ ์ํด ๋ ๊ฐ์ ๊ฐ๋ณ UI๋ฅผ ์์ฑํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ๋๋ค. ํ๋์ 'ํจ๋ฐ๋ฆฌ' ์ฅ์น์ ์ํ ๊ฐ๋ฐ์์๊ฒ ์ด๋ ๊ณต์ ํ ์์ฒญ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋ด๊ฐ Duo๊ฐ Android๋ผ๋ ์ฌ์ค์ ๋๋ดํ ์ด์ ์ ๋๋ค.
ํ ํ๋ฆฟ์์ ๋ฐ์ํ๋ ๋ฌธ์ ์์ญ์ ์ ๊ฑฐํ๋ ค๋ฉด ํ ํ๋ฆฟ์ ์คํ ์์ค์ฌ์ผ ํฉ๋๋ค.
WPF์ ํจ๊ป WinUI๋ฅผ ์ฌ์ฉํ ๋์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ก ์ ์ปจํธ๋กค์ ๋ง๋ค ๋:
c#
public class MyControl : UserControl { ... }
WinUI.UserControl ๋๋ WPF.UserControl์ ์ฌ์ฉํฉ๋๊น?
์ฐ๋ฆฌ๋ ์ ํํด์ผ ํ๊ณ ์ด๋ป๊ฒ ๋์ฒํด์ผ ํฉ๋๊น?
ํฅ๋ฏธ๋กญ๊ฒ๋ XAML ๋๊ตฌ๊ฐ ํตํฉ๋๋ฉด ์ผ์ข
์ ๊ณต์ xaml ํ์ผ์ ๋ง๋ค ์ ์์ต๋๊น?
๋ค์๊ณผ ๊ฐ์ ๊ฒ:
<UserControl xmlns="???" xmlns:uwp="???" xmlns:wpf="???">
<!-- Potentional xmlns:android="???" xmlns:avalonia="???" -->
<Button uwp:Content="Hi, UWP!" wpf:Content="Hi, WPF!">
</UserControl>
ํน๋ณํ ๋ฃจํธ ๋ค์์คํ์ด์ค๊ฐ ์๋ ์ผ์ข ์ ๊ณต์ ๋ฐฉ์ธ์ด์ด์ผ ํฉ๋๊น? (์: Visual Studio์ ๊ณต์ ํ๋ก์ ํธ). ์กฐ๊ฑด๋ถ xaml์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค.
WinUI.UserControl ๋๋ WPF.UserControl์ ์ฌ์ฉํฉ๋๊น?
์ฐ๋ฆฌ๋ ์ ํํด์ผ ํ๊ณ ์ด๋ป๊ฒ ๋์ฒํด์ผ ํฉ๋๊น?
์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ์ ์ํ XAML์์ ์๋์ผ๋ก ๋ฐ์ํด์ผ ํฉ๋๋ค.
<UserControl
x:Class="MyApp.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
์ด๋ ์ปดํ์ผ๋ฌ์๊ฒ UWP์์ ์๋ ค์ค๋๋ค.
public class MyControl : UserControl { ... }
์ด๊ฒ์ ์ค์ ๋ก ์๋ชป๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ์ ์ธํด์ผ ํฉ๋๋ค.
public partial class MyControl { }
์์์ ์ง์ ํ๋ .g.cs ํ์ผ๊ณผ ์ฌ์ฉ ์ค์ธ ํ๋ ์์ํฌ์ ์ํด ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์์์ด ํ์ํ์ง ์์ต๋๋ค.
ํ ํ๋ฆฟ์ ๊ดํด์๋ Hello World ํ ํ๋ฆฟ ์ด์์ด ์์ผ๋ฉด ๋ ๊ธฐ์ ๊ฒ์ ๋๋ค. ๋ด ๋ง์ Microsoft๊ฐ ํด๋ผ์ด์ธํธ ์ฑ๊ณผ ํจ๊ป ์๋ํ๋ ๋ฐ ํ์ํ ์ฃผ๋ณ๊ธฐ๊ธฐ ์ธ์ ํ๋ ์์ํฌ๋ฅผ ๋ฐฑ์ ํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
@weitzhandler ๋๋
C# ๋ฐ Cpp/WinRT ํ๋ก์ ํธ์ฉ SDK ์คํ์ผ ํ๋ก์ ํธ๋ ๋ฐ๋์ ์์ด์ผ ํฉ๋๋ค.
๋ชจ๋ ์ผ๋ฐ์ ์ธ Win32 ๋ฐ Inbox ์ฑ ํจํด์ ๋ํ ํ ํ๋ฆฟ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ์งง์ ๋ชฉ๋ก :
๊ทธ๋ฌ๋ ๊ณตํต ๋ํ ์์, ํ์ด์ง, ์ค์ ํ์ด์ง ๋ฑ์ ๋ํ ํญ๋ชฉ ํ ํ๋ฆฟ๋ ์์ด์ผ ํฉ๋๋ค.
Visual Studio์ ํ ํ๋ฆฟ ๋ฐ ๊ตฌ์ฑ ์์์ ๊ด๋ จํ์ฌ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฑ๊ณต์ ์ผ๋ก ๋์๋๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
VSCode/Visual Studio์ฉ C++ ํ์ฅ์ผ๋ก ์์ ํฉ๋๋ค. VS Code๋ฅผ Visual Studio์ ์ ์ฌํ ๊ฒฝํ์ ์ ๊ณตํ๋ ์ง์๋๋ ํธ์ง๊ธฐ๋ก ๋ณด๊ณ ์ถ์ต๋๋ค. WinUI๋ OSS์ด๊ณ VS Code๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฏ๋ก ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Template10 ๋ฐ Windows Template Studio์ ๊ฐ์ ๋๊ตฌ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๋ค๋ ์ ํธ์ ๋๋ค. WinUI3์๋ ์ด๋ฌํ ๋๊ตฌ๊ฐ ์ํํ๋ ๊ธฐ๋ฅ์ด ์์ด์ผ ํฉ๋๋ค. ๋๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ด ๊ธฐ๋ณธ ์ค์บํด๋ฉ์ ๊ณ์ํด์ ํ๊ณ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ์ด๊ฒ์ ํ๋ ์์ํฌ์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค. ์ถ๊ฐ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ด์ฉ๋ฉด ๋น์ ์ด ์ํ์ง ์๋ ๋๋ฌธ ๊ฒฝ์ฐ๋ฅผ ์ํด MVVM ์ค์บํด๋ฉ์ ๊บผ์ผ ํ ์๋ ์์ต๋๋ค.
ASPNET Core๋ก ์ผ๋ถ ์์ ์ ์ํํ ํ ์ข ์์ฑ ์ฃผ์ ์ด ๋๋ฝ๋์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ASPNET Core์ ์์ต๋๋ค. ์ถ๊ฐ ์์ ์์ด ์๋ํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์๋น์ค๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๋๋ UWP์ ๊ฒฝ์ฐ ์ด๋ฅผ ์ง์ ๊ตฌ์ถํ๊ฑฐ๋ WTS์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ฌ ์์ํด์ผ ํ์ง๋ง ๋์ค์๋ ์ฌ์ ํ ๋ถ์ด ์๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค. ์ ์ ํ ๋ค์ดํฐ๋ธ ์ข ์์ฑ ์ฃผ์ ์ด ํฌํจ๋ WinUI3๋ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
ํ ํ๋ฆฟ ์์คํ ์ ์กด์ฌ๊ฐ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๋ถ์กฑ์ ๋ํ๋ธ๋ค๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ, ํ ํ๋ฆฟ ์์คํ ์ ํตํฉํ ์ง์ ์ปค๋ฎค๋ํฐ์ ํ์ง์ ๊ฐ์กฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Template10 ๋ฐ Windows Template Studio์ ๊ฐ์ ๋๊ตฌ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๋ค๋ ์ ํธ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ํ์ฅ์ด๋ผ๊ณ ๋ด ๋๋ค. ๋ฌผ๋ก ์ด์ ๊ฐ์ ๊ฒ์ ์ง์ผ๋ก ๊ฐ์ ธ์ฌ ์๋ ์์ง๋ง ํต์ฌ ํ์ด ์ ์ง ๊ด๋ฆฌํ๊ณ ์ง์ํ๋ ๊ฒ์ด ๋ ์ค์ํฉ๋๋ค. ํต์ฌ ํ์ด ๋ ๋ง์ ์ผ์ ํ ์๋ก ๋ ์๊ฒ ํผ์ ธ ๋ชจ๋ ๊ฒ์ด ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. Msft๊ฐ ์ด์ ๊ฐ์ ๊ฒ์ ๋ฉ์ธ ํ์ผ๋ก ๊ฐ์ ธ์ฌ ์์ฐ์ด ์๋ค๊ณ ์๊ฐํ๋ค๋ฉด ๋๊ตฐ๊ฐ์ ์ด์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค. ;)
๊ธฐ๋ณธ ์ ๊ณต ์คํ์ผ ๋ฐ ์ปจํธ๋กค์ ๋ํ ์ฌ์ฉ์ ์ง์ ๋์์ ๋ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋จ์ํ๋ ์คํ์ผ ๋ฐ ์ปจํธ๋กค ํ
ํ๋ฆฟ์ ๋ํ ๋ช ๊ฐ์ง ์๊ฐ์
๋๋ค. ์๋ฒฝํ ์๋ Button
์คํ์ผ ์ง์ ์
๋๋ค. ํธ๋ฒ ์์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ํ
๋๋ฆฌ ๋ฐ๊ฒฝ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ฒด ์ปจํธ๋กค ํ
ํ๋ฆฟ์ ์ฌ์ ์ํด์ผ ํ ๋์
๋๋ค. css
์ ๊ฐ์ด ์ผ๋ถ๋ฅผ ์ง์ ์ค์ ํ๋ฉด ํฌ๋ก๋ฏธํฐ์ XAML ์ฝ๋๊ฐ ์์ฑ๋์ง ์์ต๋๋ค.
@AntiPasha ๋ผ์ดํธ ์จ์ดํธ ์คํ์ผ๋ง ๋ค์ด๋ณด์ จ๋์? ์ด๋ฅผ ํตํด ์ ์ฒด ์คํ์ผ์ ๋ค์ ๋ง๋ค ํ์ ์์ด ํธ๋ฒ ์์์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ฒํผ์ ํธ๋ฒ ์์์ ๋ณ๊ฒฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<Button Content="MyButton">
<Button.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="Blue"/>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="Transparent" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Button.Resources>
</Button>
Control.CornerRadius ์์ฑ๋ 17763 SDK์ ์ถ๊ฐ๋์์ผ๋ฉฐ WinUI ํ์ ์ปจํธ๋กค ์คํ์ผ์ ๋ค์ ์ง์ ํ ํ์ ์์ด ์ฑ ๋๋ ํ์ด์ง ์ ์ฒด ์ฌ์ฉ์ ์ง์ ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ ์ฌ์ ์ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ ๋์ ํ๊ณ ์์ต๋๋ค. https://github.com/microsoft/microsoft-ui- xaml-specs/blob/user/chigy/roundedcorner/active/RoundedCorner/roundedcorner.md#customization -options
ํฅ๋ฏธ๋กญ๊ฒ๋ XAML ๋๊ตฌ๊ฐ ํตํฉ๋๋ฉด ์ผ์ข ์ ๊ณต์ xaml ํ์ผ์ ๋ง๋ค ์ ์์ต๋๊น?
๋ค์๊ณผ ๊ฐ์ ๊ฒ:<UserControl xmlns="???" xmlns:uwp="???" xmlns:wpf="???"> <!-- Potentional xmlns:android="???" xmlns:avalonia="???" --> <Button uwp:Content="Hi, UWP!" wpf:Content="Hi, WPF!"> </UserControl>
ํน๋ณํ ๋ฃจํธ ๋ค์์คํ์ด์ค๊ฐ ์๋ ์ผ์ข ์ ๊ณต์ ๋ฐฉ์ธ์ด์ด์ผ ํฉ๋๊น? (์: Visual Studio์ ๊ณต์ ํ๋ก์ ํธ). ์กฐ๊ฑด๋ถ xaml์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค.
@Tirraon ์ด๊ฒ์ ์ ๋ง ํฅ๋ฏธ๋ก์ด ์์ด์ง๋ง ๋๊ตฌ ํตํฉ์ ๋ํด ์ด์ผ๊ธฐํ ๋ ํ๋ซํผ์ด ์ค๋๋ ๊ณผ ๊ฐ์ด ์กด์ฌํ ๊ฒ์ด๋ผ๋ ์ฌ๊ณ ๋ฐฉ์์์ ์์ํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ค๋ฅธ Xaml ํ์ค์ ๋ง๋ค๋ ค๊ณ ํ์ง ์์ต๋๋ค. ๋๋ฑํ.
๊ธฐ๋ณธ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ xaml ํ์ผ์ด ์ํ "์ต์์" ํ๋ซํผ์ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ XAML ํ๋ซํผ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๐ ):
wpf: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
uwp: xmlns="http://github.com/microsoft/microsoft-ui-xaml"
์๋ฐ๋ก๋์: xmlns="https://github.com/AvaloniaUI/AvaloniaUI"
์ฐ๋
ธ: xmlns="https://github.com/unoplatform/uno"
xamarin.forms: xmlns="https://github.com/xamarin/Xamarin.Forms"
๋ฐ๋ผ์ Xaml Islands๋ฅผ ์ฌ์ฉํ์ฌ WinUI์ WPF๋ฅผ ํผํฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋งํฌ์ ์ด ์์ด์ผ ํฉ๋๋ค.
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:uwp="http://github.com/microsoft/microsoft-ui-xaml">
<StackPanel>
<uwp:Button Content="Hi, UWP!" x:Name="uwpButton">
<Button Content="Hi, WPF!" Width="{x:Bind uwpButton.Width}" />
</StackPanel>
</UserControl>
์ด๋ป๊ฒ ์๊ฐํ๋์?
@stevenbrix
UWP์ ๋ํ ์์ ์์๋ ๋ ๋ฒํผ์ ๋ชจ๋ ๋ ๋๋งํฉ๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น?
๋ด ๋ง์, ์๋ฅผ ๋ค์ด xmlns=".../xaml/presentation"์ด ์ต์์ ๋ค์์คํ์ด์ค์ด๊ณ UserControl wutg StackPanel์ด uwp์ wpf์์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ ํ๋ซํผ ๋ชจ๋์์ ๋ ๋ฒ์งธ Button์ ์ฌ์ฉํ ์ ์์ง ์์๊น์?
๋๊ตฌ ํตํฉ์ ๋ํด ์ด์ผ๊ธฐํ ๋ ํ๋ซํผ์ด ์ค๋๋ ๊ณผ ๊ฐ์ด ์กด์ฌํ ๊ฒ์ด๋ผ๋ ์ฌ๊ณ ๋ฐฉ์์์ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค, ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
UWP์ ๋ํ ์์ ์์๋ ๋ ๋ฒํผ์ ๋ชจ๋ ๋ ๋๋งํฉ๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น?
๋ด ๋ง์, ์๋ฅผ ๋ค์ด xmlns=".../xaml/presentation"์ด ์ต์์ ๋ค์์คํ์ด์ค์ด๊ณ UserControl wutg StackPanel์ด uwp์ wpf์์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ ํ๋ซํผ ๋ชจ๋์์ ๋ ๋ฒ์งธ Button์ ์ฌ์ฉํ ์ ์์ง ์์๊น์?
@Tirraon , ๋ด๊ฐ ์ ๊ณตํ ์์ ๋ ์์ ํ Xaml Islands๋ฅผ ์ฌ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ง์ ์ผ๋ก ํ๋ํํ๋ WPF ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ๊ฒ์ ๋๋ค. WPF์ WinUI ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ์ ์ฌ์ฉ๋๋ "ํ์ค" ๋งํฌ์ ์ ์ํ ๊ฒ์ด ์๋๋๋ค.
ํ์ฌ Xaml Islands๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฑ ์์ฑ์๋ ๋ชจ๋ ์ฌ์ ๋ํ ์ฌ์ฉ์ ์ปจํธ๋กค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ WPF ํ๊ทธ์ WinUI ์์๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฌํจํ๋ ๋์ WPF ํ๊ทธ์ ๋ฌธ์์ด์ ํตํด ํ์์ ์ฐธ์กฐํฉ๋๋ค.
๋๋ ์ง๊ธ ์ ํ๋ฅผ ๋ฐ๊ณ ์์ง๋ง, ์ผ๋จ ๋ด PC ๊ทผ์ฒ์ ์์ผ๋ฉด ๋ด๊ฐ ์ ์ํ๋ ๊ฒ์ ์ ํ๋ฅผ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ ์์ต๋๋ค.
@stevenbrix
์ค, ์ด์ ๋น์ ์ ์ป์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@stevenbrix
์ค, ์ด์ ๋น์ ์ ์ป์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@ํฐ๋ผ์จ ๋๋จํด! ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ์ด์ง์ ์์ด์ ๊ธฐ์ฉ๋๋ค โบ๏ธ
์ ์์ด๋์ด๊ฐ ์์ธ์ ๊ฒ ๊ฐ๋ค๋ฉด ์ฃ์กํฉ๋๋ค. ์ฐ๋ฆฌ๋ Xaml Island ์๋๋ฆฌ์ค๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ๋ชฉํ๋ก ์ ์ฌ์ ์ผ๋ก ๋๊ตฌ๋ฅผ ํตํฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด๊ธฐ์ ๋ ผ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๊ฒ์ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๊น?
FWIW, ๋๋ ๋น์ ์ด ์ ์ํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ํ์คํ ์ฅ์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ WinUI3/.NET5 ๊ธฐ๊ฐ ๋ด์ ์๋ฃํ ์ ์๋ ๊ฒ์ ์ง์คํ๋ ค๊ณ ํฉ๋๋ค.
์ถ๋ ฅ์ ๊ธฐ๋ณธ ์บ๋ฒ์ค๋ก ๋ณํํ๊ณ ๊ธฐ๋ณธ ๋ฉ์์ง ์์คํ ์์ ์ ๋ ฅ์ ์์ ํ๋ ์ผ๋ถ ํ์ดํ๋ผ์ธ์ WinUI Xaml์ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. WinUi.Adapters.DirectX, WinUI.Adapters.WASM, WinUi.Adapters.X, WinUi.Adapters.Android์ ๊ฐ์ต๋๋ค.
์์ ์ ๋ชจ๋ ์ด๋ํฐ๋ฅผ ๊ตฌํํ ํ์๋ ์์ผ๋ฉฐ Windows 10์ ์ง์ํ๋ ๋ฐ ํ์ํ ์ด๋ํฐ๋ง ๊ตฌํํ๋ฉด ๋ฉ๋๋ค.
๋ณด๋ธ ์ฌ๋: Steven Kirbach [email protected]
๋ณด๋ธ ๋ ์ง: 2019๋
11์ 7์ผ ๋ชฉ์์ผ ์ค์ 9:13:46
๋ฐ๋ ์ฌ๋: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋ ์คํ ๋์ [email protected] ; ๋๊ธ [email protected]
์ ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] WinUI 3.0 ๊ฐ๋ฐ์ ๊ฒฝํ ๋ฐ ๋๊ตฌ - ์
๋ ฅ ํ์(#1045)
@stevenbrix https://github.com/stevenbrix
์ค, ์ด์ ๋น์ ์ ์ป์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@Tirraon https://github.com/Tirraon ํ๋ฅญํฉ๋๋ค! ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ์ด์ง์ ์์ด์ ๊ธฐ์ฉ๋๋ค โบ๏ธ
์ ์์ด๋์ด๊ฐ ์์ธ์ ๊ฒ ๊ฐ๋ค๋ฉด ์ฃ์กํฉ๋๋ค. ์ฐ๋ฆฌ๋ Xaml Island ์๋๋ฆฌ์ค๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ๋ชฉํ๋ก ์ ์ฌ์ ์ผ๋ก ๋๊ตฌ๋ฅผ ํตํฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด๊ธฐ์ ๋ ผ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๊ฒ์ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๊น?
FWIW, ๋๋ ๋น์ ์ด ์ ์ํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ํ์คํ ์ฅ์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ WinUI3/.NET5 ๊ธฐ๊ฐ ๋ด์ ์๋ฃํ ์ ์๋ ๊ฒ์ ์ง์คํ๋ ค๊ณ ํฉ๋๋ค.
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
GitHub์์ ๊ทธ๊ฒ์ ์ง์ ์ด ์ด๋ฉ์ผ์ ํ์ ๋ณผ https://github.com/microsoft/microsoft-ui-xaml/issues/1045?email_source=notifications&email_token=AD3GCLBHRGZTDFHFWQTAFK3QSQWCVA5CNFSM4ICOLUJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDMXFLY#issuecomment-551121583 , ๋๋ ํํด https://github.com/ ์๋ฆผ/๊ตฌ๋
์ทจ์-์ธ์ฆ/AD3GCLF2BUTXQFPSVNULZODQSQWCVANCNFSM4ICOLUJQ .
์, XAML Island ์๋๋ฆฌ์ค๋ ํ์ฌ ๋์ฐํฉ๋๋ค.
@sharpninja
์ฐ๋
ธ๋ฅผ ๋ด์ผํ๋ค
https://platform.uno/
๋ํ ๋ชจ๋ ํ๋ซํผ์ ๋ํด WinUI 3.0์ ์ง์ํ ์์ ์
๋๋ค.
https://platform.uno/winui-on-windows7-via-unoplatform/
@stevenbrix
์ ๋ Xaml Islands์ ๋ํ ๊ฒฝํ์ด ๊ฑฐ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ฐ UWP๋ก ์์
ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ํ์คํ ๋ ๊ฐ๊น์ด์์ ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
๋ด ์ ์์ Xaml Islands ์์ฒด์ ๊ด๋ จ์ด ์์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ๋ ์ด์์ ํ๋ซํผ์์ ์๋ํ๊ธฐ ๋๋ฌธ์ WinUI์ ๋ ๊ด๋ จ์ด ์์ต๋๋ค.
๋ด ์ ์์ Xaml Islands ์์ฒด์ ๊ด๋ จ์ด ์์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ๋ ์ด์์ ํ๋ซํผ์์ ์๋ํ๊ธฐ ๋๋ฌธ์ WinUI์ ๋ ๊ด๋ จ์ด ์์ต๋๋ค.
@Tirraon , ๊ทธ๋ ์์ ํ ์ดํดํ๊ณ ๋จธ๋ฆฌ๊ฐ ์๋ ๊ณณ์ด ์ ๋์ ์ผ๋ก ์ข์ ๐
๋๋ ๋น์ ์ด ์ ์ํ๋ ๊ฒ์ ๋ํด @jeromelaban ๋ฐ ํ์ฌ์ ๊ฐ๋จํ ์ด์ผ๊ธฐํ์ผ๋ฉฐ ํ์คํ ๊ด์ฌ์ด ์์ต๋๋ค. ์์ง ๋ ผ์์ ์ด๊ธฐ ๋จ๊ณ์ ์๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฒด์ ์ธ ๊ณํ์ด๋ ์ฝ์์ ์์ง ์์ต๋๋ค. ์ด๋ฌํ ์ข ๋ฅ์ ์ ๋ ฅ์ ํ๋ฅญํ๋ฉฐ ๊ณ ๊ฐ์๊ฒ ์ ๊ณตํ๋ ๊ฐ์น๋ฅผ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๐
XAML ์์ผ๋๋ ์๋๋ฆฌ์ค๋ C++ ์๋๋ฆฌ์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ด๊ฐ ์ง๋ฉดํ ๋ฌธ์ ๋ชฉ๋ก์ ์ด ์ค๋ ๋์ ์ด์ ๋ฉ์์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
์, XAML Island ์๋๋ฆฌ์ค๋ ํ์ฌ ๋์ฐํฉ๋๋ค.
XAML ์์ผ๋๋ ์๋๋ฆฌ์ค๋ C++ ์๋๋ฆฌ์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ด๊ฐ ์ง๋ฉดํ ๋ฌธ์ ๋ชฉ๋ก์ ์ด ์ค๋ ๋์ ์ด์ ๋ฉ์์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
@sylveon ๊ทํ์ ์๊ฒฌ(์๋ ๋งํฌ)์ ๋ณด๊ณ ์์ต๋๋ค. ์, ๊ฝค ๋์ฐํ๊ฒ ๋ค๋ฆฝ๋๋ค. ๋ถํธ์ ๋ผ์ณ ๋๋ ค ์ฃ์กํฉ๋๋ค. ๊ฐ์ ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
https://github.com/microsoft/microsoft-ui-xaml/issues/1045#issuecomment -512945553
https://github.com/microsoft/microsoft-ui-xaml/issues/1045#issuecomment -513505038
๋น์ ์ด ๊ฒช๊ณ ์๋ ๋ง์ ๊ณ ํต์ ํ๋ก์ ํธ ์์คํ ๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ ๋ง์ ์ฌ๋๋ค์ ๊ด์ฌ์ ๋ฐ๊ณ ์๋ค๋ ๊ฒ์ ์๋๋ค. ์ฐ๋ฆฌ ํ ๊ตฌ์ฑ์ ์ค ์ผ๋ถ๊ฐ XAML ๋๊ตฌ์ ๋ํด ์ํํ ์ด ๋น๋์ค๋ฅผ ๋ณธ ์ ์ด ์์ต๋๊น? ํด๋น ๋งํฌ๋ @michael-hawker ๋ฐ @marb2000 ์ด ์๋ก์ด Xaml Island ํ๊ฒฝ์ผ๋ก
Xaml Island์ ๊ฒฝํ์ ์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค. ๋ด๊ฐ ์ธ๊ธํ๋ ์ธก๋ฉด์ ํ์ฌ WPF์ UWP ์ฝํ ์ธ ์ฌ์ ํฌํจํ๋ ๋ฐฉ์์ด ๋ค์๊ณผ ๊ฐ๋ค๋ ๊ฒ์ ๋๋ค(์ ๋น๋์ค์์).
<Grid>
<xi:WindowsXamlHost InitialTypeName="UWP_XamlApplication.SamplePage"/>
</Grid>
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ณด๋ค ๋ ์ํ ์ ์๊ณ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ ๊ณตํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
<Grid>
<uwp:SamplePage />
</Grid>
@stevenbrix
๋๋ ๋น์ ์ด ์ ์ํ๋ ๊ฒ์ ๋ํด @jeromelaban ๋ฐ ํ์ฌ์ ๊ฐ๋จํ ์ด์ผ๊ธฐํ์ผ๋ฉฐ ํ์คํ ๊ด์ฌ์ด ์์ต๋๋ค. ์์ง ๋ ผ์์ ์ด๊ธฐ ๋จ๊ณ์ ์๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฒด์ ์ธ ๊ณํ์ด๋ ์ฝ์์ ์์ง ์์ต๋๋ค. ์ด๋ฌํ ์ข ๋ฅ์ ์ ๋ ฅ์ ํ๋ฅญํ๋ฉฐ ๊ณ ๊ฐ์๊ฒ ์ ๊ณตํ๋ ๊ฐ์น๋ฅผ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋๋ฌด ๋ง์ ๊ด์ฌ์ด ์์ต๋๋ค! (์ด ๋ํ๋ ์ด๋์์๋ ๋ํ๋ฉ๋๋ค.) WinUI ํฌ์คํธ 3.0์ด ํ๋ซํผ ๊ฐ ๊ตฌํ์ผ๋ก ์ ํ๋๋ค๋ฉด ๊ฐ๋ฐ์ ์ง์์ด ๋ง์ด ํ์ํ ๊ฒ์ ๋๋ค. #1461์ ๋ํ ํ ๋ก ์ ๋ณด์ญ์์ค. ๋จ๊ธฐ์ ์ผ๋ก๋ Uno Platform ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ XAML/C#์ HTML/WASM์ผ๋ก ๋ณํํ์ฌ ๋ชจ๋ ํ๋ซํผ์์ UWP ์ฑ์ ์คํํ๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ๋ ๊ฒ์ ๋๋ค. ์ฅ๊ธฐ์ ์ผ๋ก ์ ๋ Electron ๋๋ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ์ฐ๋ คํ๊ณ ์์ผ๋ฉฐ ๋ณด๋ค ํจ์จ์ ์ธ ์ํคํ ์ฒ๋ฅผ ์ํ ์ฌ์ง๊ฐ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋๋ ๋ชจ๋๊ฐ ํ์ฌ WinUI 3.0์ผ๋ก ๋ฐ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ํ์ง๋ง ์์ ์ด ๋๋๋ฉด @jeromelaban , @marb2000 , @jevansaks ๋ฐ ๊ธฐํ ์ฌ์ฉ์๋ฅผ ์ฐ๊ฒฐํ์ฌ UWP๋ฅผ ๋ชจ๋ ๊ณณ์์ ๋ ๋๋งํ ์ ์๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์์๋ด๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๊ฒ์ ๋ํ ํฅํ ํธ์ถ์ ๋ํ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์ปค๋ฎค๋ํฐ ํ ๋ก ์ด ๋ ๊ฒ์ ๋๋ค.
WinUi๋ ๋ค์ค์ ๋์ค๊ฐ ๋ชจ๋ ์ด์๋จ์ ์ ์๋ ์ ์ผํ ์ ์ ์ ์ ๊ธธ์ ๋๋ค.
๋ณด๋ธ ์ฌ๋: roblo [email protected]
๋ณด๋ธ ๋ ์ง: 2019๋
11์ 7์ผ ๋ชฉ์์ผ ์คํ 12:00:07
๋ฐ๋ ์ฌ๋: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋ ์คํ ๋์ [email protected] ; ๋ฉ์
@noreply.github.com
์ ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] WinUI 3.0 ๊ฐ๋ฐ์ ๊ฒฝํ ๋ฐ ๋๊ตฌ - ์
๋ ฅ ํ์(#1045)
@stevenbrix https://github.com/stevenbrix
๋๋ @jeromelaban https://github.com/jeromelaban ๋ฐ ํ์ฌ์ ์ ํํ ๋น์ ์ด ์ ์ํ๋ ๊ฒ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ด์ผ๊ธฐํ์ผ๋ฉฐ ํ์คํ ๊ด์ฌ์ด ์์ต๋๋ค. ์์ง ๋ ผ์์ ์ด๊ธฐ ๋จ๊ณ์ ์๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฒด์ ์ธ ๊ณํ์ด๋ ์ฝ์์ ์์ง ์์ต๋๋ค. ์ด๋ฌํ ์ข ๋ฅ์ ์ ๋ ฅ์ ํ๋ฅญํ๋ฉฐ ๊ณ ๊ฐ์๊ฒ ์ ๊ณตํ๋ ๊ฐ์น๋ฅผ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋๋ฌด ๋ง์ ๊ด์ฌ์ด ์์ต๋๋ค! (์ด ๋ํ๋ ์ด๋์์๋ ๋ํ๋ฉ๋๋ค.) WinUI ํฌ์คํธ 3.0์ด ํ๋ซํผ ๊ฐ ๊ตฌํ์ผ๋ก ์ ํ๋๋ค๋ฉด ๊ฐ๋ฐ์ ์ง์์ด ๋ง์ด ํ์ํ ๊ฒ์ ๋๋ค. #1461 https://github.com/microsoft/microsoft-ui-xaml/issues/1461 ์์ ํ ๋ก ์ ๋ณด์ญ์์ค. ๋จ๊ธฐ์ ์ผ๋ก๋ Uno Platform ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ XAML/C#์ HTML/WASM์ผ๋ก ๋ณํํ์ฌ ๋ชจ๋ ํ๋ซํผ์์ UWP ์ฑ์ ์คํํ๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ๋ ๊ฒ์ ๋๋ค. ์ฅ๊ธฐ์ ์ผ๋ก ์ ๋ Electron ๋๋ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ์ฐ๋ คํ๊ณ ์์ผ๋ฉฐ ๋ณด๋ค ํจ์จ์ ์ธ ์ํคํ ์ฒ๋ฅผ ์ํ ์ฌ์ง๊ฐ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋๋ ๋ชจ๋๊ฐ ํ์ฌ WinUI 3.0์ผ๋ก ๋ฐ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ๋๋๋ฉด @jeromelaban https://github.com/jeromelaban , @marb2000 https://github.com/marb2000 , @jevansaks https://github.com/jevansaks ๋ฐ ๊ธฐํ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. UWP๊ฐ ๋ชจ๋ ๊ณณ์์ ๋ ๋๋ง๋๋๋ก ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. ๊ทธ๊ฒ์ ๋ํ ํฅํ ํธ์ถ์ ๋ํ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์ปค๋ฎค๋ํฐ ํ ๋ก ์ด ๋ ๊ฒ์ ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
GitHub์์ ๊ทธ๊ฒ์ ์ง์ ์ด ์ด๋ฉ์ผ์ ํ์ ๋ณผ https://github.com/microsoft/microsoft-ui-xaml/issues/1045?email_source=notifications&email_token=AD3GCLCHIRMGIIB4EEMXQATQSRJSPA5CNFSM4ICOLUJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDNI2QA#issuecomment-551193920 , ๋๋ ํํด https://github.com/ ์๋ฆผ/๊ตฌ๋
์ทจ์-์ธ์ฆ/AD3GCLCAZIOGVET6CJKLKLTQSRJSPANCNFSM4ICOLUJQ .
WinUi๋ ๋ค์ค์ ๋์ค๊ฐ ๋ชจ๋ ์ด์๋จ์ ์ ์๋ ์ ์ผํ ์ ์ ์ ์ ๊ธธ์ ๋๋ค.
๋์ํ๋ ๊ฒฝํฅ์ด ์์ง๋ง Android ๋ฐ Surface Duo์์ ์คํ๋๋ Windows ์ฑ์์ ๋์ผํ UI๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๊ฐ๋ฐ์์ ์ต์ํ์ ๊ฐ์ ์ผ๋ก - ๊ทธ๊ฒ์ด ์ฑ๋ฐฐ์ ๋๋ค.
WinUI๊ฐ ์ฃผ์ ๊ฐ๋ฐ ํ๋ซํผ์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ณ Windows๊ฐ ์ฅ๊ธฐ์ ์ผ๋ก ๋ค๋ฅธ ํ๋ซํผ์ ์ฑ์ ์์ฉํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ๋ค๋ฉด. (ํฐ ํ๋ฆฝ๋ ์ฑ์ ๊ฒฝ์ฐ ํญ์ ๋์ ๊ฒ์ ์๋์ง๋ง LoB ๋ฐ ๋ค์ ํฐ ์ฑ์ ๊ฒฝ์ฐ...)
๋ด ์์ ์ ์์ฉ ํ๋ก๊ทธ๋จ ์งํฅ ์ธ์ด๋ฅผ ๋ง๋ค๊ณ ์์ผ๋ฉฐ XAML๊ณผ ํจ๊ป WinUI ์ฌ์ฉ์ ์ง์ํ๊ณ ์ฝ๋ ์จ๊น์ฉ ์ธ์ด๋ฅผ ์ง์ํ๋ ค๊ณ ํฉ๋๋ค. ๋๊ตฌ๊ฐ XAML์ฉ ์ฝ๋ ์์ฑ์ ์ ๊ณตํ๋ ์ธ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. XAML ์ฝ๋ ์์ฑ๊ธฐ๊ฐ ๋ชจ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฃํ ์ ์๋ ๋ถ๋ถ ํด๋์ค๋ก IL์ ๋น๋ํ๋ค๋ฉด ๋ ์ข์ ๊ฒ์ ๋๋ค. ์ด๋ ์ฝ๋ ์์ฑ๊ธฐ๊ฐ ์ปดํ์ผ ๊ฐ๋ฅํ IL ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ด ์์ ์ ์์ฉ ํ๋ก๊ทธ๋จ ์งํฅ ์ธ์ด๋ฅผ ๋ง๋ค๊ณ ์์ผ๋ฉฐ XAML๊ณผ ํจ๊ป WinUI ์ฌ์ฉ์ ์ง์ํ๊ณ ์ฝ๋ ์จ๊น์ฉ ์ธ์ด๋ฅผ ์ง์ํ๋ ค๊ณ ํฉ๋๋ค. ๋๊ตฌ๊ฐ XAML์ฉ ์ฝ๋ ์์ฑ์ ์ ๊ณตํ๋ ์ธ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. XAML ์ฝ๋ ์์ฑ๊ธฐ๊ฐ ๋ชจ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฃํ ์ ์๋ ๋ถ๋ถ ํด๋์ค๋ก IL์ ๋น๋ํ๋ค๋ฉด ๋ ์ข์ ๊ฒ์ ๋๋ค. ์ด๋ ์ฝ๋ ์์ฑ๊ธฐ๊ฐ ์ปดํ์ผ ๊ฐ๋ฅํ IL ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
XAML Direct๊ฐ ์์ง๋ง ํ์ฌ C# ๋ฐ C++์์ ์ง์ํฉ๋๋ค.
https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.core.direct
๋ด ๋ง์ ๊ทธ๊ฒ ์๋์ผ. ์ฝ๋ ์์ฑ ๋๊ตฌ์ ์ถ๋ ฅ์ด C# ๋๋ C++๊ฐ ์๋ IL์ด๋ผ๋ ์๋ฏธ์ ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ด ์ปดํ์ผ๋ฌ๊ฐ XAML์ IL๋ก ๋ณํํ ๋ค์ ํด๋น ํด๋์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค.
@sharpninja C++ ์ฝ๋ ๋์ LLVM ๋ฐ์ดํธ์ฝ๋๋ ์์ฑํ ์ ์๋ค๋ฉด ์ ์ตํ ๊ฒ์ ๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด MIDL ๋ฐ XLang๊ณผ ๊ฒฐํฉํ์ฌ ๋ชจ๋ XLang ์ง์ ์๋๋ฆฌ์ค์์ ์ฌ์ฉํ COM ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ WinMD ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
C++ ๋ชจ์๋ฅผ ์ฐ๊ณ C++์ฉ WinUI ๋๊ตฌ์ ๊ด๋ จํ์ฌ ๋ณด๊ณ ์ถ์ ๊ฒ์ Microsoft๊ฐ ๋ง์นจ๋ด 90๋ ๋ ์ค๋ฐ๋ถํฐ C++ Builder๊ฐ ํด์จ ์ผ์ ๋ฐ๋ผ์ก๋ ๊ฒ์ ๋๋ค.
C++ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ํ ์ค์ RAD ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์์๋ ๋ช ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์์ง๋ง C++/CLI๋ ์ด์ ๋ฏธ์น์ง ๋ชปํ์ต๋๋ค.
C++/CX๋ ๊ทธ๋ ๊ฒ ๋ ๊ฒ ๊ฐ์์ง๋ง ์ฌ์ ํ C++ ๋น๋๊ฐ ํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ ธ๋ ฅ์ด ํ์ํ์ต๋๋ค.
์ด์ C++/WinRT๋ ํ์ค C++17์ด ๋ ์ ์์ง๋ง ๋ฐ์คํฌํฑ ๊ฐ๋ฐ์์ ์ ๋ฐ์ ์ธ ๊ฒฝํ์ ์๋์ผ๋ก ์์ฑํด์ผ ํ๋ ์์ฉ๊ตฌ์ ์ฆ๊ฐ, COM ์ ํ์ด ABI ๊ฒฝ๊ณ๋ฅผ ๋๋ ๋ฐฉ๋ฒ ๋ฐ ๋์์ด๋ ๋ถ์กฑ์ผ๋ก ์ธํด ๋ค์ด๊ทธ๋ ์ด๋์ฒ๋ผ ๋๊ปด์ง๋๋ค. ์ง์ํ๋ค.
๊ทธ๋์ ๋๋ MIDL ์ปดํ์ผ๋ฌ์ COM ABI ์ง์์ ํ์ํ ๋ชจ๋ ์์ฉ๊ตฌ๋ฅผ ๋ค๋ฃฐ ์๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๋น๋ถ๊ฐ ์ฌ์ ํ C++/CX๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ฐ๋ฉด์ .NET ๋ชจ์๋ฅผ ์ด ์ํ์์ DirectX์ ๊ฐ์ C++ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์นจ๋ด WinUI ๊ตฌ์ฑ ์์๋ก ๋ ธ์ถ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ผ๋ถ Blend๋ ์ฌ๋ํ๊ณ F#๋ Microsoft์ .NET ์ธ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ๊ณ ์์ต๋๋ค.
WinUI๋ก ์ ํํ๋ ๋ฐ ์๋นํ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. ํ์ฌ WinUI๋ฅผ ์ฌ์ฉํ์ง ์๋ ์์ฌ ๋ฐ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ์์ผ๋ฉฐ ์ด์ ๋ํ ์ข ์์ฑ์ด ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ SDK.
UWP Community Discord์์ StatusBar์ ๋ํด ์ด์ผ๊ธฐํ๋ค๊ฐ ๋ ์๊ฐ์ ๋๋ค..
Visual Studio์์ ๋๊ตฌ ์์์ UWP์์ ๋๋ฝ๋ WPF ์ปจํธ๋กค์ ๋ํ ํญ๋ชฉ์ด ํฌํจ๋๋๋ก ํ๊ณ ํด๋น ํญ๋ชฉ์ด ์ ํ๋๋ฉด ๊ธฐ์กด ์ปจํธ๋กค์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ํ์ ์ ํ์ํฉ๋๋ค.
์ด ์์ด๋์ด๋ WPF(๋๋ ๋ค๋ฅธ ํ๋ ์์ํฌ)์์ ์ค๋ ์ฌ๋๋ค์ด ํน์ ์ปจํธ๋กค์ ๋ณผ ๊ฒ์ผ๋ก ์์ํ๊ณ ์ด๋ฌํ ์ปจํธ๋กค์ ์ฐพ์ง ๋ชปํ๋ ๊ฒ์ด ๋ถํธํ ๊ฒฝํ์ด ๋ ์ ์๋ ์ฌ๋๋ค์ ์ํด ์ ํ์ ์ฉ์ดํ๊ฒ ํ๋ ค๋ ๋ฐ๋์์ ๋น๋กฏ๋์์ต๋๋ค. CommandBar๊ฐ StatusBar์ฒ๋ผ ์ฌ์ฉ๋ ์ ์๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? ์ฌ๋๋ค์ด WinUI๋ก ์ด๋ํ ์ ์๋๋ก ์ต๋ํ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๋๋ฝ๋ ๋ชจ๋ ์ปจํธ๋กค์ ์ค์ ๋ก ๊ฐ๋ฐํ์ง ์๊ณ ๋ ์ผ๋ถ ๊ณต๋ฐฑ์ ์ฑ์ฐ๋ ์ญํ ์ ํ ์ ์์ต๋๋ค.
ํธ์งํ๋ค:
๊ทธ๋ฆฌ๊ณ ์์ฑ๋๋ฅผ ์ํด ์ํ ํ์์ค์ ๋ํด ์ธ๊ธํ ๋ค๋ฅธ ๋ด์ฉ์ด ์์ต๋๋ค. UWP(๋๋ WinUI)์ ์ต์ํ์ง ์์ ์ฌ์ฉ์๊ฐ UWP(๋๋ WinUI)์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
Re: StatusBar - UWP๋ฅผ ์๋ํ๋ ๊ธฐ์กด ํ๋ ์์ํฌ ์ฌ์ฉ์์ ๊ด์ ์์ ์๊ฐํ๊ณ ์์๋๋ฐ StatusBar๊ฐ ์๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์ฌ์ ํ ๋ง์ ์ฑ์์ ํ์ ์์์ ๋๋ค. ์, CommandBar๊ฐ ๋ ๋์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋๋ค์ CommandBar๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฑฐ๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ถ์ธกํ ์ ์์ต๋๋ค. ์์ ๋๊ตฐ๊ฐ๋ ๋ด๊ฐ ๊ทธ๋ฆฌ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋งจ ์๋์ ๋๊ณ ํ ํ ๋์ด๋ก ๋ง๋ค๊ณ ๋ค์ํ ์ปจํธ๋กค์ ์ถ๊ฐํ์ฌ ํ์ํ ๊ฒ์ ์ ์ํ์ต๋๋ค. ๊ทธ๋์ ๊ธฐ์กด Xaml ๋์์ด๋๋ค๋ CommandBar์ ๋ํด ๋ชจ๋ฅด๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์จ๋ ๋น์ ์ด ๋ง์ ์๋ ์๊ณ CommandBar๊ฐ ๋ ๋์ ์๋ ์์ง๋ง Paul Thurrot์ UWP ๋ฉ๋ชจ์ฅ ์ฑ์์ ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๋ฐ๋ผ์ CommandBar๊ฐ StatusBar์ ๋์ฒดํ์ผ๋ก ์ ๋ฌ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์บ์ฃผ์ผ(๋๋ ์ ๊ท) ๊ฐ๋ฐ์๋ ์ฌ์ ํ StatusBar๋ฅผ ์ฐพ๊ณ ์์ง๋ง ์ฐพ์ง ๋ชปํ๊ณ ์์ต๋๋ค. Paul Thurrot์ด ๊ฐ๋ฐ์๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ ์์ ์ ์ดํดํฉ๋๋ค.
์ค๋ํซ์ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์์๋ xaml์ ์ฃผ์ ๋๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ณด๋ธ ์ฌ๋: Gavin-Williams [email protected]
๋ณด๋ธ ๋ ์ง: 2020๋
2์ 18์ผ ํ์์ผ ์คํ 7:05:39
๋ฐ๋ ์ฌ๋: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋ ์คํ ๋์ [email protected] ; ๋ฉ์
@noreply.github.com
์ ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] WinUI 3.0 ๊ฐ๋ฐ์ ๊ฒฝํ ๋ฐ ๋๊ตฌ - ์
๋ ฅ ํ์(#1045)
UWP Community Discord์์ StatusBar์ ๋ํด ์ด์ผ๊ธฐํ๋ค๊ฐ ๋ ์๊ฐ์ ๋๋ค..
Visual Studio์์ ๋๊ตฌ ์์์ UWP์์ ๋๋ฝ๋ WPF ์ปจํธ๋กค์ ๋ํ ํญ๋ชฉ์ด ํฌํจ๋๋๋ก ํ๊ณ ํด๋น ํญ๋ชฉ์ด ์ ํ๋๋ฉด ๊ธฐ์กด ์ปจํธ๋กค์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ํ์ ์ ํ์ํฉ๋๋ค.
์ด ์์ด๋์ด๋ WPF(๋๋ ๋ค๋ฅธ ํ๋ ์์ํฌ)์์ ์ค๋ ์ฌ๋๋ค์ด ํน์ ์ปจํธ๋กค์ ๋ณผ ๊ฒ์ผ๋ก ์์ํ๊ณ ์ด๋ฌํ ์ปจํธ๋กค์ ์ฐพ์ง ๋ชปํ๋ ๊ฒ์ด ๋ถํธํ ๊ฒฝํ์ด ๋ ์ ์๋ ์ฌ๋๋ค์ ์ํด ์ ํ์ ์ฉ์ดํ๊ฒ ํ๋ ค๋ ๋ฐ๋์์ ๋น๋กฏ๋์์ต๋๋ค. CommandBar๊ฐ StatusBar์ฒ๋ผ ์ฌ์ฉ๋ ์ ์๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? ์ฌ๋๋ค์ด WinUI๋ก ์ด๋ํ ์ ์๋๋ก ์ต๋ํ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๋๋ฝ๋ ๋ชจ๋ ์ปจํธ๋กค์ ์ค์ ๋ก ๊ฐ๋ฐํ์ง ์๊ณ ๋ ์ผ๋ถ ๊ณต๋ฐฑ์ ์ฑ์ฐ๋ ์ญํ ์ ํ ์ ์์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
GitHub์์ ๊ทธ๊ฒ์ ์ง์ ์ด ์ด๋ฉ์ผ์ ํ์ ๋ณผ https://github.com/microsoft/microsoft-ui-xaml/issues/1045?email_source=notifications&email_token=AD3GCLGYERSFO7LBXKWBBRDRDSAWHA5CNFSM4ICOLUJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMF6O3Y#issuecomment-587982703 , ๋๋ ํํด https://github.com/ ์๋ฆผ/๊ตฌ๋
์ทจ์-์ธ์ฆ/AD3GCLFLGA773XOS5OSG5ULRDSAWHANCNFSM4ICOLUJQ .
๊ฐ๋ฐ์ ์คํ ๋ฆฌ์๋ ์ผ์ข ์ ๋น๊ต ๋ชฉ๋ก์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
Win32 ์ฑ์ ๊ณ ์ ํ ๊ฐ๋ ์ด๋ฏ๋ก ์ํ ํ์์ค, ๋๊ตฌ ๋ชจ์, ๋ฉ๋ด, ๊ทธ๋ฆฌํผ, ํญ ๋ฑ์ด ํ ๋ชฉ๋ก์ ์๊ณ WinUI๋ ๋ค๋ฅธ ๋ชฉ๋ก์ ์์ต๋๋ค.
๊ธฐ์กด ์ฑ์ UI๋ฅผ WinUI๋ก ์ด๋ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ ๋ค์ ์ฝ๋ ์ํ์ ํฌํจํ๋ ํ์ด์ง ์์ฒด.
์ด๋ฆฐ ์ง๋ฌธ
1-3๋จ๊ณ๋ฅผ ์๋ํํ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉด ๋์์ด ๋ ๊น์?์. ์ ๋ 1๊ฐ์ "๋ ๊ฑฐ์" Windows Forms ์ฑ(๋ ๊ฑฐ์๋ ๋ค์ ์์ฑํ ์์ฐ์ด ์์์ ์๋ฏธํจ)๊ณผ 2๊ฐ ๋๋ 3๊ฐ์ ๋ ๊ฑฐ์ WPF ์ฑ์ ์ง์ํฉ๋๋ค. WinForms ์ฑ์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ง๋ง WPF ์ฑ์ WinUI 3์ผ๋ก ์ ์ํ๊ฒ ์ด์ํ๋ ๋ฐ ๋์์ด ๋๋ ๋๊ตฌ๋ ํ๋ฅญํ ๊ฒ์ ๋๋ค!
MSIX๋ ๋ชจ๋ ์ฑ์ ๋ํ ์ต์ ํจํค์ง ๋ฐฉ๋ฒ์ ๋๋ค. Win32์ WinUI์ ๊ฒฝ์ฐ ClickOnce๋ฅผ ์ง์ํด์ผ ํฉ๋๊น? ์ด๋ค ๋ค๋ฅธ ํจํค์ง ๋ฐฉ๋ฒ์ ๋ํ ์ง์์ ํฌํจํด์ผ ํฉ๋๊น? ํนํ Win32์ WinUI์ ๊ฒฝ์ฐ
ํ์ฌ ClickOnce๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ๋ฐ์คํฌํฑ์ ์ฑ์ ๊ฒ์ํฉ๋๋ค. ์๋ ์ ๋ฐ์ดํธ์ ์ผ๋ถ ๋ชจ๋ธ์ ์ฌ์ ํ โโํ์ํฉ๋๋ค.
@JeffSchwandt
์ด๋ฌํ ๋จ๊ณ๋ ์ด์ ๋ฒ์ (1-2)์ ์ฌ์ฉํ๋ WinUI ํ๋ก์ ํธ๋ฅผ ๋ฒ์ 3์ผ๋ก ๋ณํํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๊ฒ์ ๋๋ค.
WPF ์ฑ์ WinUI ์ฑ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์๋ํ๋ ๋ฐฉ์์ผ๋ก ํนํ ์คํ ๊ฐ๋ฅํ์ง ์์ต๋๋ค(๋ง์ ๋ ธ๋ ฅ ์์ด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค).
์ด ์ค๋ ๋๊ฐ ์ด ์์ฒญ์ ๊ฒ์ํ๋ ๋ฐ ์ ํฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Rust๋ ํ์ฌ ์ ์ ํ UI ํ๋ ์์ํฌ๊ฐ ์ ์คํ ํ์ํฉ๋๋ค. WinUI๊ฐ ํฅํ ๋ค์ดํฐ๋ธ SDK์ ์ผ๋ถ ๋๊ตฌ๋ก Rust๋ฅผ ์ง์ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด ์ค๋ ๋๊ฐ ์ด ์์ฒญ์ ๊ฒ์ํ๋ ๋ฐ ์ ํฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Rust๋ ํ์ฌ ์ ์ ํ UI ํ๋ ์์ํฌ๊ฐ ์ ์คํ ํ์ํฉ๋๋ค. WinUI๊ฐ ํฅํ ๋ค์ดํฐ๋ธ SDK์ ์ผ๋ถ ๋๊ตฌ๋ก Rust๋ฅผ ์ง์ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ข์ ์์์ ๋๋ค. Rust/WinRT๋ Rust ์ฑ์์ WinUI์ ๊ฐ์ WinRT API๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ ์ค์ ๋๋ค! https://kennykerr.ca/2020/02/22/rust-winrt-coming-soon/์ ์ดํด๋ณด์ญ์์ค.
@jevansaks ํค์ด, ์๋ต ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์, Kenny๊ฐ Rust/WinRT์์ ์๋ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง WinRT๊ฐ WinUI์์ ์ง์ํ๋ ์ ์ผํ API ๊ณ์ธต์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๋ฐ์คํฌํฑ ์ฑ์ WinRT API ์ฌ์ฉ์ด Windows 10 1903์์๋ง ์ฌ์ฉํ ์ ์๊ฒ ๋ ๋ฐ๋ฉด WinUI๋ ์ด์ ๋ฒ์ ์ Windows 10์ ์ง์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค๋ ์ฌ์ค๊ณผ ์ด๊ฒ์ด ์ด๋ป๊ฒ ๋ง๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Rust/WinRT(C++/WinRT์ ๊ฐ์)๋ Windows 7๊น์ง ์๋ํด์ผ ํฉ๋๋ค. WinRT ์์ฒด๋ ํญ์ ๋ฐ์คํฌํฑ/win32 ์ฑ์์ ์๋ํ์ต๋๋ค. store/uwp/packaging ์๊ตฌ ์ฌํญ์ด ์๋ ํน์ API๋ง ์์ต๋๋ค(WinRT ์ ์ฒด๊ฐ ์๋). WinUI์ ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ด ์๋ ํ ์ง์๋๋ ๋ชจ๋ ํ๋ซํผ์์ C++/WinRT ๋ฐ Rust/WinRT๋ฅผ ํตํด ๋ฐ์คํฌํฑ ์ฑ์์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
WinUI ๋ฐ์คํฌํฑ ์ฑ์ ๋ผ์ด๋ธ ํ์ผ ๋ฐ ํ์ผ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ์ฌ UWP ์ฑ๋ณด๋ค ์ฝ๊ฒ โโํ์ผ์ ์์ฑํ ์ ์๋ ๊ฐ๋จํ ์ํ๊ณผ SDK ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฐ์คํฌํฑ ์ฑ์ WinRT API ์ฌ์ฉ์ด Windows 10 1903์์๋ง ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๋ ์ฌ์ค๊ณผ ์ด๊ฒ์ด ์ด๋ป๊ฒ ๋ง๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
WinUI Desktop์ ํ์ฌ WinUI 3.0์ฉ์ผ๋ก ์ค๊ณ ์ค์ด๋ฉฐ ์ผ๋ฐ Win32 ์ฑ์์ WinUI ํ์ ์์ค์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค(ํ์ฌ ๊ณํ์ 1803๊น์ง์).
Windows UI๋ ์ต์ํ ์ฃผ์ MVVM ํ๋ ์์ํฌ์ธ MVVM Light, Prism ๋ฐ Caliburn์ ์ง์ํด์ผ ํฉ๋๋ค. ๋ถํํ๋ INotifyPropertyChanged ๋ฐ INotifyCollectionChanged๊ฐ ObservableCollection์ ๊นจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๋ฌธ์ํ๋ ๋ฌธ์
๋ถํํ๋, ObservableCollection์ ๊นจ๋ INotifyPropertyChanged ๋ฐ INotifyCollectionChanged ๋ณ๊ฒฝ์ ๋ํ ๋ฌธ์ํ๋ ๋ฌธ์ ๋ ํ์คํ MVVM Light์ ๋ค๋ฅธ ๋ ํ๋ ์์ํฌ๋ ์์์ํต๋๋ค. ๋น์ ์ด ์์์ผ ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
@terrycox ๊ฐ์ฌํฉ๋๋ค! ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๊ฐ WinUI 3.0 RTM์ ์ํด ํด๊ฒฐ๋ ๊ฒ์์ ์๊ณ ์์ผ๋ฉฐ ๊ทธ ์ด์ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋น๋์์ ์ด์์ ์ผ๋ก๋ ;)
@terrycox Windows UI๋ ์ต์ํ ์ฃผ์ MVVM ํ๋ ์์ํฌ์ธ MVVM Light, Prism ๋ฐ Caliburn์ ์ง์ํด์ผ ํฉ๋๋ค. ... ๋ฌธ์ํ๋ ๋ฌธ์
์, ๋ฌธ์ํ๋ ๋ฌธ์ ๋ฅผ ์์ ํด์ผ ํ์ง๋ง MVVM ํ๋ ์์ํฌ๋ฅผ ์ง์ํ๊ธฐ ์ํด WinUI๋ฅผ ํฌํจํ .Net UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. UI ์์๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ง ์ง์ํ๋ฉด ๋ฉ๋๋ค. .Net MVVM ๋๋ ๋ฐ์ ํ๋ ์์ํฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UI๋ฅผ ๋ํ๋ด๋ .Net ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ ์ชฝ๋ ์๋๋ฐฉ์ ๋ํด ์ ํ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ํ๋ ์์ํฌ๋ ๋ชจ๋ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฐํฉ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ MVVM ํ๋ ์์ํฌ๋ฅผ ์ง์ํ๊ธฐ ์ํด WinUI๋ฅผ ํฌํจํ .Net UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ UIElements๊ฐ ์ธ์ํ๊ณ ์๋ ์ด๋ฒคํธ ๋ฐ ์ธํฐํ์ด์ค์ ๊ฐ์ ๊ฒ๋ค์ ํ์ํ๋ฉฐ ๊ทธ๊ฒ์ด ๊ณ ์ฅ๋ ๊ฒ์ ๋๋ค.
๋ณด๋ธ ์ฌ๋: Charles Roddie [email protected]
๋ณด๋: 2020๋
3์ 25์ผ ์์์ผ ์คํ 2:28:46
๋ฐ๋ ์ฌ๋: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋ ์คํ ๋์ [email protected] ; ๋ฉ์
@noreply.github.com
์ ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] WinUI 3.0 ๊ฐ๋ฐ์ ๊ฒฝํ ๋ฐ ๋๊ตฌ - ์
๋ ฅ ํ์(#1045)
@terrycox https://github.com/terrycox Windows UI๋ ์ต์ํ ์ฃผ์ MVVM ํ๋ ์์ํฌ์ธ MVVM Light, Prism ๋ฐ Caliburn์ ์ง์ํด์ผ ํฉ๋๋ค. ... ๋ฌธ์ํ๋ ๋ฌธ์
์, ๋ฌธ์ํ๋ ๋ฌธ์ ๋ฅผ ์์ ํด์ผ ํ์ง๋ง MVVM ํ๋ ์์ํฌ๋ฅผ ์ง์ํ๊ธฐ ์ํด WinUI๋ฅผ ํฌํจํ .Net UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. UI ์์๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ง ์ง์ํ๋ฉด ๋ฉ๋๋ค. .Net MVVM ๋๋ ๋ฐ์ ํ๋ ์์ํฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก UI๋ฅผ ๋ํ๋ด๋ .Net ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ ์ชฝ๋ ์๋๋ฐฉ์ ๋ํด ์ ํ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ํ๋ ์์ํฌ๋ ๋ชจ๋ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฐํฉ๋ ์ ์์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ํ์ ํ๊ฑฐ๋ GitHub https://github.com/microsoft/microsoft-ui-xaml/issues/1045#issuecomment-604040104 ์์ ํ์ธํ๊ฑฐ๋ https://github.com/notifications/unsubscribe-auth/๋ฅผ ๊ตฌ๋
์ทจ์ํฉ๋๋ค.
Dotnet cli ๋๊ตฌ๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ท์ฝ์ด SDK
dotnet new ๋ฐ dotnet build์ ๊ฐ์ ๋ช
๋ น์ผ๋ก ์ถฉ๋ถํด์ผ ํ๋ฉฐ Visual Studio ์ค์น์ ๋ํ ํ๋ ์ข
์์ฑ์ด ์์ต๋๋ค. .Net Core ์๋์ ์์ ํ ์ฐธ์ฌํ์ญ์์ค!
xaml ๋์์ด๋๊ฐ ๋น ๋ฅด๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ํ์ฌ XAML ๋์์ด๋๋ ๋๋ฆฌ๊ณ ํญ์ ์ผ๋ถ ์์ธ๊ฐ ๋ฐ์ํ์ฌ ์๋ํ์ง ์๋๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ฅผ ์์ ํ๊ณ ๊ฐ๋ ฅํ ๋์์ด๋๋ฅผ ์ ๊ณตํ์ญ์์ค.
ํ์ฌ uwp์๋ ์ ๊ธ ํ๋ฉด์ ๊ฐ์งํ ์ ์๋ API๊ฐ ์์ต๋๋ค. ์ ๊ธ ํ๋ฉด์ ๊ฐ์งํ๊ณ ๋ถ์ธ ๊ฐ์ ๋ฐํ ๊ฐ์ผ๋ก ์ ๊ณตํ ์ ์๋ API๊ฐ ์ ๊ณต๋๋ฉด ์ข์ ๊ฒ์
๋๋ค. ์ ๊ทธ๊ฑฐ๋ ์ ๊ธ ํด์ ํ ํ์๋ ์ผ๋ถ ์ ๋๋ฉ์ด์
๊ณผ ๋ฐฐ์ง๋ฅผ ํ์ํ ์ ์์ด์ผ ํฉ๋๋ค.
- ๊ธฐ์กด ์ ๊ธํ๋ฉด API
@JensNordenbro ์ ์๊ฒฌ์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ด Vs Code์์๋ง ์๋ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
.NET 5 ์ ์ฅ์ ํธ์คํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐธ์กฐํ๋ WinUI 3.0 UI๋ก .NET 5 ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์์ฉ ํ๋ก๊ทธ๋จ ํ ํ๋ฆฟ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด .NET 5.0์ ์ค๋ณต ์ค์น๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
WinUI ๋ฐ์คํฌํฑ ์์ฉ ํ๋ก๊ทธ๋จ์์ muxc.Window.ThisPtr์์ hWnd๋ก, ๊ธฐ๋ณธ Win32 ์ฐฝ์ผ๋ก ์ด๋ป๊ฒ ์ด๋ํฉ๋๊น?
์ด ์์ด๋์ด๊ฐ ๋ง์์ ๋ค์ด์ ๋ฐ์คํฌํฑ์ฉ WinUI 3 Preview 1์ฉ ์ 2020๋ 5์ ํ ํ๋ฆฟ์ ์ฌ์ฉํด ๋ณด์์ต๋๋ค.
ํ์ง๋ง ํ ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. Windows์ ๊ธฐ๋ณธ UI ํ๋ซํผ์ด ๋๋ WinUI๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ก Windows 10์ ์ผ๋ถ๊ฐ ๋๋๋ก ํ๋ ํต์ ๋ถ์กฑ์ ๋๋์ต๋๊น?
๋ด ๊ฒฐ๊ณผ Hello World ์ฑ์ ํฌ๊ธฐ๋ ์ฝ 120MB์์ต๋๋ค. ๋ฌผ๋ก , ๊ณต๊ฐ์ ์ ๋ ดํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ ์์ ์ ๋ํ ์์กด์ฑ์ด ์์์ต๋๋ค. ์ด ์ค WinUI๋ ํฌํจ๋ .NET 5 ์์ฒด๋งํผ ๋ง์ ๊ณต๊ฐ์ ์๋นํ์ต๋๋ค. x64 ๋น๋์๋ง ํด๋น๋ฉ๋๋ค. ๋ค์ค ํ๋ซํผ ํจํค์ง์ x86์ ํฌํจํ๊ณ ๊ทธ ํฌ๊ธฐ๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฌ์ญ์์ค. ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ข ์์ฑ์ ์ถ๊ฐํ๋ฉด ๋ฐฐํฌ์ฉ์ผ๋ก ํจํค์งํ 300MB ์ฑ์ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
WinUI 3๊ฐ .NET 5์ Windows ๋ฒ์ ์ ํฌํจ๋์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? .NET Core ๋ชจ๋ํ ๋ ธ๋ ฅ์ ์ผ๋ถ์ ๋๊น? ๊ทธ๋ฌ๋ ๊ทธ๋ ์ง ์๋ค๋ฉด ์ด๋์ ํด๋นํฉ๋๊น? ์ ๋ง ๋ชจ๋ ์ฑ์ ํด๋๊ฐ ์๋ฐํ๊ฐ์? ๊ณต์ Windows 10 ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก...?
์๋๋ฉด ๋ฏธ๋์ Windows 10์ ์ผ๋ถ๊ฐ ๋ ๊น์? WinUI๊ฐ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฒ๋ผ ์ทจ๊ธ๋๊ณ .NET 5๊ฐ ๋์ค์ Windows์ ํจ๊ป ์ ๊ณต๋๊ธฐ ์์ํ๋ค๋ฉด ์ฐ๋ฆฌ๋ ๋์ ๋น๊ต์ ์์ ์ฑ์ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ ์ด๋ Windows 10X์ ๋ํ ์ด์ผ๊ธฐ์ด๊ณ ๋์ค์ Windows 10 non-X์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Windows 10 SDK C#/WinRT ๋ธ๋ฆฌ์ง DLL์ ์ ์ธํ๋ฉด ์ฑ ํฌ๊ธฐ๋ 1-5MB๋ก ๊ธ๊ฐํฉ๋๋ค.
@ryandemopoulos ๋ Discord์์ WinUI๊ฐ ํ๋ ์์ํฌ ํจํค์ง๋ก ์ ๊ณต๋ ๊ฒ์ด๋ฉฐ ๋ฐฐํฌ๋ฅผ ์ํด Store ๋๋ MSIX๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ๋ชจ๋ ๋์ผํ ๋ณต์ฌ๋ณธ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์์ฒด ๋ฒ์ ์ WinUI๋ฅผ ๋ณด์ ํ ํ์๊ฐ ์๋ค๊ณ ๋งํ์ต๋๋ค.
WinUI๋ฅผ Windows ์์ฒด์ ์ผ๋ถ๋ก ๋ง๋๋ ๊ฒ์ WinUI๊ฐ OS์์ ๋ถ๋ฆฌ๋๋ ์ง์ ์ ๋ฌดํจํํฉ๋๋ค.
"์ฑ์ ํฌ๊ธฐ๊ฐ ์๋ ์์ ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ"์ด ๊ด์ฌ์ฌ์ ๋๋ค. .NET 5๊ฐ ๋น์ทํ๊ฒ ๋ฐฐํฌ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@lmcdougald .NET Core Installer ์์ ๋ฌธ์ ๋ฅผ ์ด๊ณ ์๋น์ค๋ฅผ ์ํด .NET 5์์๋ Framework Packaging์ ์ฌ์ฉํ๋๋ก ์์ฒญํฉ๋๋ค.
@jonasnordlund WinRT ๋ฐํ์ ๋ฐฐํฌ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๋ ๋ค๋ฅธ ํ ๋ก #2500์ด ์์ต๋๋ค. ์๋ง๋ ๊ฑฐ๊ธฐ์์ ๋ต์ ์ฐพ์ ์ ์์ ๊ฒ์ ๋๋ค. :)
@marb2000 ์ด์๋ฅผ ์ด ์ค๋ฝ๋ค์ . ์ด๊ฒ์ด Windows 10X๋ฅผ ์ ๊ณตํ๋ ๋ชจ๋ ์ฑ์ ํ์์ ์ธ ๊ฒ์ผ๋ก ๋ณด์ด์ง ์์ต๋๊น?
๋ค์์ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ ์ปดํ์ผํ ๊ฒ์ ๋๋ค. ๊ทธ ์ค ์ผ๋ถ๋ ์ง์ WinUI๊ฐ ์๋์ง๋ง ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด UWP ํด๋ผ์ด์ธํธ, ํนํ LoB ์ฑ ํด๋ผ์ด์ธํธ๊ฐ ํฌํจ๋ ๋ชจ๋ .NET ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
x:Bind
์๋ ๋ฒ์ ๋๋ ์ค์ฒฉ ๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ Binding
๋ชจ๋ ๊ธฐ๋ฅ๋ ์์ด์ผ ํฉ๋๋ค(https://github.com/microsoft/microsoft-ui-xaml/issues/2237).ํธ์ง ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
WinUI ํ์ Uno ์ ํ ํ(๋น Microsoft), Xamarin Forms/MAUI ํ ๋ฐ React Native์ ๊ธด๋ฐํ ๊ด๊ณ๋ฅผ ์ ์งํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ค๊ณผ ์ ๊ทน์ ์ผ๋ก ํ๋ ฅํ๋ฉฐ ๊ทธ๋ค์ ์ฑ๊ณต์ ์ธ ๋ฏธ๋๋ฅผ ๊ธฐ์ํฉ๋๋ค.
๋๋ฝ๋ WPF ๊ธฐ๋ฅ์ ๋ํด ์์ ๊ธฐ๋ฅ์ ๋์ดํ ์ ์์ต๋๊น? WPF์ WinUI ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ฐ๋ฆฌ์ ๋ชฉํ ์ค ํ๋์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ๋ฆด๋ฆฌ์ค๊ฐ ํ์ํฉ๋๋ค.
๋ ๋ณต์กํ ํ ํ๋ฆฟ์ ์ ํฉํฉ๋๋ค. Window Template Studio ๋ ์ด๋ฌํ ์ฌ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
WPF #719 @weitzhandler @marb2000์ ๋นํด WinUI๊ฐ ๋ถ์กฑํ ๋ถ๋ถ์ ๋ชจ์๋ณด๋ ค๊ณ ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
๋ ๋ณต์กํ ํ ํ๋ฆฟ์ ์ ํฉํฉ๋๋ค. Window Template Studio๋ ์ด๋ฌํ ์ฌ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
@marb2000 ์ฐ๋ฆฌ VSIX์ Window Template Studio๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๊น? ์๋๋ฉด ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์ผ๊น์? ์์ผ๋ก ๋ชจ๋ WinUI3(๋ฐ Project Reunion) ํ ํ๋ฆฟ์ ์ ๊ณตํ๊ธฐ ์ํ ์๋จ์ผ๋ก Window Template Studio๋ฅผ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?
๋ ๋ณต์กํ ํ ํ๋ฆฟ์ ์ ํฉํฉ๋๋ค. Window Template Studio๋ ์ด๋ฌํ ์ฌ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
@marb2000 ์ฐ๋ฆฌ VSIX์ Window Template Studio๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๊น? ์๋๋ฉด ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์ผ๊น์? ์์ผ๋ก ๋ชจ๋ WinUI3(๋ฐ Project Reunion) ํ ํ๋ฆฟ์ ์ ๊ณตํ๊ธฐ ์ํ ์๋จ์ผ๋ก Window Template Studio๋ฅผ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?
๐ @crutkas @sibille
C++ ๋ฐ ์ต์ ๋๊ตฌ๋ก ๊ฐ๋ฅํ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ฐฐ์ฐ๊ธฐ ์ํด C++ Builder(VCL/FMX) ๋ฐ Qt Creator/Design studio์ ํจ๊ป ์๊ฐ์ ํ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด์์ ์ผ๋ก WinUI๋ C++๋ก ์์ฑ๋ ํฌ๋ก์ค ํ๋ซํผ GUI์ ๋ํด ์ค๋๋ ์ด๋ฏธ ์ด๋ฌํ ์ ํ๊ณผ ์ ์ฌํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ด๊ฐ ๊ด์ฌ์ ๊ฐ๋ ๊ฒ์ .NET ๊ฐ๋ฐ ๊ฒฝํ๊ณผ C++๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ ์ค ์ผ์ด์ค์ ๋ํด ์ ์ฌํ ๊ฒฝํ์ ๊ฐ๊ณ ์๋ค๋ ์ ์ ๋๋ค. ์ด๋ค ์ด์ ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
C++ Builder ๋ฐ QtCreator๋ ์ด๋ฌํ ๊ฒฝํ์ ๋ฌ์ฑํ๋ฉฐ .NET ๊ฐ๋ฐ์๊ฐ C++/WinRT ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋ฉฐ์น ์ ์๋นํด์ผ ํ๋ ์ํฉ์ ์ง๋ฉดํ์ ๋ ์ง๊ณผ ๊ฐ์ ํธ์ํจ์ ๋๋ ์ ์๋ค๋ฉด ํ์ํ ๊ฒ์ ๋๋ค.
์ .NET ๊ฐ๋ฐ์์ ๋ํด ์ด๊ฒ์ ๋ง๋ค๊น์? C++ XAML ๊ฒฝํ์ ์ข์ง ์์ต๋๋ค. C++ ๊ฐ๋ฐ์๋ .NET ๊ฐ๋ฐ์๋ ์๊ด์์ต๋๋ค.
๋ฐ์คํฌํฑ, ์น(Edge), ๋ชจ๋ฐ์ผ ๋ฐ IoT์์ ๋์ผํ XAML์ ์คํํ ์ ์๋ ๊ธธ์ ์ด๋ฉด ์ข์ ๊ฑฐ๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
C#, Xaml ๋๋ ๋์์ด๋๊ฐ ์๋ C++ ํ๋ก์ ํธ์์ ์ธ์ WinUI 3๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ํ WinUI 3์ C++ ์ฝ์ด ์คํ ์์ฑ ๋ ์ง์ ๋ํ ์์์ด ์์ต๋๊น?
ํธ์ง: ์ฒซ ๋ฒ์งธ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์ป์ ๊ฒ ๊ฐ์ต๋๋ค. WinUI 3.0 Preview 1์ C++ WinUI 3 ํ๋ก์ ํธ ํ ํ๋ฆฟ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
.vsix ํ์ฅ์ ์ค์นํ ํ "WinUI"๋ฅผ ๊ฒ์ํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ C# ๋๋ C++ ํ ํ๋ฆฟ ์ค ํ๋๋ฅผ ์ ํํ์ฌ ์ WinUI 3.0 ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
WinUI๊ฐ ๊ฐ์ ๋์์ผ๋ฉด ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์ข ์ข PowerShell๋ก ์์ฑ๋๋ ์ผ์ IT ์ง์ ์ง์์ ์ํ ์์ GUI ๊ธฐ๋ฐ ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. Visual Studio Code์์ ์ด๋ฌํ ์ข ๋ฅ์ ๋๊ตฌ๋ฅผ ๋ง๋ค ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. C# ๊ธฐ๋ฐ VSCode ๊ฐ๋ฐ ์ต์ ๋ ํ๋ฅญํ ๋จ๊ณ๊ฐ ๋ ๊ฒ์ ๋๋ค. ์์ ํ Visual Studio๋ ์ด ๊ฒฝ์ฐ์ ๋ค์ ๋ฌด๊ฒ๊ณ ๋ณต์กํ๊ฒ ๋๊ปด์ง๋๋ค.
ํ์ฌ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ๋์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ค๋ฅธ "XAML์ฉ Visual Studio ์ฌ์ฉ" ํจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ด ์ง๋ฌธ์ ๊ทธ๊ฐ 5์์ ์ง๋ฌธํ @mqudsi ์ง๋ฌธ์ ๋งฅ๋ฝ์ ์์ง๋ง ์๋ฌด๋ ์๋ตํ์ง ์์์ต๋๋ค.
In a WinUI desktop application, how does one go from muxc.Window.ThisPtr to an hWnd to the native Win32 window?
์ด๊ฒ์ ๋ฐ์คํฌํฑ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ฏ๋ก ICoreWindowInterop์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ new HandleRef(this, ThisPtr)
์ ๊ฐ์ ๋ฌด์์ ์ฅ์์ ์๋ํ์ต๋๋ค. ์ฌ๊ธฐ์ 'this'๋ ์ ํ Microsoft.UI.Xaml.Window์ด์ง๋ง ์๋ชป๋ ์ฐฝ ํธ๋ค์ ๋ํ ์ค๋ฅ ๋ฒํธ๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค. ๋ง์นจ๋ด ๊ทธ hwnd๋ฅผ ์ป์ผ๋ฉด ๋ ๋ง์ COM์ ์ฌ์ฉํ์ฌ ์ฐฝ ์คํ์ผ์ ๋ณ๊ฒฝํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ์ฌ ๋ด๊ฐ ์ง๊ธ ๊ฒช๊ณ ์๋ ๊ณ ํต์ ๋๋ผ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
๊ด์ฌ ์๋ ์ฌ๋์ ์ํด ๊ธฐ๋ณธ ์ฐฝ์ ๋ํ hWnd๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๋น ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๊ฒฝ๊ณ์ ์ด ์๋๋ก ๋ง๋ค ์ ์์ต๋๋ค. WindowStyle=None์ ํด๋นํ๋ WPF์ ๋ํ ์์ ํ ์๋ฃจ์ ์ด ์ฌ๊ธฐ ์์ต๋๋ค .
using var process = Process.GetCurrentProcess();
var hWnd = process.MainWindowHandle;
ํ์ฌ๋ก์๋ WinUI๊ฐ ๋ฐ์คํฌํ ํ๋ก์ธ์ค์ ์์ ๋ hWnd๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ/๋ฌธ์ํํ๊ธฐ๊ฐ ์ฝ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋์ ์ ๊ฐ ์ฌ์ฉํ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋์ ๋๋ ธ์ต๋๋ค. ์ถฉ๋ถํ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
UWP์ ์ ๋๋ฒ์ค Windows๋ผ๋ ์ฉ์ด๋ ์์ด์ ธ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ์ฉ์ด์๋ ๊ฐ๋ฐ์๊ฐ ๋ถ๋๋ฌ์ํ๊ฒ ๋ง๋๋ ๋ถํํ ์ํ๋ฌผ์ด ์์ต๋๋ค.
ํ ํ๋ฆฟ WinUI(์ ๋๋ฒ์ค Windows)๋ฅผ WinUI(Win64)๋ก ๋์ฒดํ ์ ์์๊น์? ๊ทธ๋ฐ ๋ค์ ๋ฐ์คํฌํ ๋๋ ์คํ ์ด ์ต์ ์ด ์์ต๋๊น?
Win64๋ ํผ๋์ค๋ฝ์ต๋๋ค. ์ฆ, Win32 API๋ 32๋นํธ๋ง ์ง์ํ๊ณ ๋ฐ๋๋ก UWP๋ 64๋นํธ๋ง ์ง์ํ๋ฉฐ ๋ ๋ค ๊ฑฐ์ง์ ๋๋ค.
Win32 ์ด๋ฆ ์์ฒด๋ ์ด๋ฏธ ๋ง์ ์ด๋ณด์๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ์ ํ์ํค๋ ๋ฐ Win64๊ฐ ํ์ํ์ง ์์ต๋๋ค.
@VagueGit ๋ด๊ฐ ๋ฐฐ์ด ๊ฒ์ ์ฌ๋ฐ๋ฅธ ์ด๋ฆ์ ์ ํํ๊ณ ์ด์ผ๊ธฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ ๋ณต์กํ ์ผ ์ค ํ๋๋ผ๋ ๊ฒ์ ๋๋ค. ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ๋ณด๋ค ์ฐ๋ฆฌ(Microsoft)๊ฐ ๊ทํ์ ์ฑ๊ณต์ ๋๊ธฐ ์ํด ์ฌ๋ฐ๋ฅธ ์ ํ(๋ฐ ์คํ ๋ฆฌ)์ ์ ๊ณตํด์ผ ํฉ๋๋ค. UWP๋ Win32๋ก ์ ์๋ ค์ง ์ฉ์ด์ด๋ฏ๋ก ๊ณ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค(๋งค์ฐ ๋จ์ํ๋จ).
WinUI๋ ์๋ก ๋ค๋ฅธ ์ฅ์น๋ฅผ ๋์์ผ๋ก ํ๋ ๋ ๊ฐ์ง "์ ํ"์ ์ฑ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฑ์ ์ ๋ ฅ๊ณผ ํผ ํฉํฐ๊ฐ ๋ง์ ๋ง์ ๊ธฐ๊ธฐ๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ UWP๋ฅผ ์ฌ์ฉํฉ๋๋ค. UWP๋ ์ด๋ฅผ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. ๋ฐ๋ผ์ ํจํค์ง ๋ชจ๋ธ, ์ ์ฅ์, ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ธ, ๋ณด์ ์ปจํ ์ด๋ ๋ฑ๊ณผ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
- ์ฑ์ ๋ฐ์คํฌํฑ๋ง ๋์์ผ๋ก ํ๋ฉฐ OS์ ๋ํ ์ ์ฒด ์ก์ธ์ค ๊ถํ์ด ํ์ํฉ๋๋ค. Win32 ๋๋ Desktop(Visual Studio์์ WPF, WinForms, MFC, ์ฑ์ ํธ์ถํ๋ ๋ฐฉ์)์ ์ฌ์ฉํฉ๋๋ค.
UWP ์ฑ ์ WinUI ๋ฐ
@marb2000 ๋ค์ด๋ฐ์ด ์ด๋ ต
WinUI๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ UWP ์ฑ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ Win32 API๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ์คํฌํ๋ง ๋์์ผ๋ก ํ๋ฉฐ ์คํ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ด๋ป๊ฒ ์ด์ธ๋ฆฌ๋์?
@marb2000 ๋ค์ด๋ฐ์ด ์ด๋ ต
WinUI๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ UWP ์ฑ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ Win32 API๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ์คํฌํ๋ง ๋์์ผ๋ก ํ๋ฉฐ ์คํ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ด๋ป๊ฒ ์ด์ธ๋ฆฌ๋์?
์ ํํ ๋๊ตฌ๋ฅผ ์ํ ์ฑ์ธ๊ฐ์?
์ผ๋ถ๋ฌ UWP ์ฑ์ ์ฌ์ฉํ๋ ์๋น์๋ก์ ์ฑ์ด ์คํ ์ด์ ์์ผ๋ฉด ์ฑ์ ๋ณด๋ ๊ฒ์ ๊ณ ์ฌํ๊ณ ๋ง์ง์ง๋ ์์ ๊ฒ์ ๋๋ค.
๊ฑฑ์ ํ์ง ๋ง์ธ์ @shaheedmalik ์ฐ๋ฆฌ๋ ๋น์ ์๊ฒ ๊ทธ๊ฒ์ ๋ง์ง๋ผ๊ณ ์๊ตฌํ์ง ์์ ๊ฒ์ ๋๋ค :-). ์ฐ๋ฆฌ๋ ๋น์ฆ๋์ค ์ฑ์ ์์ฑํฉ๋๋ค. Win32 ๋ฐ UWP. ๋ช ๋ ๋์ ์คํ ์ด์ ์์์ง๋ง ์คํ ์ด์๋ ๋ณด์ด์ง ์๋ UWP ์ฑ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ 30๋ ์ ์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ ํ๊ณ ํ ๋น์ฆ๋์ค ๊ณ ๊ฐ ๊ธฐ๋ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ UWP ์ฑ์ ๋ง์กฑํ์ง๋ง ๋งค์ฅ ๊ฒฝํ์ ๋ง์กฑํ์ง ์์ ์ฐ๋ฆฌ๋ ์ด ์ฑ์ ๋งค์ฅ ๋ฐ์ผ๋ก ์ฎ๊น๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ Win64 ๋น์ฆ๋์ค ์ฑ์ ๋ํ ์์ฅ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ๋น์ฆ๋์ค ๊ณ ๊ฐ์ด ๋น์ฉ์ ์ง๋ถํ Win64 ์ฑ์ ์ ๊ณตํ ์์์ ๋น์ฆ๋์ค ๊ฐ๋ฐ์ ์ค ํ๋๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ ๋๋ฒ์ค Windows/๋ค์ค ํ๋ซํผ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ๋ ์ด ์ค๋ ๋์ ๋ช ๋ช ์ ๊ฐ๋ฐ์๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋งค์ฐ ๋๋ญ ๋๋ค. ๋ด ๊ฒฝํ์ ๋น์ถ์ด ๋ณผ ๋ ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ๊ฐ๋ฐ์๋ ํน์ ํผ ํฉํฐ๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
UWP์ ๋ง๋ํ ํฌ์๋ฅผ ํ๊ณ UWP์ ๋น์ฆ๋์ค ์ฑ๊ณต์ ๋ฌ์ฑํ ๊ฐ๋ฐ ํ์ฌ์ ๊ด์ ์์ ๋งํ์๋ฉด WinUI(๋ฐ์คํฌํฑ) ๋ฐ WinUI(์คํ ์ด)์ฉ ํ ํ๋ฆฟ์ด ์๋๊น์? UWP๊ฐ ๊ฐ๋ฐ ํ๋ซํผ์ผ๋ก ์ผ๋ง๋ ์ด์ ํ๊ฒ ์ฌ๊ฒจ์ง๋์ง์ ๋ํ ์์ด๋์ด๋ฅผ ์ป์ผ๋ ค๋ฉด ๊ธฐ์ ๋ฏธ๋์ด๋ฅผ ํ๋ก์ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
@VagueGit
"WinUI๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ UWP ์ฑ์ด ์์ต๋๋ค. Win32 API๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ์คํฌํฑ๋ง ๋์์ผ๋ก ํ๊ณ ์คํ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ด๋ป๊ฒ ์ ํฉํฉ๋๊น?"
UWP๋ฅผ WinUI 3์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์คํ ์ด ์ธ๋ถ์ ๋ฐฐํฌํ์๊ฒ ์ต๋๊น? ์์งํ ์ง๋ฌธ: MSIX์ ์ฌ์ด๋๋ก๋ ๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? ์คํ ์ด ์ธ์ UWP ์ฌ์ฉ์ ์ค๋จํ๋ ์ด์ ๊ฐ ์์ต๋๊น?
@VagueGit
"๊ทธ๋์ ์ฐ๋ฆฌ๋ Win64 ๋น์ฆ๋์ค ์ฑ์ ์ํ ์์ฅ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค."
ํ ๊ฐ์ง ์ง๋ฌธ, Win64๋ ๋ง์ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฑ์ x64์ฉ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ๋น์ ์๊ฒ Win64๋ ์ด๋ค ์๋ฏธ์ธ๊ฐ์?
@marb2000 UWP๋ ๋น์ฆ๋์ค ๋ณด๊ณ ์ ๋ํ ์ง์์ด ์ข์ง ์์ต๋๋ค. ๋ธ๋๋ ๋ณ๊ฒฝ์ด ๋ณด๊ณ ์ ์์ฑ์์ ๊ฐ์ ํ์ฌ ๋๊ตฌ ๊ฐ๋ฐ์ ์์ํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ด๋ ๋ก๋ฉ์ โโ๊ฐ์ง๊ณ ๋์์ง๋ง ์ฌ์ด๋ ๋ก๋ฉ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ง ์์๊ธฐ ๋๋ฌธ์ 20H1๊น์ง๋ ์คํ ๊ฐ๋ฅํ์ง ์์์ต๋๋ค.
์ฐ๋ฆฌ๋ Win64๊ฐ Windows์์ ์์ผ๋ก ๋์๊ฐ ๊ธธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Micro$๋ ๊ณผ๊ฑฐ์ Win32๋ฅผ ๋ ๊ฑฐ์๋ก ๋ด์ธ์ฐ๋ ค ์๋ํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ์ผ๋ฉฐ ํ์ฌ๋ ๊ทธ ์๋ฆฌ๋ฅผ ๋์ฐพ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ถ๊ทน์ ์ผ๋ก Win32๋ ์ฐ๋ฆฌ์ ํ๋จ์ ๋ฐ๋ผ ์ฌ๋ผ์ ธ์ผ ํฉ๋๋ค(์ ๋ Win32 ๊ฐ๋ฐ 30๋ ํ์ ๋งํฉ๋๋ค). ์ฐ๋ฆฌ๋ ๊ธฐ์ ์ด ๊ตฌ๋งคํ ๋น์ฆ๋์ค ์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด UWP์ ํ๊ณ๋ฅผ ๋๋ถ๋ถ ๊ทน๋ณตํ์ต๋๋ค. ์ฐ๋ฆฌ๋ UWP์ ๋ ๋ค๋ฅธ ๋ฐ๋ณต์ด ๋ธ๋๋ ๋ณ๊ฒฝ ์์ด ์ ํ์ ์ธ ๊ด์ฌ์ ๋ฐ๊ฒ ๋ ๊ฒ์ ์ฐ๋ คํฉ๋๋ค.
@marb2000 ์ ํผ๋์์ ์ ์ ์๋ฏ์ด Win64๋ผ๋ ์ฉ์ด๋ ์ด๋ฏธ (์๋ชป) ์ฌ์ฉ๋์์ต๋๋ค. ์ ๋ ์์ ์ง์ ํ ๋ฐ ์์ต๋๋ค.
๋ธ๋๋ ๋ณ๊ฒฝ์ด ํ์ํ ์ ์๋ค๋ ๋ฐ ๋์ํ์ง๋ง Win64๋ ์ด๋ฅผ ์ํํ๋ ๋์ฐํ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ณต์์ ์ธ ๊ฒ์ด ์์ ๋๊น์ง๋ UWP๋ผ๋ ์ฉ์ด๋ฅผ ๋ชจ๋ ์ฌ๋์ด ์ดํดํ ์ ์๋๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
@sylveon UWP๋ ๋ชจ๋๊ฐ ์คํจ๋ก ์ดํดํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ข์ํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ทธ๊ฒ์ ์ข์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ๋ฆฌ๋ธ๋๋ฉ์ด ์ค์ํฉ๋๋ค. ํ๋ก์ ํธ ํ ํ๋ฆฟ์ผ๋ก WinUI(Deskop) ๋๋ WinUI(Store)์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
WinUI(์คํ ์ด)๋ ์คํ ์ด์์ Win32 ์ฑ์ ๋ฐฐ์กํ๊ฑฐ๋ ์คํ ์ด ์ธ๋ถ์์ UWP ์ฑ์ ๋ฐฐ์กํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ข์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ WinUI(๋ฐ์คํฌํฑ)๋ ์ข์ต๋๋ค.
@sylveon WinUI(Store)๋ ์์ ์ ๋์์ผ๋ก ํ๋ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ๋ฐฐ์ ํ์ง ์์ต๋๋ค. ์ด๋ ์์ ์ ํตํด ๋ฆด๋ฆฌ์คํ ์ ์๋ ๊ธฐ๋ฅ ์ธํธ๋ก ์์ํ๊ธฐ๋ฅผ ์ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
์ด๋ณด์๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํ ์ ๋๋ก ๋์๋ค.
์ด๊ฒ์ ์ด ์ค๋ ๋์ ํน์ ์ฌ๋์ ๋์์ผ๋ก ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฐ์คํฌํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์/ํ์ฌ ์์ ์๋ก์ ์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ๋๋ค.
๋๋ ๋ฌด์ธ๊ฐ์ ์ด๋ฆ์ ์ฌ๋ก์กํ ๋ณธ ์ ์ด ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ด๋ค ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๊ณ ์ผ๋ง๋ ์ ์ง์๋๋์ง์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์์ MAUI์ ๊ฐ์ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํฅ๋ถํ์ง๋ง ์ฌ์ ํ ๋์ผํ ์ฝ๋ ๊ธฐ๋ฐ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋๋ฉด ์ฆ์ ์ค๋งํ๋ ๋ง์ ๊ฐ๋ฐ์(์ ํฌํจ)๊ฐ ์๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ๋ฆฌ๋ธ๋๋ฉ์ "์ด๋ด, ์ฐ๋ฆฌ๋ xyz์์ ๋น์ ์ ์ฐจ๋จํ ๊ฒ๊ณผ๋ ์์ ํ ๋ค๋ฅธ ์ฝ๋ ๊ธฐ๋ฐ์์ ์์ํ๋ ์ด ์๋ก์ด ๊ฒ์ ๋ง๋ค๊ณ ์๋ค"๊ณ ์ ์ํฉ๋๋ค. ๋ด๊ฐ ๋ณด๊ธฐ๋ฅผ ์ข์ํ๋ ๊ฒ์ ๋์ ๋ค๋ฅธ ์ฌ๋์ด ๊ฒช์๋ ์ด๋ ค์์ ์์ํ๋ ๋ณ๊ฒฝ๋ ๊ธฐ๋ฅ์ ๊ฑฐ๋ํ ๋ชฉ๋ก์ ๋๋ค.
ํ๋ซํผ์ ๋ชจ๋ ์ ํ์ด๋ ๋ธ๋๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฐ์ ํฉ๋๋ค. ์๋์ผ๋ก LTS๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์ ์์ญ ๋ ๋์ ์ฌ์ฉ๋ ๋ธ๋๋์ ์ด๋ฆ์์ ํธ์ํจ์ ์ฐพ์ต๋๋ค. ์ด๋ฆ ๋ณ๊ฒฝ์ด ๋๋๋ก ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ฐ๋ฐ์์๊ฒ ํฌ๊ธฐ๋ฅผ ์๊ธฐ์ํค๊ธฐ๋ ํฉ๋๋ค(Silverlight). ๋ช ๋ ๋์ ๋ฌธ์ ์ ์๋ฌ๋ ธ์ง๋ง ๊ฒฐ๊ตญ ์ฌ๋๋ฐ๊ณ ์กด๊ฒฝ๋ฐ๋ ๋ธ๋๋๊ฐ ๋ ์๋์ฐจ ๋ชจ๋ธ์ด ๋ง์ด ์์ต๋๋ค. ๋ฌด์์ ๊ธฐ๋ํด์ผ ํ๋์ง ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ฒฝํ์ด ๋ง์์ ๋ค์ง ์๋๋ผ๋ ์น์ํจ๊ณผ ๊ด๋ จํ์ฌ ํ ๋ง์ด ๋ง์ต๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ํ ์ ๋ง ์ค์ํฉ๋๋ค.
์ ์ด๋ ๋ ๋ช ์ ์ฒญ์ค์ ๊ณ ๋ คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ์ ๋ฐ ์ต์ข ์ ํ ์ฌ์ฉ์. ๊ฐ๋ฐ์/๋น์ฆ๋์ค ์์ ์๋ก์, ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ์ํ ๊ณ ๊ฐ์ด ์๊ณ ๊ณ ๊ฐ์ด ๊ธฐ๋ณธ ๊ธฐ์ ์ด๋ฆ์ผ๋ก ์ธํด ํผํด๋ฅผ ์ ์๋ค๋ฉด ํด๋น ์ด๋ฆ์ผ๋ก ํ์๋ ์ ํ์ด ์ฑ์ํด์ก์ผ๋ฉฐ ํด๋น ์ ํ์์ ๊ณ ๊ฐ์ด ์ฐ๋ คํ๋ ์ฌํญ์ ๋ํด ํ์ ์ ์ฌ์ด์ฃผ๋ ๊ฒ์ด ์ ์ผ์ ๋๋ค. ๊ณผ๊ฑฐ๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค. ๋ฐ๋ฉด์ ๋ด๊ฐ "WinUI ๋๋ MAUI๋ผ๋ ์๋ก์ด ๋ฉ์ง ๊ธฐ๋ฅ์ด ์์ต๋๋ค."๋ผ๊ณ ๋งํ๊ณ ๊ทธ๋ค์ ์ด๋ฏธ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ WPF ๋๋ UWP ๋๋ Xamarin ์ ํ์ ์์ ํ๊ณ ์๋ค๊ณ ๋งํ๋ฉด ์์ํ ์ ์๋ ๋ฐ์์ "์ค ์ข์, ์ด์ ์ฐ๋ฆฌ ์ฑ 2,3 ๋๋ 4๊ฐ์ ๋ค๋ฅธ ๊ธฐ์ ๋ก ์์ฑ๋์์ต๋๋ค." ์ฌ๊ธฐ์์ ๋ด๊ฐ ๊ทธ๋ค์ ํ๋งคํด์ผํฉ๋๋ค. ๊ณ ๊ฐ๋๋ค์ด ๋ค ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ ๊ทธ๋๋ก ๋์๋ ๋ฐ๊พธ์๋ ํธ์๋ฐฑ์ ๋ฐ๊ฒ ์ต๋๋ค.
๊ฒฐ๊ตญ (์ ์๊ฒ) ์ค์ํ ๊ฒ์ LTS๊ฐ ์๋ ๋งค๋ ฅ์ ์ด๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐ ํ์ํ ๋๊ตฌ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ ํ์ด ๋ง๊ฐ ๊ธฐํ์ ๋๋ฌํ๋ ๊ฒ์ ๋ณด๊ณ ํฅ๋ถํ๊ณ ์ ํ์ด ์ถ์๋๋ฉด ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ฌธ์ ํด๊ฒฐ ๋ชฉ๋ก์ ์ฝ๊ฒ ๋ฉ๋๋ค. 2016๋ ๋ถํฐ NetCore/Net5(์ด๋ฆ ๋ณ๊ฒฝ LOL)์ ๋ํด ์ด ์ ์ด ๋ง์์ ๋ค์์ต๋๋ค. (BTW, ๊ณ ๊ฐ์๊ฒ NetCore๋ก ์ ํํ๋๋ก ์ค๋ํ ํ 1๋ ๋์ .Net5๊ฐ ์ฐ๋ฆฌ๊ฐ ๋ชฉํ๋ก ์ผ์ ๊ณํ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ๋ ์ฝ์ง ์์ต๋๋ค!)
์ง๊ธ์ XAML ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํฑ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ UWP/WinUI๊ฐ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ ๋๋ง ์ฑ๋ฅ(UWP ์๋๋ฐ์ค ์์ด)์ ์ป์ ์ ์๋ ์์ ์ผ๋ก ๋นจ๋ฆฌ ๊ฐ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฐ ์ด์ ๋ก ๊ทธ๋ฆฌ๊ณ 9์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ ๋จ์ด์ก๊ธฐ ๋๋ฌธ์ ๋๋ ์๋ฐ๋ก๋์๋ฅผ ์ํ ์ด์ ํ๊ธฐ ์์ํ๋ ค๊ณ ํฉ๋๋ค. SkiaSharp๋ฅผ ํตํ ๋ ๋๋ง ์ฑ๋ฅ์ ๋ํด ๋ค์ผ๋ฉด์ WPF ์ ์ฌ์ ์ ์ข์ํฉ๋๋ค.
UI ๊ฐ๋ฐ ์ต์ ์ด ์์ ํ๋๋ฉด ๋ช ๋ ์์ ํฅ๋ฏธ์ง์งํด์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ์ํ๋ ๋๋ก ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ฅ ๋ถ์กฑ์ ๋ํ ์ ์๊ฐ์ ๋ฐ๋์ง ์์ ๊ฒ์ ๋๋ค.
๋๋ ๋น์ ๋ชจ๋์๊ฒ ๊ฐ์ฌํฉ๋๋ค.
๋๋ jtbrower๊ฐ ๊ทธ์ ์ด๋ฉ์ผ์์ ๋งํ ๊ฒ์ ์ป์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ฐ์ ๊ทธ์ ํ์ฌ๋ xaml ๊ฒฝ๋ก๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํ ๋ช ์ ๋๋ ํ์ฌ ์ค ํ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ์ ํ์ ํ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ xaml์ Micro$์๊ฒ ์ฌ์์ด์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ์๋์ ์ผ๋ก WinForms์ ๋จธ๋ฌผ๋ ๊ฑฐ๋ ์์ ํ ์น ๊ฐ๋ฐ์ ๋ฐ์ด๋ค์์ต๋๋ค. UWP ์ดํ ๊ฐ๋ฐ์์ ์ดํ์ด ์ ํ๋์์ต๋๋ค.
xaml ๊ธฐ์ ์ด ์ง์ ๊ฐ๋ฅํ๋ ค๋ฉด Micro$๊ฐ ์จ๋ณด๋ฉ์ ์คํจํ ์๋ฐฑ๋ง ๋ช ์ ๊ฐ๋ฐ์๋ฅผ ํ๋ณดํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ๋ฐ์, ๋๊ตฌ ๊ณต๊ธ์ ์ฒด ๋ฐ ๊ธฐ์ ๋ฏธ๋์ด์๊ฒ UWP๋ ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์ ๋๋ค. UWP์ ๋ ๋ค๋ฅธ ๋ฐ๋ณต์ ๊ทธ๋ค์ ์ด๊ธธ ์ ์์ต๋๋ค.
@VagueGit ํ์ง๋ง ๊ฐ๋ฐ์๋ค์ ์ด๋ฆ์ด ๋ฐ๋ ์ ํ์ ๋์ผํ๊ฒ ์๊ณ ์ถ์ดํ ๋งํผ ์ด์ฌ์ ๋๋ค. ๊ทธ๋ค์ MAUI๋ฅผ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ Xamarin Forms๋ก ์๊ณ ์์ต๋๋ค. ์ฌ์ค ๊ทธ๋ค์ MAUI๊ฐ ๋์ฉ๋ ์ด๋ฆ์ด์๋ค๊ณ ๊น์ง ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฆ ๋ณ๊ฒฝ์ผ๋ก ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ์์๊ฒ ๋๊ธฐ๋ฅผ ์ค ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํ์ง ์์ต๋๊น? UWP๊ฐ ์ฌ๋ฌ Windows๋ฅผ ํ์ฉํ๊ฑฐ๋ ์์ ํ ์ ๋ขฐ๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ง ์์ต๋๊น? ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ํํ๋ค๋ฉด ๋ชจ๋ UWP๋ฅผ ๋์์ผ๋ก ํ๊ณ ์คํ ์ด ์ฑ์ฉ ์๋๋ฐ์ค๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ๋๋ ์ ๋ง๋ก ๋๋ฅผ ํฅ๋ถํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ฌด์์ธ์ง ํฐ ์๋ฆฌ๋ก ๊ฟ๊พธ๊ณ ์์ต๋๋ค! ํน์ง!!
jtbrower๋์ ๋ง์์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ๋ํ ์ ๋ฅผ ๋์์ฃผ์ ์ ๊ฐ์ฌํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ทธ๋ค์ ์์ด๋์ด๋ฅผ ๋นํํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋ฌ๋ ์คํ ์ด์ ๋ฐ์คํฌํฑ์ด๋ผ๋ ๋ ๊ฐ์ง ๋ค๋ฅธ UWP๊ฐ ์์์ ๊ฐ๋ฐ์ ๋ฐ ๋๊ตฌ ๊ณต๊ธ์ ์ฒด์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
๋ฐ๋ผ์ UWP ๊ฒฝ๋ก๋ฅผ ๊ณ์ ๋ฐ๋ผ๊ฐ๋ ค๋ ์ฌ๋๋ค์ UWP Store ํ ํ๋ฆฟ์ผ๋ก ์์ํ ์ ์์ง๋ง ์๋๋ฐ์ค ๋ฐ ์์ ํ ์ ๋ขฐ๊ฐ ์๋ 64๋นํธ ๋ฐ์คํฌํฑ์ ์ํ๋ ์ฌ๋๋ค์ ... ๊ธ์ UWP๊ฐ ์๋๊ฐ์?
UWP๋ ์์ฅ์์ ์ฅ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. Micro$ ์์ฒด๊ฐ UWP์์ ์์ฒด ์ฑ ๋น๋์์ ๋ฌผ๋ฌ๋ฌ์ ๋ ์ฐ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ UWP๋ฅผ ํฌ๊ธฐํ์ต๋๋ค.
๊ฐ๋ฐ ์์ฅ์ UWP์ ๊ฐ๋ฐ์ ์ฃผ์ํ์ง ์์ต๋๋ค. ์๋๋ฐ์ค ๋ฐ ์์ ํ ์ ๋ขฐ๊ฐ ์๋ 64๋นํธ ๋ฐ์คํฌํ์ ์ด๋ฆ ๋ณ๊ฒฝ ๊ทธ ์ด์์ ๋๋ค. ๊ทธ๊ฒ์ ๋ค๋ฅธ ํจ๋ฌ๋ค์์ด๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ UWP๋ผ๊ณ ํ๋ฉด UWP๋ฅผ ์ญ์ ํ ์ฌ๋๋ค์ด ๋์น์ฑ์ง ๋ชปํ ๊ฒ์ ๋๋ค.
@VagueGit UWP๋ก ์ฑ๊ณต
UWP์ ์ด๋ฆ์ด ์ข์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ฒ์ ์์ง์ "UWP is"๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ ๋ ฅํ๋ฉด Bing์ด๋ Google์ด ์ ๊ณตํ๋ ์ฒซ ๋ฒ์งธ ์๋ ์ ์์ "UWP is dead"์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ @marb2000 ์ด ๋ง๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ผ๋ ๋ง๊ณผ ํจ๊ป...
์ค๋๋ ๋ฐ์คํฌํฑ ํ๋ก์ ํธ์ ์ฌ๋ฌ ์ธก๋ฉด์์ "UWP"๋ก ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ ๋ค๋ฅธ ๋ถ๋ถ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
CoreApplication์ด ํด์ ๋๋ฉด UWP์ ๋ฐ์คํฌํฑ์ ์ ์ผํ ์ฐจ์ด์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ ํํ๋ ์๋๋ฐ์ค ๋ชจ๋ธ๊ณผ ๋์์ผ๋ก ์ง์ ํ ์ ์๋ ์ฅ์น๋ฟ์ ๋๋ค.
์ฐ๋ฆฌ๋ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์์ ํ๊ณ ์ด๋ฅผ ๋ณด๋ค ์ ํํ๊ฒ ์ค๋ช ํ๋ ๋ง๋ฒ์ฌ์ ๊ฐ์ ๊ฒฝํ์ ๊ฐ๋ ๊ฒ์ ๋ํด ๋ ผ์ํ์ต๋๋ค.
@JeanRoca ๋ ์ด ์์ ์ ์ฃผ๋ํ๋ PM์ด๋ฉฐ ๊ณต์ ํ ์ ์๋ ์ถ๊ฐ ์ ๋ณด๊ฐ ์์ ์ ์์ต๋๋ค.
๋๋ WinUI ๋ฐ์คํฌํ ํ ํ๋ฆฟ์ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค. Win32๋ณด๋ค ์ ์ ํ๊ณ ๋ฏธ๋ ์งํฅ์ ์ ๋๋ค. Win32๊ฐ 32๋นํธ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ํ ๋ฐ๋ฉด ์์ํ๋ ํ ํ๋ฆฟ์ ๋๋ค. WinUI Desktop์ ๋ฏธ๋์ด์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ์ฃผ๋ชฉ์ ๋ฐ์ ๊ฒ์ ๋๋ค.
UWP ์ฑ์ด ์คํ ์ด ์ธ๋ถ์์ ์ถ์๋๋ฉด ํจํค์ง๋ .appinstaller์ ๋๋ค. ํด๋น ์ฑ์ Win UI Desktop์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ์ค์น ํ๋ก๊ทธ๋จ ํจํค์ง๊ฐ appinstaller์์ msix๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ฑ ํจํค์ง ๋ด์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋์ผํ๊ฒ ์ ์งํ๊ณ ๋ฒ์ ์ ์ ์ ํ๊ฒ ๋ฒํํ๋ค๊ณ ๊ฐ์ ํ๋ฉด Windows๋ ์ด๊ฒ์ด ๋์ผํ ์ฑ์ ์ ๋ฒ์ ์์ ์ธ์ํ๊ณ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํฉ๋๊น, ์๋๋ฉด ๋ค๋ฅธ ์ฑ์ผ๋ก ์ค์นํ ๊ฒ์ ๋๊น?
๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด WinUI 3.0์ .NET Framework <= 4.8์์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ WinUI์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ .NET ๋ค์ดํฐ๋ธ ๋๋ .NET 3.1/5+(๋๋ ๋ค๋ฅธ ๋ฐ์ธ๋ฉ ์งํฉ)์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
.NET 5(๋๋ ์ด ์์ ์์ 6์ผ๋ก ์ถ์ธก๋จ)์ฉ ํ๋ ์์ํฌ ํจํค์ง์ ๋ํด ์ถ๊ฐ๋ก ์งํ/์์ฒญํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ ์ฌํญ์ด ์์ต๋๊น? ๋ฌธ์ ๋ฅผ ์ด์๋๋ฐ ์๋ต์ด ์์ต๋๋ค. .NET 5 ์ธ์ฑ ๋ฒ๋ค๋ง์ ์์์ด ์๋๋๋ค.
@stevenbrix
CoreApplication์ด ํด์ ๋๋ฉด UWP์ ๋ฐ์คํฌํฑ์ ์ ์ผํ ์ฐจ์ด์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ ํํ๋ ์๋๋ฐ์ค ๋ชจ๋ธ๊ณผ ๋์์ผ๋ก ์ง์ ํ ์ ์๋ ์ฅ์น๋ฟ์ ๋๋ค.
๋ถํํ๋ ๋ ๋ค๋ฅธ ํฐ ์ฐจ์ด์ ์ .NET ๊ฐ๋ฐ์๊ฐ DirectX์ ๊ฐ์ API์ ๋ํด C++๋ก ์ ํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ํ์ ํ์ COM ๊ธฐ๋ฐ์์๋ ๋ถ๊ตฌํ๊ณ UWP์ ํธํ๋๋๋ก ํ๋ ๊ฒ์ ๋ถ๋ช ํ ๊ฑฐ๋ถํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณผ์ ์์ ๊ฒฝํ๊ณผ ๊ฐ์ ๋ฉ์ง ๋ฉ๋ชจ์ฅ์ผ๋ก MIDL์ ์๋์ผ๋ก ์์ฑํ๊ณ ํ์ผ์ ๋ณต์ฌํ๋ ์์ฐ์ฑ ์๋๋ก ๋๋์๊ฐ๋ ๊ณผ์ ์์ ๋ถ๋ช ํ Windows ํ์ C++ ์ํฌํ๋ก์ NET๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋์ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ๊ฐ์ ATL์ ํฌ๊ธฐํ ์ ์์ต๋๋ค. C++/CX๋ C++ Builder์ ๋๋ฌด ๊ทผ์ ํด ์์ด์ ISO๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฃฝ์ฌ์ผ ํ์ต๋๋ค. ์ด์ด ์ข๊ฒ๋ C++23์์, ๊ทธ๋ฆฌ๊ณ 2025๋ ์๋ VS์์ ์ป์ ์ ์์์ต๋๋ค.
์ด๋ฌํ ๋ชจ๋ ์๋ชป์ ์์ ๊ธฐ ์ํ ์ ์ ํ ๊ฐ๋ฐ ๊ฒฝํ์ด ๋ง๋ จ๋์ง ์๋ ํ ๊ทธ๋๊น์ง UWP์ ๊ด์ฌ์ ๊ฐ์ง ์ฌ๋์ด ์์์ง๋ ์๋ฌธ์ ๋๋ค.
๋ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ ํ์ ๊ดํ GitHub ๋ฌธ์ ๋ฅผ ๋์ง๋ ๊ฒ์ ํฅ๋ฏธ๋ฅผ ์๋ ๋งค์ฐ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ค. ๋๋ ๋จ์ง ๋๋ฌด ๋ง์ ๊ด์ฌ์ ๋ณด์ด๋ ๊ฒ ๊ฐ๋ค.
DirectX API๋ WinRT ํธํ์ฑ์ ์ํด ์์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ์กด ์๋น์์๊ฒ ์ค์ํ API ์ค๋จ์ด ๋ ์ ์๊ณ ์ผ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฌ๋ฌ ๊ด๋ฆฌ์ ๊ฐ์ ๋ค์ด๋ ํธ X์ ํด๋นํ๋ ๋ํผ๊ฐ์๋ค TerraFX ๊ฒฐํฉ ๋๋ 1 : ์์ 1 VORTICE ๋ C # ์คํ์ผ์ API ๋ํผ์ ๋๋ค.
CX์ ๊ฒฝ์ฐ ์ฌ๋ผ์ ธ์ผ ํ์ต๋๋ค. ์ปดํ์ผ๋ฌ ๊ด๋ จ ์ธ์ด ํ์ฅ์ ๋์๊ณ ๋์ด์ ์ฐํธ๋ฆฌ๊ฒ ํฉ๋๋ค. ์ฝ๋ ์ด์์ฑ์ ํฌ๊ฒ ์ ํดํ๊ณ C++ ํ์ค ์ง์ ์ธก๋ฉด์์ ๋ค์ฒ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ ํ ์์ง ํตํฉ์ด ํ์ํฉ๋๋ค. ๋์์ธ WRL์ ์ฌ์ฉํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๊ณ ์ง๋์น๊ฒ ์ฅํฉํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ง์ ์ฌ๋๋ค(DX ๋ถ์ ํฌํจ)์ด WinRT API๋ฅผ ์์ฑํ๊ธฐ๋ฅผ ์ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ์๋๋๋ค.
C++/WinRT๋ ํจ์ฌ ๋ ๋์ ์๋ฃจ์ ์ ๋๋ค. IDL์ ๋ค์ ๊ฐ์ ธ์์ผ ํ๋ค๋ ์ ์ ์ ๊ฐ์ ๋๋ค(ํ์ฌ๋ ํ์์ ). C++ ํ์ ์ด์ ๋ณด๋ค ํ์ค ์ง์์์ ํจ์ฌ ๋ ๋์ ์์ ์ ์ํํ๊ณ ์์ผ๋ฏ๋ก C++23์ด ์์ฑ๋๊ธฐ ์ ์ ์ค์ ๋ก ๋ฉํํด๋์ค๋ฅผ ์ป๋๋ค๋ฉด ๋๋ผ์ด ์ผ์ด ์๋๋๋ค. ์ด๋ ๊ฐ๋ฐ์ UX๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ ํ ๊ฒ์ ๋๋ค.
@์ค๋ฒ ์จ
Windows ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ๊ฐ ์์ฐ์ฑ ์ ํ๋ฅผ ์ ๋นํํ๋ฉด์ Redmond์์ ๋์ค๋ ๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ค๋ ์ฌ์ค์ ๋๋ผ์ง ๋ง์ญ์์ค.
CX์์๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค... C++ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์ธ์ด ํ์ฅ์ ์ข์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์์ต๋๋ค.
์ฑ ํจํค์ง ๋ด์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋์ผํ๊ฒ ์ ์งํ๊ณ ๋ฒ์ ์ ์ ์ ํ๊ฒ ๋ฒํํ๋ค๊ณ ๊ฐ์ ํ ๋ Windows๋ ์ด๊ฒ์ด ๋์ผํ ์ฑ์ ์ ๋ฒ์ ์์ ์ธ์ํ๊ณ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํ ๊น์, ์๋๋ฉด ๋ค๋ฅธ ์ฑ์ผ๋ก ์ค์นํ ๊น์?
@VagueGit , ์ด๊ฒ์ ํ๋ฅญํ ์ง๋ฌธ์ ๋๋ค. ๊ฒฐ๊ตญ UWP์ ๋ฐ์คํฌํฑ ์ฑ์ ์ค์นํ๋ ๊ธฐ์ ์ ๋์ผํฉ๋๋ค. ๋๋ต์ด ์์ธ ๊ฒ ๊ฐ์ต๋๊น? ์ต์ SDK์์๋ UWP ์ฑ์๋ .msix ํ์ฅ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค(ํ๋ฆด ์ ์์ผ๋ฏ๋ก ์ธ์ฉํ์ง ๋ง์ธ์). ๋๋ ๋น์ ์ด ์ด๊ฒ์ ํ์ง์์ ์๋ํ๊ณ ์์๋ผ ์ ์๋ค๊ณ ํ์ ํฉ๋๊น? ์ฐธ๊ณ ๋ก @adambraden .
.NET 5(๋๋ ์ด ์์ ์์ 6์ผ๋ก ์ถ์ธก๋จ)์ฉ ํ๋ ์์ํฌ ํจํค์ง์ ๋ํด ์ถ๊ฐ๋ก ์งํ/์์ฒญํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ ์ฌํญ์ด ์์ต๋๊น? ๋ฌธ์ ๋ฅผ ์ด์๋๋ฐ ์๋ต์ด ์์ต๋๋ค. .NET 5 ์ธ์ฑ ๋ฒ๋ค๋ง์ ์์์ด ์๋๋๋ค.
@lmcdougald ์ด๋ค ๋ฌธ์ ๋ฅผ ๋ง์ํ์๋์ง ์ ๊ฒ ๊ฐ์ต๋๋ค(ํ์ง๋ง ์ฐพ์ ์ ์์ต๋๋ค). ํ๋๊ฐ ์์ง๋ง .net6 ์๊ฐ๋์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋๊ฐ ํด์ผ ํ ์ผ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณผ์ ์์ ๊ฒฝํ๊ณผ ๊ฐ์ ๋ฉ์ง ๋ฉ๋ชจ์ฅ์ผ๋ก MIDL์ ์๋์ผ๋ก ์์ฑํ๊ณ ํ์ผ์ ๋ณต์ฌํ๋ ์์ฐ์ฑ ์๋๋ก ๋๋์๊ฐ๋ ๊ณผ์ ์์ ๋ถ๋ช ํ Windows ํ์ C++ ์ํฌํ๋ก์ NET๊ณผ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋์ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ๊ฐ์ ATL์ ํฌ๊ธฐํ ์ ์์ต๋๋ค. C++/CX๋ C++ Builder์ ๋๋ฌด ๊ทผ์ ํด ์์ด์ ISO๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฃฝ์ฌ์ผ ํ์ต๋๋ค. ์ด์ด ์ข๊ฒ๋ C++23์์, ๊ทธ๋ฆฌ๊ณ 2025๋ ์๋ VS์์ ์ป์ ์ ์์์ต๋๋ค.
๋ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ ํ์ ๊ดํ GitHub ๋ฌธ์ ๋ฅผ ๋์ง๋ ๊ฒ์ ํฅ๋ฏธ๋ฅผ ์๋ ๋งค์ฐ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ค. ๋๋ ๋จ์ง ๋๋ฌด ๋ง์ ๊ด์ฌ์ ๋ณด์ด๋ ๊ฒ ๊ฐ๋ค.
@pjmlp ๋๋ ๋น์ ์ ์ ์ง๊ณผ ์ด์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ์ฌ C++ ๊ฒฝํ์ด ์์ค ์ดํ๋ผ๋ ๋ฐ ๋ ๋์ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ C++ ๊ฒฝํ์ .NET๊ณผ ๋ ๋น์ทํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ๋ง์ ์ผ์ ํ์ง๋ง @sylveon์ด ์ธ๊ธํ๋ฏ์ด ๋น์ฉ์ด ๋ญ๋๋ค. ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ C++๋ฅผ ํ๋ฅญํ๊ฒ ๋ง๋๋ ๋ฐ ์์ง๋์ด๋ง ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์ถ๋ค๋ฉด C++ ํ์ค์ ์ถ์งํ๋ ๋ฐ ์์ ๋ถ์ด์ผ ํ๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ๋ฉํ ํด๋์ค๊ฐ ํ์ถ๊ตฌ๋ผ๋ ๊ฒ์ ๋ถํํ ์ผ์ด๋ฉฐ, ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ ๊ฒ ์ค๋ ๊ธฐ๋ค๋ฆด ์ ์๋ค๋ ๊ฒ์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ ๋ฐฉ๋ฒ์ ๋ ผ์ํ๊ณ ์์ต๋๋ค.
์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. "์ด๊ฒ์ด ์ํ๋์ด์ผ ํ๋ ์์ ์ด๋ผ๋ ๊ฒ์ ๋ชจ๋๊ฐ ์๊ณ ์์ต๋๋ค."๋ก ๋ง์กฑํ๋ฉฐ 1๋ ์ ๋ ๋ถํ๋ ค์ง ๋ฐ์ด๋๋ฆฌ์ ํจ๊ป ์ด ๊ฒ์ ๋๋ค.
@stevenbrix ๋ฐ @VagueGit - ์ฌ์ ํ msix ํจํค์ง์ ๋ํด appinstaller ํ์ผ์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. appinstaller ํ์ผ์ ํจํค์ง์ URI๋ฅผ ์ ๊ณตํ๋ json ํ์ผ์ ๋ถ๊ณผํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ ์๋๋ฆฌ์ค๋ฅผ ์ธ๊ธํ์ผ๋ฏ๋ก ๋ด๋ถ ์์น์ ๋ง๊ฒ appinstaller uri๋ฅผ ์ฌ์ฉ์ ์ ์ํ๊ฑฐ๋ ์ธ๋ถ ์ก์ธ์ค์ ๋ํด์๋ ๋ค๋ฅด๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ชจ๋ CDN์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ฒ์ ๊ด๋ฆฌ์ ๊ด๋ จํ์ฌ - ํจํค์ง ID๊ฐ ๋์ผํ ๊ฒฝ์ฐ ํจํค์ง ์ฑ์ ๊ฒฝ์ฐ ์, ์ ๋ฒ์ ์ ์ค์นํ๋ฉด ๊ธฐ์กด ์ฑ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
@stevenbrix @VagueGit ํ์ฌ ๋ง๋ฒ์ฌ์ ๋ํ ๊ฒฝํ๊ณผ ๊ฐ์ ์ ๋ณด๋ก ๋ต์ฅ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋๋ ์ด ์ญํ ์์ ์์ง ๋งค์ฐ ์ ์ธ์ด๋ฏ๋ก ๋ด๊ฐ ๋งํ๋ ๋ชจ๋ ๊ฒ์ ์๊ธ ํ ์๋ก ๋ฐ์๋ค์ด์ญ์์ค. ์ฆ, ์ฐ๋ฆฌ ํ์ ํ์ฌ Windows Template Studio ์์ ๋ ธ๋ ฅ์ ์ฃผ๋ํ๊ณ ์์ต๋๋ค. ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ฉด ํ์ฌ ๋ง๋ฒ์ฌ์ ๊ธฐ์กด ํ ํ๋ฆฟ์์ ์ํ๋ ํ์ด์ง ๋ฐ ํ๋ ์์ํฌ๋ก ์ WPF ๋๋ UWP ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.
์์ผ๋ก ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชฉํ์ ํ์ฌ ๊ณํ์ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ํ ๊ฐ๋ฐ ๊ฒฝํ์ ํตํฉํ๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ WinUI 3์ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํฑ ์ฑ์ฉ ํ ํ๋ฆฟ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ์ฌ๊ธฐ ์์ ์ถ์ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋ํ ์ฌ์ฉ์๊ฐ ๋๊ฐ ๋๋ฉด ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋๋ก UWP์ ๋ํด ๋์ผํ ์์ ์ ์ํํ๋ ๊ฒ์ ๋ํด ๋ ผ์ํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ ์ง ์์ง ์ ํํ ์์ง ๋ชปํ์ง๋ง, ์ฐ๋ฆฌ์ ๋ชฉํ๋ ๊ฐ๋ฅํ ํ ๊ฒฝํ์ ํตํฉํ๊ณ ๋จ์ํํ๋ ๊ฒ์ ๋๋ค. ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
CX์์๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค... C++ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์ธ์ด ํ์ฅ์ ์ข์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์์ต๋๋ค.
๊ทธ๋ค์ clang, GCC, Intel์์ ๊ทธ๋ค์ ์ฌ๋ํฉ๋๋ค. xlCC, PGI, CUDA, C++ Builder ๋ฐ ์๋ฒ ๋๋ ํ๋ซํผ์ ๊ณผ๋ค.
๋ถ๋ช ํ CX๋ Microsoft์์ ์ ๊ณตํ๋ C++ RAD ํ๊ฒฝ์ ์์ฉํ ์ ์๋ ์ ์ฑ ์ผ๋ก ์ธํด ์ค๋จ๋์์ผ๋ฉฐ ๋์ ๋ฉ๋ชจ์ฅ๊ณผ ๊ฐ์ ๊ฒฝํ์ผ๋ก MDIL/ATL์ ์ํํ๋๋ก ํ์ต๋๋ค.
๋๋ ์ปดํ์ผ๋ฌ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋น์ฉ์ ํผํฉ๋๋ค. ํนํ ๋ ์ ํ์ฅ์ด ๊ทธ ์์ฒด๋ก ์์ ํ ๋ค๋ฅธ ์ธ์ด์ธ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
๋๋ ์ปดํ์ผ๋ฌ์ ๊ด๊ณ์์ด ๋ชจ๋ ๋น์ฉ์ ํผํฉ๋๋ค. ํนํ ๋ ์ ํ์ฅ์ด ๊ทธ ์์ฒด๋ก ์์ ํ ๋ค๋ฅธ ์ธ์ด์ธ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด WinUI์ ๊ฐ์ ๋ ์ UI์ ๋ํด ์ฝ๋ฉํ๋ ์ด์ ๋ ๋์ X Windows์ ๊ฐ์ ๊ณต๊ฐ ํ์ค์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
... ๋ง์น Windows์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ฒ๋ผ. ํ์ค ์ค์ ๊ฒ์ฆ์ ์ํด ์ปดํ์ผ๋ฌ(Clang ๋ฐ MSVC)๋ฅผ ๋ค์ค ๋์์ผ๋ก ์ง์ ํ๊ณ ์ต์ C++ ํ์ค์ ์ฌ์ฉํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ ํ์ฅ์ ํผํฉ๋๋ค.
๋ด ์ฝ๋๋ C++20์ ์ฌ์ฉํฉ๋๋ค. ๋ง์ ์ธ์ด ํ์ฅ์ด C++17 ์ง์์ด ๋ถ์กฑํ๊ฑฐ๋ ๋งค์ฐ ๋ฆ๊ฒ ๋ฐ์์ต๋๋ค. ์ด ์ํฉ์ C++20์์ ๋ฐ๋ณต๋ ๊ฒ์
๋๋ค(๋๋ C++20์ด 17๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์๋ก์ด ๊ฒ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์
ํ๋ฉ๋๋ค). ์๋ฅผ ๋ค์ด C++20( /std:c++latest
)๊ณผ CX( /ZW
)๋ฅผ ํผํฉํ ์ ์์ผ๋ฉด ๋ ์ค์์น๊ฐ ํธํ๋์ง ์๋๋ค๋ ์ปดํ์ผ๋ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
NVCC๊ฐ ์ฅ์น ์ธก C++17์ ์ง์ํ๋ ๋ฐ ์ฌํด๊น์ง ๊ฑธ๋ ธ์ต๋๋ค. ์ข์ง ์์.
๋ด๊ฐ ์ฌ์ฉํ๋ ์ธ์ด ํ์ฅ์ ์๋ก์ด ํ์ค์์ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์์ ์ฒํ๊ณ ์ถ์ง๋ ์์ง๋ง ์๋ก์ด ํ์ค ๊ธฐ๋ฅ๋ ํ์ํฉ๋๋ค.
์์ ์ด์ ๋ก ๋๋ ๊ทธ๋ค์ ํผํฉ๋๋ค. WinUI C++ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ธ์ด ํ์ฅ์ผ๋ก ํ๊ทํ๋ฉด ๋์ฒด GUI ํ๋ ์์ํฌ๋ก ์ด๋ํ ๊ฒ์ ๋๋ค.
@sylveon WinUI์ฉ์ผ๋ก ์๋ฒฝํ๊ฒ ์ด์ ๊ฐ๋ฅํ C++20์ Windows ์ธ๋ถ์์๋ ์์ ํ ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ํ์ฅ ๊ธฐ๋ฅ์ด ์๋ Qt๋ ์ฌ๋ฏธ์๊ฒ ์ฆ๊ธฐ์ธ์.
C++ ๋ฐ์คํฌํฑ ์ฌ์ฉ์์๊ฒ๋ ์ฌ์ฉํ ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌด์๋ฏธํ ์ ์น๊ฐ CX๋ฅผ ์ฃฝ์๋ค๋ ๊ฒ์ ํ์ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์๋ก ์ฐํธ์ ์ธ ์ ์. ๋๋ ๊ธฐ์ ์ ์ธ C++ ์ฃผ์ฅ์ ๋ํด ๋
ผํํ ์ ์์ผ๋ฉฐ ๋๊ฐ ์ณ์์ง ํ๋จํ์ง ์์ ๊ฒ์
๋๋ค.
์์ ์ go have fun with X
์ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ์ฌ๊ธฐ์์ ์ฐํธ์ ์ด๊ณ ํ๋ ฅ์ ์ธ ๋ถ์๊ธฐ๋ฅผ ์ค์ ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. @stevenbrix ๋ฐ ๊ธฐํ ํ์ํ ๊ฒฝ์ฐ
@hansmbakker ๊ฐ์ฌ
@pjmm ๋ฐ @sylveon ์ด์ ์ ์ด๊ณ ์์งํ ๋ํ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ ๊ฐ์ง ์ ๋ชจ๋ ๋งค์ฐ ํ๋นํ๋ฉฐ, ๋ ์ฌ๋์ด ๋ชจ๋ ์ณ๋ค๊ณ ์๊ฐํ๊ธฐ์ ์ธ์์ ์ถฉ๋ถํ ํฌ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@pjmlp ์ฐ๋ฆฌ๋ C++์ ๋ํ ํ์ฌ ๊ฒฝํ์ ๋ง์กฑํ์ง ์์ผ๋ฉฐ C++ ๋ฉํํด๋์ค ์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ํด์ผ ํ๋ค๋ ๊ฒ์ ์ธ์ํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ idl-free c++/winrt์ ๋ํด ๋ช ๊ฐ์ง ํ ๋ก ์ ํ๊ณ @kennykerr ์ @Scottj1s ๋ ๊ทธ๊ฒ์ ๋ํด Build ํ ๋ก ์ ํ์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ๊ฒช์๋ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ WinUI์์ ํตํฉ๊ณผ ๊ด๋ จ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์ํฌํ๋ก๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ์ฌ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ ์์ง๋ ฅ ์๋ ์คํ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. C++/Cx๋ฅผ ๋ค์ ๊ฐ์ ธ์ค๋ ๋์ idl-free ๋ฒ์ ์ C++/winrt์ ๊ด์ฌ์ด ์์ผ์ญ๋๊น?
๊ธฐ๋์น๋ฅผ ์ค์ ํ๊ธฐ ์ํด ์ฌ๊ธฐ์์ 2020๋ ์ ๋ง์ ์ง์ ์ด ์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง๋ ์์ต๋๋ค.
IDL ๋ฌด๋ฃ C++/WinRT์ ๊ด์ฌ์ด ๋ง์ต๋๋ค.
IDE ๊ฒฝํ๋ ์ต๊ณ ๊ฐ ์๋๋๋ค. ์๋ฅผ ๋ค์ด C#์์์ ๊ฐ์ด XAML ํธ์ง๊ธฐ์์ ์ด๋ฒคํธ ์ฝ๋ฐฑ์ ๋ง๋ค ์ ์์ต๋๋ค(์ ์ฝ๋ฐฑ ๋ง๋ค๊ธฐ ๋๋กญ๋ค์ด์ ์๋ฌด ์์ ๋ ์ํํ์ง ์์). XAML ํธ์ง๊ธฐ์์ ์ ์๋ก ์ด๋๋ ์๋ํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋ฌธ์ ๋ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฑ์ด ๋ค์ํ XAML ์ปดํ์ผ๋ฌ ๋ฒ๊ทธ๋ก, ๋ค๋ฅธ ์ง์ ์ธ์ด์์๋ ํ์ํ์ง ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
@stevenbrix , IDL์ด ์๋ C++/WinRT์ ์ ๋ชฉ์๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค(๋ฌผ๋ก C++/CX๋ก์ ๋ณต๊ท๋ ์ํ์ง ์์ต๋๋ค). ์ฐ๋ฆฌ๋ ํ๋ซํผ ๊ฐ ์ํํธ์จ์ด๋ฅผ ์์ฑํ๊ณ MSVC ๋ฐ LLVM(Windows ํฌํจ)์ผ๋ก ์ปดํ์ผํ๋ฏ๋ก ํ์ค ์ค์ C++๋ ์ฐ๋ฆฌ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
@stevenbrix ,
@pjmlp ์ฐ๋ฆฌ๋ C++์ ๋ํ ํ์ฌ ๊ฒฝํ์ ๋ง์กฑํ์ง ์์ผ๋ฉฐ C++ ๋ฉํํด๋์ค ์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ํด์ผ ํ๋ค๋ ๊ฒ์ ์ธ์ํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ idl-free c++/winrt์ ๋ํด ๋ช ๊ฐ์ง ํ ๋ก ์ ํ๊ณ @kennykerr ์ @Scottj1s ๋ ๊ทธ๊ฒ์ ๋ํด Build ํ ๋ก ์ ํ์ต๋๋ค. ์ปดํ์ผ๋ฌ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ๊ฒช์๋ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ WinUI์์ ํตํฉ๊ณผ ๊ด๋ จ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์ํฌํ๋ก๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ์ฌ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ ์์ง๋ ฅ ์๋ ์คํ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. C++/Cx๋ฅผ ๋ค์ ๊ฐ์ ธ์ค๋ ๋์ idl-free ๋ฒ์ ์ C++/winrt์ ๊ด์ฌ์ด ์์ผ์ญ๋๊น?
๊ธฐ๋์น๋ฅผ ์ค์ ํ๊ธฐ ์ํด ์ฌ๊ธฐ์์ 2020๋ ์ ๋ง์ ์ง์ ์ด ์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง๋ ์์ต๋๋ค.
์ด๊ฒ์ C++/WinRT๋ฅผ ์ฌ์ฉํ ์ด ์ ์ฒด ์์ด๋์ด๊ฐ ์ฒ์๋ถํฐ ์์ฐ์ฑ ์ ํ์ ๋ํ ๊ณ ๋ ค ์์ด ์ฐ๋ฆฌ์๊ฒ ์ผ๋ง๋ ๋์ ์ํฅ์ ๋ฏธ์ณค๋์ง ๋ณด์ฌ์ค๋๋ค.
์ด๋ฌํ ๊ด์ ์์ ๋ณผ ๋ Windows ๊ฐ๋ฐ์ ๊ฒฝํ์ด Windows 3.0์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ ์ค๋ ๊ฐ๋ฐ์์ด๋ฉฐ ์ค๋๋ C++๋ ๋จ๋ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ .NET ๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐ ๋๋ถ๋ถ ๊ด๋ จ์ด ์์ต๋๋ค.
Borland ๋๊ตฌ๋ ์ค๋ Windows ๊ฐ๋ฐ์์๊ฒ ์๋ ค์ง ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ธํด Microsoft ์ปดํ์ผ๋ฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ผ๋ก ๋๋ ๋๊น์ง ์ ์ ๋นต๊ณผ ๋ฒํฐ์์ต๋๋ค.
Visual C++๋ Forms ๋ฐ AOT ์ปดํ์ผ๊ณผ์ ํตํฉ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ C++/CLI์์๋ C++ Builder๋ก _Visual_๋์ง ์์์ต๋๋ค.
C++/CX๋ Microsoft๊ฐ ๋ง์นจ๋ด ๊ทธ๊ฒ์ ์ป์ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. 25๋ ํ์๋ Delphi/C++ Builder๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ์์ฐ์ฑ ์ํฌํ๋ก๊ฐ ์ ๊ณต๋ ๊ฒ์ ๋๋ค.
๋์ ์ฐ๋ฆฌ์ ์์ฐ์ฑ ์ ํ์ ๋ํ ๊ณ ๋ ค ์์ด C++/CX๋ฅผ ์ฃฝ์ด๋ ค๋ ์ ์น์ ์์ง์์ผ๋ก ์ป์ ๊ฒ์ ๋๋ฝ๋ ๊ธฐ๋ฅ์ ๋ํ ์ฑ ์์ ISO C++ ๋ฐ WG 21์ ๋๊ฒผ์ต๋๋ค. ๋ง์น Visual C++ ํ์ด ์ฐ๋ฆฌ์๊ฒ์ ๋นผ์์ ๋ชจ๋ ๊ฒ์ด WG 21์์ ์น์ธํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ํ ๊ธฐ๋ฅ์ด ๊ฒฐ๊ตญ ISO C++์ ์ฑํ๋๋๋ผ๋ 2023๋ , 2026๋ , ....? ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์ค์ ๋ก Windows ๊ฐ๋ฐ์์๊ฒ ์ ๊ณต๋๋ ์์ ์ด ์ธ์ ์ธ์ง์ ๋ํ ์ ์ฒด ์์ ์ด ์์ต๋๋ค. ๋ชจ๋ ์ง์์ ์ดํด๋ณด์ญ์์ค. ์ฐ๋ฆฌ๋ 2012๋ Windows 8์ด ์ถ์๋ ์ดํ C++/CX๊ฐ ์ฐ๋ฆฌ์๊ฒ ์ ๊ณตํ ๊ฒ๊ณผ ๋๋ฑํ ์์ค์ ๋๋ฌํ๋ ๋ฐ ์ฝ ๋์๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
๋ฐ๋ผ์ 2020๋ ๊น์ง ๊ฐ์ ์ด ๋ํ๋์ง ์์ ๊ฒ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฌ๊ธฐ์ 9๋ ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๋ชจ๋ ๊ฒ์ด ๊ด๋ฆฌ๋ ๋ฐฉ์์ ๋ํด ์ฝ๊ฐ ํ๋ฅผ ๋ด๋ ๊ฒฝํฅ์ด ์๋ ๊ฒฝ์ฐ ์ค๋กํฉ๋๋ค. UWP ์คํจ, Reunion, .NET ์์ฝ ์์คํ ์ฌ๋ถํ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฒ ์ด ๋ณธ MIDL ๋ฉ๋ชจ์ฅ ๊ฒฝํ๊ณผ ATL๊ณผ ๊ฐ์ ๋์๋ ํ ํ๋ฆฟ ์ํ๋ก 2000 ๋ ์ฒ๋ผ ์ฝ๋ฉํ๋ผ๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค.
์, IDL ๋ฌด๋ฃ C++/WinRT ๋ฒ์ ์ด๊ฑฐ๋ ์ต์ํ ์์ ํ Intellisense/Intelicode ์ง์์ด ์๊ณ ์๋์ผ๋ก ํ์ผ์ ๋ณต์ฌํ ํ์๊ฐ ์๋ IDL ๊ฒฝํ์ ๋๋ค. ๊ทธ๋ฌ๋ C++ ์ฝ๋ ์์ฒด์์ ATL๊ณผ ๊ฐ์ ๊ฒฝํ์ ์์ ์ง๋ ์์ต๋๋ค.
.NET/C++ ๊ฐ๋ฐ ๊ด์ ์์ ๋ณผ ๋, ์ ๋ Microsoft ํ๋ ์์ํฌ์ ๊ณผ๊ฑฐ๋ก ์๊ฐ ์ฌํ์ ํ๋ ๊ฒ์ ๊ด์ฌ์ด ์์ต๋๋ค. ์คํ๋ ค C++ RAD ๊ด์ ์ด ๋ถํํ๊ฒ๋ C++/ WinRT ์คํ ๋ฆฌ๊ฐ ๊ด๋ฆฌ๋์๊ณ ์ง๊ธ UWP์์ ๋ฐฑํ๋ฌ๋ง์ผ๋ก ์งํ๋๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ, ๋๋ "๊ฐ๋ฐ์, ๊ฐ๋ฐ์, ๊ฐ๋ฐ์"๊ฐ ์ด๋๋ก ๊ฐ๋์ง ๊ถ๊ธํฉ๋๋ค.
์ฌ์ ํ ์ฝ๊ฐ ์๋ฑํ ๋๋์ด ๋ ๋ค๋ฉด ์ฃ์กํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ C++ ์ปดํ์ผ๋ฌ๊ฐ ์ด์จ๋ ํ์ง ์๋ ISO ์๋์ ์ด๋ฆ์ผ๋ก .NET์์ C++๋ก ํ ๋จ๊ณ ๋ ๋์๊ฐ์ผ ํ ๋ ์์ฐ์ฑ์ด ๋จ์ด์ง๋ ๊ฒ์ ๋ํด ๋๋ผ๋ ๊ฒ์ ๋๋ค.
C++๋ ์ฌ์ ํ ๋งค์ฐ ๊ด๋ จ์ฑ์ด ๋์ ๋ ๋ฆฝ ์คํํ์ ๋๋ค. ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์์ C++๋ก ์์ฑ๋ฉ๋๋ค. ์ค์ ๋ก ์ ์ฒด UWP ๋ฐํ์ ๋ฐ XAML/WinUI ํ๋ ์์ํฌ๋ ๊ธฐ๋ณธ C++์ ๋๋ค. C++๋ก ์์ฑ๋ UWP ์ฑ์๋ (๋คํํ) ๊ด๋ฆฌ๋๋ ์ธ์ด๊ฐ ์์ต๋๋ค.
.NET์์ C++๋ก ์ ํํด์ผ ํ ํ์์ฑ์ ๋๋๋ค๋ฉด ๊ทธ ์ด์ ๋ฅผ ์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณด๊ณ .NET ๋ด์์ ์ง์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ์ฑ๋ฅ? ์คํฌ ์ ํ, stackalloc ๋ฐ ๋ฒกํฐ ๋ด์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ญ์์ค. DirectX, ๊ธฐ๋ณธ API ๋๋ COM? TerraFX์ ๊ฐ์ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํฉ๋๋ค. C++ ์ ์ฉ lib์ ์ํธ ์์ฉํฉ๋๊น? .NET์์ ํ์ํ ๊ฒ์ ๋ค์ ๊ตฌํํ์ญ์์ค.
.NET์ C++ ์์ด ๋ ์ข๊ณ C++๋ .NET ์์ด ๋ ์ข์ต๋๋ค.
๋๋ cppwinrt์ ํ ํ๋ฆฟ์ด ๊ทธ๋ ๊ฒ ๋์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋๋ฅผ ๊ฐ์ฅ ์ง์ฆ๋๊ฒ ํ๋ ๊ฒ์ ์ฝ๋ ์์ฑ์ ํ์์ฑ๊ณผ ๊ทธ๊ฒ์ด ์์ฑํ๋ ๋์ฐํ ์ปดํ์ผ ์๊ฐ์ ๋๋ค.
@sylveon Easy, Windows ํ์ด UWP๋ก ์ ๊ณตํ๋ ๊ฒ์ ๊ฑฐ๋ถํ๊ณ ํ์ฌ ๋ฐ์ธ๋ฉ์ด ํฌํจ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ฌ๋์ด ๋ผ์ด์ ์ค ๋ฐ ํฅํ ์ง์ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ๋ชจ๋ ๊ฒ์ ํ์ฉํ๋ ๋ฒ๋ฌด ๋ถ์์ ์ถ๋ณต์ ๋ฐ์ ๊ฒ์ ์๋๋๋ค.
Borland(ํ์ฌ Embarcadero)์ The Qt Company๋ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ฃผ์์ง๋ง ํ๋ซํผ์ ์ ์งํ๋ ค๋ ๊ด๋ จ์ฑ์ ๊ฒฐ์ ํ๋ ๊ฒ์ Microsoft์ ๋ฌ๋ ค ์์ต๋๋ค.
macOS, iOS, Android, ChromeOS GUI์์ ISO C++๋ก ์ด๋๊น์ง ๊ฐ ์ ์๋์ง ํ์ธํ์ญ์์ค.
์ด์จ๋ ์ฌ๊ธฐ์ ๋ฉ์ถ๋ ๊ฒ์ ๋ฌด์๋ฏธํฉ๋๋ค.
@pjmlp iOS/macOS/Windows์์ ์ ์๋ํ๋ ์๋ฐฑ๋ง ์ค์ ISO C++๊ฐ ํฌํจ๋ ๊ต์ฐจ ํ๋ซํผ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค. C++๋ ์ฑ๋ฅ ๋ฐ/๋๋ ๋ฐฐํฐ๋ฆฌ ์๋ช
์ ๊ด์ฌ์ด ์์ ๋ ์ฌ์ฉํ ์ ์๋ ์ ์ผํ ์ธ์ด์
๋๋ค. C++ ํ์ฅ์ ์ฐ๋ฆฌ๊ฐ ์ฌ๋ฌ ์ปดํ์ผ๋ฌ(์๋ก์ ํ์ฅ์ ๊ตฌํํ์ง ์๋ ๊ฒ์ด ๋ถ๋ช
ํจ)๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ข์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด์ ์ C++/CLI๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ ๋งค์ฐ ๊ณ ํต์ค๋ฝ์ต๋๋ค. ์์ C++ ํฌ์ธํฐ๋ง ํ์ฉํ๋ ํด๋์ค ๋ฉค๋ฒ์ ๊ฐ์ ์ ํ์ผ๋ก ์ธํด ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์ ์ฅํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ปดํ์ผ ์๊ฐ์ด ๊น๋๋ค(๋จ์ผ ๋ฌธ์ ๋ณ๊ฒฝ ์ MD ๋ณํฉ ์๊ฐ 5๋ถ ์์).
C++์๋ pragma ๊ด๋ฆฌ/๋น๊ด๋ฆฌ ๋ณ๊ฒฝ์ ์ํ ๋ํ ํ์๊ฐ ํฌํจ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ๋ C++์ ๋น๊ตํ์ฌ C++/CLI์ ๋ค๋ฅธ ๋ฒ์ ์
๋๋ค(๊ทธ๋ฆฌ๊ณ ๋น๋ ์ C++/CLI ์ปดํ์ผ๋ฌ๊ฐ C++17 ์ด์์ ์ง์ํ์ง ์๋๋ค๋ ๋ง์ ๋ค์์ต๋๋ค. ์ด๋ C++๋ฅผ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํค๋๋ฅผ ํฌํจํ ๋ ๋ฌธ์ ๊ฐ ๋๋ ๋ฌธ์ ์
๋๋ค. 20๊ฐ์ง ๊ธฐ๋ฅ).
๋ด๊ฐ ๋งํ๋ ค๋ ๊ฒ์ ์ฌ๋ฌ ๊ฒฝ์์ ์ธ ๋
ธ๋ ฅ์ ํ์ง ๋ง๋ผ๋ ๊ฒ์
๋๋ค. ํ์ค์ ์ถฉ์คํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์์
ํ์ญ์์ค. Microsoft๋ C++ ์์ํ์ ์์ผ๋ฉฐ ํ์ค์ ๋ฐ์ ์ํค๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ด๊ฒ์ ๋
์ ์ด ์๋๋ผ ํ์ฅ์ ๊ณ ์ ๋ ์ด์ ์ด ๋์ด์ผ ํฉ๋๋ค.
midl.exe, cl.exe ๋๋ link.exe์ ์ ์ฌํ xaml ํ์ผ์ ์ปดํ์ผํ๊ธฐ ์ํด xaml.exe์ ๊ฐ์ xaml ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? winui ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
๋๋ก๋ Visual Studio๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์ํํ๊ณ ์ถ์ง ์๊ณ ์ํ๋ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๋น๋ ํ์ดํ๋ผ์ธ์ ๋ถ๋ฆฌ๋ ์ํ๋ก ์ ์งํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. winui ์์ฉ ํ๋ก๊ทธ๋จ xaml์ ํน๋ณํ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๊ณ ์์ง ์ปดํ์ผํ ๋ช ๋ น์ค ๋๊ตฌ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ cmake์ ๊ฐ์ ์๋๋ฆฌ์ค์ ํ์ํฉ๋๋ค: https://github.com/microsoft/ProjectReunion/issues/58
midl.exe, cl.exe ๋๋ link.exe์ ์ ์ฌํ xaml ํ์ผ์ ์ปดํ์ผํ๊ธฐ ์ํด xaml.exe์ ๊ฐ์ xaml ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? winui ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
@sammi #1433์ ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ์ ๋ํ ๊ทธ๋ด๋ฏํ ์๋ฃจ์ ์ ์์ฝํฉ๋๊น?
midl.exe, cl.exe ๋๋ link.exe์ ์ ์ฌํ xaml ํ์ผ์ ์ปดํ์ผํ๊ธฐ ์ํด xaml.exe์ ๊ฐ์ xaml ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? winui ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
@sammi #1433์ ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ์ ๋ํ ๊ทธ๋ด๋ฏํ ์๋ฃจ์ ์ ์์ฝํฉ๋๊น?
@jtbrower , ์ ๊ฐ โโ์ฐพ๋ ๋ฐ๋ก ๊ทธ ๊ธฐ๋ฅ์ ๋๋ค, ๊ฐ์ฌํฉ๋๋ค!
ํ์คํ ๊ทธ๊ฒ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ด๊ณ ๋ง์ ๊ฒ์ ๊ธฐ๋ํด์๋ ์๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ง WinUI 3 ๋ฏธ๋ฆฌ๋ณด๊ธฐ 2๋ ๋์๊ฒ ์ค๋งํ์ต๋๋ค.
๊ฐ์ฅ ํฐ ์๊ตฌ ์ฌํญ์ XAML ์ค๊ณ ์์ญ์ ๋๋ค. ๋๋ XAML ๋์์ด๋๊ฐ ์ ํ ์๋ํ์ง ์๋๋ค๋ ์ฌ์ค์ ์๋นํ ๋๋๊ณ ์ง๊ธ๊น์ง ์ธ์ ์๋ํ ์ง์ ๋ํ ๋ช ํํ ์ ๋ณด๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
์, Visual Studio์ ํ์ฌ XAML ๋์์ด๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๊ณ ์ค์ ๋ก ์ค๋จ๋์ด์๋ ์ ๋๋ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ๋ณ๊ฒฝํ ๋ ์ค๋จ๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Height="*"
๋ฅผ "Auto"
๋๋ 100์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. (์ค๋ฅ ์ฐฝ์ ์ฝ 10๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฑ์ด๋
๋๋ค. ๋ฌด์ํ ๋ง์ ๋ฌผ๊ฒฐ์ ์ด ์๊ณ ํ๋ก์ ํธ๋ฅผ ๋ค์ ๋น๋ํด์ผ ํจ)
๋ถ๋ช ํ ๋งํด์, ์ ๋ ๋์์ธ์ ์ํด ๋์์ด๋๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ ๋ ์ด์์์ด ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๊ธฐ ์ ์ ๊ตฌ์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋์ง ์๊ณ ์ถ์ต๋๋ค. ๋ ์ฌ์ฐ๋ฉด ๋์์ด๋๊ฐ "๋ณด๊ธฐ ์ ์ฉ"์ด๊ณ XAML์ ์กฐ์ ํ๋ฉด์(์ถฉ๋ ์์ด) ์ ๋ฐ์ดํธ๋ ๊ฒฝ์ฐ GUI๋ฅผ ์ฌ์ฉํ์ฌ XAML์ ๋ณ๊ฒฝํ์ง ์๊ฑฐ๋ ๋งค์ฐ ๋๋ฌผ๊ฒ ์ฌ์ฉํ๋ฏ๋ก ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. . ์ค์ ๋ก ์ฌ์ฉ์๊ฐ ์์ค๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ค์๊ฐ์ผ๋ก ์ถ๋ ฅ์ ๋ณผ ์ ์๋๋ก ํ๋ XAML ์์ค๋ก WindowsCommunityToolkit ์ด ์ํํ๋ ์์ ์ ์ ๋ชฉ์ ์ ์ถฉ๋ถํฉ๋๋ค.
๊ทธ๋ ๊ธด ํด๋ WinUI๋ ํ๋ฅญํ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋ชจ๋ "์ฌ์ด" ํญ๋ชฉ์ OS์์ ๋ถ๋ฆฌํ๊ณ ๊ฐ๋ฐ์์ ์์ ์ด ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ ์ ์๋๋ก ํ๋ฉฐ, 10์ต ์ฅ์น๋ฅผ ์ ๊ทธ๋ ์ด๋ํ ํ์๊ฐ ์๋๋ก ์ข ์์ฑ์ ์ฑ๊ณผ ๋ฒ๋ค๋ก ๋ฌถ์ ์ ์์ต๋๋ค. ๊ทธ๋์ ๊ทธ๋ค์ ์ฐ๋ฆฌ์ ์๋ก์ด ํ๋ฅญํ ๊ฒ๋ค์ ์คํํ ์ ์์ต๋๋ค.
Project Reunion์ด ์ฑ ์ปจํ ์ด๋์์ GUI๋ฅผ ์์ ํ ๋ถ๋ฆฌํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๋๋ฐ์ค/๊ฒฝ๊ณ๊ฐ ์๋ UWP์ ๊ฐ์ UX๋ ํฐ ์ง์ ์ด ๋ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ์ธ์ ๋ค์ ์๋ํ๋ XAML ๋์์ด๋๋ฅผ ๊ฐ์ง ์ ์์๊น์... ์ ๋ฐ์?
ํซ ๋ฆฌ๋ก๋๋ ๋๋ถ๋ถ XAML ๋์์ด๋์ "๋ณด๊ธฐ ์ ์ฉ" ๋ชฉ์ ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ WinUI ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ํซ ๋ฆฌ๋ก๋ ๋ฐ ๋ผ์ด๋ธ ๋น์ฃผ์ผ ํธ๋ฆฌ๋ WinUI์์๋ ์๋ํ์ง ์์ต๋๋ค.
๋ณด๊ธฐ ์ ์ฉ ๋์์ด๋๊ฐ ์๋ฏธํ๋ ๋ฐ๋ "๋ค์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์ ๋ฃ์ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ๋ง์กฑํ ์ ์์ต๋๋ค."์์ต๋๋ค.
๋ด๊ฐ ํ๋ฆด ์๋ ์์ง๋ง(๊ทธ๋ ๋ค๋ฉด ์๋ ค์ฃผ์ธ์), ์ง๊ธ ๋น์ฅ์ WinUI์์ UI๋ฅผ ๋ณผ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋น๋ํ๊ณ ์คํํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ WinUI ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ํซ ๋ฆฌ๋ก๋ ๋ฐ ๋ผ์ด๋ธ ๋น์ฃผ์ผ ํธ๋ฆฌ๋ WinUI์์๋ ์๋ํ์ง ์์ต๋๋ค.
๋ณด๊ธฐ ์ ์ฉ ๋์์ด๋๊ฐ ์๋ฏธํ๋ ๋ฐ๋ "๋ค์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์ ๋ฃ์ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ๋ง์กฑํ ์ ์์ต๋๋ค."์์ต๋๋ค.
๋ด๊ฐ ํ๋ฆด ์๋ ์์ง๋ง(๊ทธ๋ ๋ค๋ฉด ์๋ ค์ฃผ์ธ์), ์ง๊ธ ๋น์ฅ์ WinUI์์ UI๋ฅผ ๋ณผ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋น๋ํ๊ณ ์คํํ๋ ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์ @ericleigh007 ์ต์ ๋ฆด๋ฆฌ์ค์ธ WinUI 3 Preview 3๋ฅผ ํ์ธํ ๊ธฐํ๊ฐ ์์ผ์ จ๋์? ์ต๊ทผ IntelliSense, Hot Reload, Live Visual Tree ๋ฐ Live Property Explorer์ ๊ฐ์ ๋ง์ ๋๊ตฌ ๊ฐ์ ์ฌํญ์ ์ถ๊ฐํ์ต๋๋ค. ์ฌ๊ธฐ ์์ ๋ฆด๋ฆฌ์ค ์ ๋ณด๋ฅผ ํ์ธํ๊ณ ์์ต๋๋ค . ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๊ด์ฌ์ด ๋ง์ผ๋ ๋ถ๋ด ์์ด ์ฐ๋ฝ์ฃผ์ธ์!
@JeanRoca ๋ถํํ๋ C++/CX ๊ฐ๋ฐ ๊ฒฝํ์ ๋ฐ๋ผ์ก๋ ๊ฒ์ ๋๊ตฌ ๊ฐ์ ์ฌํญ ์ค ํ๋๊ฐ ์๋๋๋ค. ์ ์๋ C++ ๋๊ตฌ๊ฐ 2000๋ ์ผ๋ก ๋์๊ฐ ๋ฉ๋ชจ์ฅ์ IDL ํ์ผ์ ์์ฑํ๊ณ (ํธ์ง๊ธฐ ์ง์ ์์ด) ์๋์ผ๋ก ํ์ผ์ ๋ณต์ฌํ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง ๋ WinUI์ ๋ํ ๊ฐ๋ฐ์์ ๋ง์ ์ฌ๋์ ๊ธฐ๋ํ์ง ๋ง์ญ์์ค.
๊ฐ๋ฅํ ํ ๋ง์ด .NET์ ๋จธ๋ฌผ๊ฒ ํ๊ฑฐ๋ C++/WinRT๋ก ์ด๋ํ๋ผ๋ ๊ฒฝ๊ณ ์๋ ๋ถ๊ตฌํ๊ณ C++/CX๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ฒ ๋ง๋ญ๋๋ค.
์ ๋ฐ์ดํธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ ๊ทธ๊ฒ์ ์๋ํ๊ณ ๋ค์๋ณด๊ณ ํ ๊ฒ์ ๋๋ค. ๐ค
๋ฉ์ผ์์ ๋ณด๋ธ ๋ฉ์ผ https://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10
๋ณด๋ธ ์ฌ๋: JeanRoca [email protected]
๋ณด๋: 2020๋
11์ 18์ผ ์์์ผ ์ค์ 4:41
๋ฐ๋ ์ฌ๋: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: Eric [email protected] ; ๋ฉ์
@noreply.github.com
์ ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] WinUI 3.0 ๊ฐ๋ฐ์ ๊ฒฝํ ๋ฐ ๋๊ตฌ - ์
๋ ฅ ํ์(#1045)
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ WinUI ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ํซ ๋ฆฌ๋ก๋ ๋ฐ ๋ผ์ด๋ธ ๋น์ฃผ์ผ ํธ๋ฆฌ๋ WinUI์์๋ ์๋ํ์ง ์์ต๋๋ค.
๋ณด๊ธฐ ์ ์ฉ ๋์์ด๋๊ฐ ์๋ฏธํ๋ ๋ฐ๋ "๋ค์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์ ๋ฃ์ ์ ์๋ ๊ฒ์ด๋ผ๋ฉด ๋ง์กฑํ ์ ์์ต๋๋ค."์์ต๋๋ค.
๋ด๊ฐ ํ๋ฆด ์๋ ์์ง๋ง(๊ทธ๋ ๋ค๋ฉด ์๋ ค์ฃผ์ธ์), ์ง๊ธ ๋น์ฅ์ WinUI์์ UI๋ฅผ ๋ณผ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋น๋ํ๊ณ ์คํํ๋ ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์ @ ericleigh007 https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fericleigh007&data=04%7C01%7C%7Cae66199f9c044a728fb108d88b7c470d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637412713160082691%7CUnknown% 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAILCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sBIZUiZU ์ ์ต์ ๋ฒ์ ์ ํ์ธํ์๊ฒ ์ต๋๊น? ์ต๊ทผ IntelliSense, Hot Reload, Live Visual Tree ๋ฐ Live Property Explorer์ ๊ฐ์ ๋ง์ ๋๊ตฌ ๊ฐ์ ์ฌํญ์ ์ถ๊ฐํ์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ฆด๋ฆฌ์ค ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fmicrosoft-ui-xaml%2Fissues%2F3620&data=04%7C01% 7C % 7Cae66199f9c044a728fb108d88b7c470d % 7C84df9e7fe9f640afb435aaaaaaaaaaaa % 7C1 % 7C0 % 7C637412713160082691 % 7CUnknown % 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0 % 3D % 7C1000 & SDATA = 2jVKkAs9Whd6U9kH1ZxJKy956wI6Itg7jq6lCuaqEgE % 3D & = 0์ ์์ฝ ํ๊ณ ์ฌ๊ธฐ์ ์ต์ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ป์ https://eur05.safelinks.protection.outlook.com/?url=https% 3A % 2F % 2Fdocs.microsoft.com % 2Fen ๋ฏธ % 2Fwindows % 2Fapps % 2Fwinui % 2Fwinui3 % 2F ๋ฐ ๋ฐ์ดํฐ = 04% 7C01 % 7C % 7Cae66199f9c044a728fb108d88b7c470d % 7C84df9e7fe9f640afb435aaaaaaaaaaaa % 7C1 % 7C0 % 7C637412713160092685 % 7CUnknown % 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0 % 3D % 7C1000 ๋ฐ SDATA = VF2s7jilqpksevP6Fx7mXW1QCNJN2 % 2BK5yWOndg3rKoc%3D&reserved=0 . ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๊ด์ฌ์ด ๋ง์ผ๋ ๋ถ๋ด ์์ด ์ฐ๋ฝ์ฃผ์ธ์!
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fmicrosoft-ui-xaml%2Fissues%2F1045%23issuecomment์์ ํ์ธํ์ญ์์ค. = 04% 7C01 % 7C % 7Cae66199f9c044a728fb108d88b7c470d % 7C84df9e7fe9f640afb435aaaaaaaaaaaa % 7C1 % 7C0 % 7C637412713160092685 % 7CUnknown % 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0 % 3D % 7C1000 ๋ฐ SDATA = R1S2JpfBSzsNKJBAH5๊ฐ 2Fgme8Bq % % % 2FjHbzB9FySk1KnZKbk 3D ๋ฐ ์์ฝ = 0 -729402012 ๋ฐ ๋ฐ์ดํฐ ๋๋ ๊ฑฐ๋ถ //eur05.safelinks.protection.outlook : HTTPS .COM /? URL = HTTPS % 3A % 2F % 2Fgithub.com % 2Fnotifications % 2Funsubscribe-์ธ์ฆ % 2FABX3S2XLYXYXP7BZZC3OE73SQNGBFANCNFSM4ICOLUJQ ๋ฐ ๋ฐ์ดํฐ = 04ํผ์ผํธ 7C01 % 7C % 7Cae66199f9c044a728fb108d88b7c470d % 7C84df9e7fe9f640afb435aaaaaaaaaaaa % 7C1 % 7C0 % 7C637412713160102680 % 7CUnknown % 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0 % 3D % 7C1000 ๋ฐ SDATA = 0H6IpND3YX1s6oyXy % 2FCXNAMN9n8fvSPdWks%2FfmXT0Bc%3D&reserved=0 .
- ํ์ฌ winui3 C++(๋ฐ์คํฌํฑ)์์ ์๋ํ๋ wysiwyg ํธ์ง๊ธฐ/๋ฉ์๋๊ฐ ์์์์?
Microsoft๋ C++/CX ์ฌ์ฉ์๋ ์์ธ์ํค๋ ค๊ณ ๊ด๋ฆฌํ๊ณ ์์ต๋๊น? ์ด ๋ชจ๋ ๊ฒ์ด ์ ํ์ฑ๋์ง ์์ต๋๋ค. Microsoft๊ฐ ๋ช ๋ ์ ์ UWP๋ฅผ ์ํด ์ถ์งํ๋ ๊ธฐ์ ์ ์ฑํํ ์ฌ๋์ .net์ด๋ C++์ด๋ ํ์ฌ Microsoft์ ์ง์ ์์ด๋ ๊ณค๊ฒฝ์ ์ฒํด ์์ต๋๋ค.
WinUI 3์ WPF๋ก ์์ฑ๋ ๋ฐ์คํฌํฑ ์ฑ์๋ง ์ ์ฉ๋๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง UWP์๋ WPF์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์๊ณ WinUI๋ ๋ ์ ์ ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ์ ๋นจ๋ฆฌ ๊นจ๋ซ๊ฒ ๋ ๊ฒ์ ๋๋ค. WinUI 3๋ฅผ ์์ํ๊ธฐ์ ์ข์ง ์์ ์ฅ์์ธ ๋ชจ๋๊ฐ ์ข์ ํ ๊ฒ์ ๋๋ค.
@robloo UWP๋ฅผ ์นํธํ๋ ์ฌ๋์ผ๋ก์ ๊ทธ๋ค์ ๋๋ฅผ ์์์ต๋๋ค. ๊ทธ๋ค์ ํผ๋์ ์ ๋ฆฌํ ๋๊น์ง WPF์ Win32์ ๋๋ค.
C++/WinRT๋ ์ ์น์ ์ธ ์์ง์์ด์๊ณ ISO C++๊ฐ ๊ฒฐ๊ตญ ๋ฆฌํ๋ ์ ๋ฐ ๋ฉํํด๋์ค ์ง์์ ์ ๊ณตํ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ Visual Studio ํ์ด C++/CX ๊ฒฝํ์ ๋ณต์ ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ผ๋ ๋ง์ ๋ค์์ต๋๋ค.
์ธ๊ธํ๋ฏ์ด IDL ํ์ผ์ ํธ์งํ๋ ๊ฒ์กฐ์ฐจ๋ ์์ ๋ฉ๋ชจ์ฅ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ค๋ฅด์ง ์์ต๋๋ค.
.NET์์ ์ฐ๋ฆฌ๋ ๋ชจ๋ UWP ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ Microsoft๋ฅผ ์ฐธ์์ผ ํ์ง๋ง C++/CLI์ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ C++/CX์์๋ ์ด๋ป๊ฒ๋ ๊ฐ๋นํ ์ ์์์ต๋๋ค. ์ด์ C++/WinRT๋ฅผ ์ฌ์ฉํ์ฌ ATL๋ก ๋์๊ฐ๋๋ค.
๊ทธ๋ฐ ๋ค์ Reunion ๋ฌธ์ ํ ๋ก ๊ณผ ์ ๋ฐ์ดํธ ๋ก๋๋งต์ ์ฝ์ผ๋ฉด ๋ฐฉํฅ์ ์์ ํ๋ ๋ฐ ๋ช ๋ ์ด ๊ฑธ๋ฆด ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
WPF ๋ฐ Win32๋ ์ค๋๋์์ ์ ์์ง๋ง ๋ค์ ์์ฑํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์์ง ์๊ณ ์ฌ๊ธฐ์ ์๊ณ ์๋ํฉ๋๋ค.
- ํ์ฌ winui3 C++(๋ฐ์คํฌํฑ)์์ ์๋ํ๋ wysiwyg ํธ์ง๊ธฐ/๋ฉ์๋๊ฐ ์์์์?
XAML ๋์์ด๋๋ ์ผ์ข ์ ์๋ํ์ง๋ง ์ฒ์๋ถํฐ wysiwyg ํธ์ง์ ์ํด ์ค๊ณ๋ ๊ฒ์ ์๋๋๋ค. Hot reload(์ด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ 3์์ ์๋)๊ฐ ๋ ์ ์๋ํฉ๋๋ค.
๋ผ์ด๋ธ ๋น์ฃผ์ผ ํธ๋ฆฌ์ ๋ผ์ด๋ธ ์ํ ๋ณด๊ธฐ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ 3์์ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค. ๋์์ด๋๋ ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ํ ๋ฐ์คํฌํฑ(WPF)(UWP ์๋) ๋์์ด๋๊ฐ 2.4(๋๋ ๊ธฐํ)์์ ์๋ํ๋ ๋ฐ ์ฌ์ฉ๋์์ง๋ง ์ด์ ํ ์คํธ์์ ๋ค์ ์๋ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๊น? ๋์์ด๋์ ํ์ฌ ์ํ์์ ๋ด๊ฐ ๋์น๊ณ ์๋ ๊ฒ์ด ์์ต๋๊น?
ํํฐ์ ๋ฆ์ด์ ์ฃ์กํฉ๋๋ค. @wjk ๋ ๊ทธ์ ์ฒซ ๋ฒ์งธ ์์ ์ผ๋ก ๊ทธ๊ฒ์ ๋ชป ๋ฐ์์ต๋๋ค.
- MSIX๋ ๋ชจ๋ ํ๋ฅญํ์ง๋ง MSIX๊ฐ ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ์ ํ์๋ก ํ๋ ๋ ๋ณต์กํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์นํ๋ ๋ฐ ์ฌ์ ํ ์ข์ MSI๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ ํ์ํ Authenticode ์ธ์ฆ์๊ฐ ์ผ๋ง๋ ๋น์ธ๊ธฐ ๋๋ฌธ์ MSIX๋ฅผ ์ฌ์ฉํ๊ธฐ๊ฐ ๊บผ๋ ค์ง๋๋ค.
์ ๋ MSIX์ ๋งค๋ ฅ์ ์ ๋ง ๊ฐ์ฌํ์ง๋ง ์ด ์ธ์ฆ์ ์๋ช ์๋ฌด๋ ์ ์๊ฒ ์์ด ๊ฑฐ๋ ์ฐจ๋จ๊ธฐ์ ๋๋ค. ํด๋์ ๋ฐ์คํฌํฑ ์ค์น ํ๋ก๊ทธ๋จ ํ๊ฒฝ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ ์ ํ SCM ์นํ์ ์ธ ์ค์น ํ๋ก๊ทธ๋จ ๋ง๋ฒ์ฌ๊ฐ ํ์ํฉ๋๋ค. MSIX์ ๊ฐ์ ์ฌํญ์ ์ฌ์ฉํ๊ณ ๋ณด๋ค ํ๋์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํ Microsoft Store ๋ฐ ์ธ์ฆ ์๊ตฌ ์ฌํญ ์์ด MSI ์ค์น ํ๋ก๊ทธ๋จ์ ์ ๋ฒ์ ์ ๋ง๋๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ์๋ง๋ ์ด๊ฒ์ด ํ์ฌ ๋ก๋๋งต์ ๋์ด๋ "๋น MSIX ๋ฐฐํฌ ์ง์" ๊ธฐ๋ฅ์ด ์๋ฏธํ๋ ๋ฐ๊ฐ ๋ฌด์์ ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๊ธฐ์ ์ ์ํด ์ด์ ๋ฆด๋ฆฌ์ค๋ก ๋ง๋ค์ด์ง์ง ์๋ ํ 3.x๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ ๊ฐํ ๊ฒ ๊ฐ์ต๋๋ค. VS Installer ํ๋ก์ ํธ๋ ๋น๊ทน์ ์ผ๋ก ์ค๋๋์๊ณ ์์ค ์ ์ด์ ์ ํ ์น์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ํฉ๋๋ค. ๐
@Chiramisu ์ ๋ ๊ทธ ์๊ฒฌ์ ๋์ํ์ง๋ง ํผ๋์ค๋ฝ์ต๋๋ค. ์ฌ์ด๋
@Chiramisu WiX๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? ๋ชจ๋ MSI ๊ธฐ๋ฐ ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ฉฐ ๋งค์ฐ ์ ์๋ํฉ๋๋ค. Visual Studio ํ์ฅ ๋ ์์ผ๋ฏ๋ก ๋ค์ํ ์ปดํ์ผ ๋ช ๋ น์ ์๋ํํ๋ WiX ํ๋ก์ ํธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
@robloo UWP๋ฅผ ์นํธํ๋ ์ฌ๋์ผ๋ก์ ๊ทธ๋ค์ ๋๋ฅผ ์์์ต๋๋ค. ๊ทธ๋ค์ ํผ๋์ ์ ๋ฆฌํ ๋๊น์ง WPF์ Win32์ ๋๋ค.
C++/WinRT๋ ์ ์น์ ์ธ ์์ง์์ด์๊ณ ISO C++๊ฐ ๊ฒฐ๊ตญ ๋ฆฌํ๋ ์ ๋ฐ ๋ฉํํด๋์ค ์ง์์ ์ ๊ณตํ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ Visual Studio ํ์ด C++/CX ๊ฒฝํ์ ๋ณต์ ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ผ๋ ๋ง์ ๋ค์์ต๋๋ค.
์ธ๊ธํ๋ฏ์ด IDL ํ์ผ์ ํธ์งํ๋ ๊ฒ์กฐ์ฐจ๋ ์์ ๋ฉ๋ชจ์ฅ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ค๋ฅด์ง ์์ต๋๋ค.
.NET์์ ์ฐ๋ฆฌ๋ ๋ชจ๋ UWP ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ Microsoft๋ฅผ ์ฐธ์์ผ ํ์ง๋ง C++/CLI์ ๊ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ C++/CX์์๋ ์ด๋ป๊ฒ๋ ๊ฐ๋นํ ์ ์์์ต๋๋ค. ์ด์ C++/WinRT๋ฅผ ์ฌ์ฉํ์ฌ ATL๋ก ๋์๊ฐ๋๋ค.
๊ทธ๋ฐ ๋ค์ Reunion ๋ฌธ์ ํ ๋ก ๊ณผ ์ ๋ฐ์ดํธ ๋ก๋๋งต์ ์ฝ์ผ๋ฉด ๋ฐฉํฅ์ ์์ ํ๋ ๋ฐ ๋ช ๋ ์ด ๊ฑธ๋ฆด ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
WPF ๋ฐ Win32๋ ์ค๋๋์์ ์ ์์ง๋ง ๋ค์ ์์ฑํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์์ง ์๊ณ ์ฌ๊ธฐ์ ์๊ณ ์๋ํฉ๋๋ค.
๊ณ์ ๋ฐ๋ผ๊ฐ ์ ์๋๋ก C++/WinRT๋ฅผ ์ฌ์ฉํ IDL ํธ์ง์ด ๋ฌด์์ธ์ง ์๋ ค์ฃผ์ค ์ ์์ต๋๊น? co_await ๋ฐ ๊ธฐํ C++ 17 ๊ตฌ๋ฌธ์ ๋ํด ๋ด๊ฐ ๋ณธ ๋ฐ์ ๋ฐ๋ฅด๋ฉด C++/CX์์ ๋ณต์ก์ฑ์ด ํฌ๊ฒ ์ฆ๊ฐํ ๊ฒ ๊ฐ์ต๋๋ค.
MS? ๋๊ตฐ๊ฐ ๊ทธ ์ฃผ์์ ์ ๋ง ์ข์ ๋ํผ๋ฅผ ๋ง๋ค์ง ์๋ ํ C++ 17 ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ C++/WinRT๊ฐ ๋๋ฌด ๋ณต์กํ๊ณ ํ์ฌ ๋์์ธ๊ณผ ๋๋ฌด ๋ค๋ฅด๋ค๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ์์ต๋๊น? C++/WinRT๋ฅผ ํฉ๋ฆฌ์ ์ผ๋ก ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋๋ก C++ 17์ฉ์ผ๋ก ์ผ๋ถ "์ฐ์ํ ๋ํผ"๋ฅผ ๋ง๋ค ์ ์์ ๋งํผ C++/CX๋ฅผ ์ ์งํ ์ ์์์ต๋๊น?
(์ด์ ๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ํ๋๋์ง ๋ณด์ฌ์ฃผ๋ ๊ธฐ์ฌ์ ๋งํฌํ ๊ฒ์ด๊ณ , ๋๋ ์ด๋ฆฌ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค)
@lmcdougald ์์ง ์๋ํ์ง ์์์ต๋๋ค. ๋ด ํน์ ํ๋ก์ ํธ๋ ์ฌ์ ํ .NET Framework 3.5์ ์์ต๋๋ค. ๋ด๊ฐ ์์ง. ์์ง ์ ๋ฐ์ดํธ๊ฐ ํ์ฉ๋์ง ์์์ผ๋ฏ๋ก ์ค์น ํ๋ก๊ทธ๋จ ๊ธฐ์ ์ด ์ด ๊ณ ๋ ํ๋ ์์ํฌ์ ํจ๊ป ์๋ํ ๊ฒ์ธ์ง์ ๋ํด ๊ณ ๋ฏผํ๊ณ ์์ต๋๋ค. ๐
@wjk ๋๋ ๊ณผ๊ฑฐ์ ๊ทธ๊ฒ์ ์กฐ์ฌํ์ง๋ง ์๋์, ์์ง ์๋ํ์ง ์์์ต๋๋ค. ์์ ๋ด์ฉ์ ๊ฐ์ํ๋๋ผ๋ ๊ธฐ์กด ํ๋ก์ ํธ์์ ๊ทธ๋๋ก ์๋ํ ์ ์๋ ์ ์ผํ ๊ธฐ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ํน์ ์ค๋๋ ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ WinForms ์ฑ์ ์ด๊ฒ์ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? ๋ถํํ๋ ์ ๋ ์ธ๋ก์ด ๊ฐ๋ฐ์์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์ ๋ณด๋ด๋ ๋ฐฉ์์ ๋ํด ๊ทน๋จ์ ์ธ ํธ๊ฒฌ์ ๊ฐ์ ธ์ผ ํ๊ณ ์๋ก์ด ๊ธฐ์ ์ ์คํํ ์์ ๊ฐ ์์ต๋๋ค.
์น์ ํ
@Chiramisu ์, WiX๋ ์ด์ ๋ฒ์ ์ .NET Framework์์ ์๋ํ๋ฉฐ ์, winforms ์ฑ์์๋ ์๋ํฉ๋๋ค. ์์ MSI ํ์ผ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ WiX๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ฌด์์ด๋ ์ค์นํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ฐฐ์ฐ๋ ๊ด์ ์์, ๋๋ ๊ธฐ๋ณธ ํํ ๋ฆฌ์ผ ๋ถํฐ ์์ํ ๊ฒ์ ๋๋ค. ๋ํ .NET์ด ์ค์น๋์ด ์๋์ง ๊ฐ์ง ํ๋ ๋ฐฉ๋ฒ๊ณผ WiX๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์์ NGEN ์ ๋ฐฉ๋ฒ ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค. ์ฑ์์ ์ด๋ฌํ ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. Visual Studio ํ์ฅ์๋ ์ถ๊ฐํ ์ฌ๋ฐ๋ฅธ ๋ผ๋ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ์ฌ๋ฌ ํ๋ก์ ํธ ํ ํ๋ฆฟ๋ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. (์ฐธ๊ณ : ๋ถํธ์คํธ๋ํผ ํ ํ๋ฆฟ์ ํจ์ฌ ๋ ๊ณ ๊ธ ์ฃผ์ ์ด๋ฏ๋ก ์ฌ์ฉํ์ง ๋ง์ญ์์ค.) ์ด๊ฒ์ด ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
@Chiramisu ๋๋ ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ์ด ๋๋ฌด ํผ๋ ์ค๋ฝ์ต๋๋ค. WinUI 3.0 ํ๋ก์ ํธ๊ฐ ์๋ ํ์ฌ ํ๋ก์ ํธ๋ฅผ์ํ ํจํค์ง ๋๊ตฌ๋ฅผ ์ฐพ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
.NET Framework 3.5๋ฅผ MSIX๋ก ํจํค์งํ ์ ์๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. VS 2019์์ ํจํค์ง ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ฑ์ ๋ํ MSIX ํจํค์ง๋ฅผ ๋น๋ํ ๋ค์ ๊ธด ์ ํ์ ๋ค์ ์ํํ๊ฒ ์งํํ ์ ์์ง๋ง ๋ง์ ์์ ์ด ํ์ํฉ๋๋ค.
WinUI 3.0์ ๊ณต์์ ์ผ๋ก .NET 3.5๋ฅผ ์ง์ํ์ง ์์ผ๋ฉฐ ์๋ง๋ ์ด๋ค ๋ฒ์ ์์๋ .NET Framework๋ฅผ ์ง์ํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ธฐ์กด ํจํค์ง ํ๋ก์ ํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ .NET 4.6(๋๋ ์ด์์ ์ผ๋ก๋ 4.8 ์ด์)์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ํ๋ฅผ ์์ํ๊ฒ ์ต๋๋ค. ์์กฐ๋กญ๊ฒ ์งํ๋๋ค๋ฉด ์ ๋ฐ์ดํธ๋ .NET 4.6+ ์ฑ์์ ์ฐธ์กฐํ๋ .NET Standard ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ธฐ๋ฅ ์ ํ์ ์์ํ๊ฒ ์ต๋๋ค.
.NET 4.6 ์ฑ์ด ์์ ์ ์ด๊ณ ํ ์คํธ๋๋ฉด MSIX ํจํค์ง ํ๋ก์ ํธ์ ๋ํ ์๋ ์ ๋ฐ์ดํธ๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค. .NET Standard ๋จ๊ณ ํ์๋ .NET Core 3.1(๋๋ 5, ํ์ง๋ง LTS ์ํ๊ฐ ์กฐ์ง์ ์๋ฏธ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค)์์ ๊ฑฐ์ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ ํค๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๋ค์ ํ ์คํธํ ๋ค์ MSIX๋ฅผ ์ด ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ์ ํํฉ๋๋ค.
์ด ์์ ์์ WinForms์์ WinUI๋ก ์ ํํ๋ ๊ฒ์ WinUI๋ฅผ ๋ฐฐ์ฐ๊ณ ์ธํฐํ์ด์ค๋ฅผ ๋ค์ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค. ๋ค์ ์ ํ๋ก์ ํธ ํค๋๋ฅผ ๋ง๋ค๊ณ .NET Standard ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌํ + ์ฐธ์กฐํ๊ณ ํ ์คํธํ ๋ค์ ์ด ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ํจํค์ง๋ฅผ ์ ํํฉ๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ์ด๋ค ์ฃผ์ด์ง ์์ ์์ ๋งค์ฐ ๋ค์ํ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ง ์๊ณ ํ๋ํ๋ฅผ ์งํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. MSIX ํจํค์ง ๋ฐ .NET 4.6 + .NET Standard ๋จ๊ณ๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฐ์ ์์๋ฅผ ๋ก๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํจ์ฌ ๋ ๋ง์ ๋์๋ง ๋๊ตฌ์ ์ต์ .NET ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๋ํ ์ฐ๊ฒฐ์ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. .NET 3.5๊ฐ ์กด์ฌํ๋ ํ ์๋ช ์ฃผ๊ธฐ๊ฐ 1/10์ด๋ผ๋ ์ ์ ๊ณ ๋ คํ ๋, ์๋๋ฌ .NET 5๋ก ์ ํํ๋ ๊ฒ์ ๋จ๊ธฐ์ ์ผ๋ก ์กฐ์ง์ ์ข์ง ์์ ์๊ฐ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๊ณ์ ๋ฐ๋ผ๊ฐ ์ ์๋๋ก C++/WinRT๋ฅผ ์ฌ์ฉํ IDL ํธ์ง์ด ๋ฌด์์ธ์ง ์๋ ค์ฃผ์ค ์ ์์ต๋๊น? co_await ๋ฐ ๊ธฐํ C++ 17 ๊ตฌ๋ฌธ์ ๋ํด ๋ด๊ฐ ๋ณธ ๋ฐ์ ๋ฐ๋ฅด๋ฉด C++/CX์์ ๋ณต์ก์ฑ์ด ํฌ๊ฒ ์ฆ๊ฐํ ๊ฒ ๊ฐ์ต๋๋ค.
MS? ๋๊ตฐ๊ฐ ๊ทธ ์ฃผ์์ ์ ๋ง ์ข์ ๋ํผ๋ฅผ ๋ง๋ค์ง ์๋ ํ C++ 17 ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ C++/WinRT๊ฐ ๋๋ฌด ๋ณต์กํ๊ณ ํ์ฌ ๋์์ธ๊ณผ ๋๋ฌด ๋ค๋ฅด๋ค๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ์์ต๋๊น? C++/WinRT๋ฅผ ํฉ๋ฆฌ์ ์ผ๋ก ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋๋ก C++ 17์ฉ์ผ๋ก ์ผ๋ถ "์ฐ์ํ ๋ํผ"๋ฅผ ๋ง๋ค ์ ์์ ๋งํผ C++/CX๋ฅผ ์ ์งํ ์ ์์์ต๋๊น?
(์ด์ ๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ํ๋๋์ง ๋ณด์ฌ์ฃผ๋ ๊ธฐ์ฌ์ ๋งํฌํ ๊ฒ์ด๊ณ , ๋๋ ์ด๋ฆฌ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค)
์ผ๋ฐ C++์๋ .winmd ํ์ผ์ ๋ง๋๋ ๋ฐ ํ์ํ ํ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ WinRT ํด๋์ค๋ฅผ .hpp ๋ฐ .cpp ์์ .idl ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค.
co_await
๋ .then([=](Foo^ thing) { })
์ด๋์๋ ์ฐ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ณต์กํ๋ฉฐ C#์ await
๊ตฌ๋ฌธ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
๋ค์์ ๊ธฐ๋ณธ ๋ฐํ์ ๊ตฌ์ฑ ์์ ํ๋ก์ ํธ์ ์(idl + hpp + cpp)์ ๋๋ค.
namespace RuntimeComponent6
{
runtimeclass Class
{
Class();
Int32 MyProperty;
}
}
#pragma once
#include "Class.g.h"
namespace winrt::RuntimeComponent6::implementation
{
struct Class : ClassT<Class>
{
Class() = default;
int32_t MyProperty();
void MyProperty(int32_t value);
};
}
namespace winrt::RuntimeComponent6::factory_implementation
{
struct Class : ClassT<Class, implementation::Class>
{
};
}
#include "pch.h"
#include "Class.h"
#include "Class.g.cpp"
namespace winrt::RuntimeComponent6::implementation
{
int32_t Class::MyProperty()
{
throw hresult_not_implemented();
}
void Class::MyProperty(int32_t /* value */)
{
throw hresult_not_implemented();
}
}
๋ค์์ ์์ co_await ์์ ๋๋ค.
void PrintFeed(SyndicationFeed const& syndicationFeed)
{
for (SyndicationItem const& syndicationItem : syndicationFeed.Items())
{
std::wcout << syndicationItem.Title().Text().c_str() << std::endl;
}
}
IAsyncAction ProcessFeedAsync()
{
Uri rssFeedUri{ L"https://blogs.windows.com/feed" };
SyndicationClient syndicationClient;
SyndicationFeed syndicationFeed = co_await syndicationClient.RetrieveFeedAsync(rssFeedUri);
PrintFeed(syndicationFeed);
}
์๋ ํ์ธ์,
์ฐ๋ฆฌ๋ ๊ทํ์ ํผ๋๋ฐฑ์ ์ฝ๊ณ ๋ฌธ์ ์ ์ ๋ํด ๊ธฐ๋กํ๊ณ ์์ต๋๋ค.
@ericleigh007 XAML Designer๋ ๊ณ ๊ฐ ํผ๋๋ฐฑ์ ์์งํ ํ ๊ฐ๋ฐ์์ ๋ด๋ถ ๋ฃจํ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ๊ณ ๊ฐ์ ๊ณ ์ถฉ์ด์๊ธฐ ๋๋ฌธ์ ์ข ๋ฃ๋์์ต๋๋ค. Hot Reload์ Live Visual Tree๊ฐ ์์๊ถ์ ์ฌ๋์ต๋๋ค. In-app-toolbar๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ 3์ ๋ง๋ค ์ ์๋ค๋ ๋ ๋ค๋ฅธ ์๋จ์ ๋๋ค. XAML ๋์์ด๋๊ฐ ์ธ์ ๋ ๊ฒ์ธ์ง ๋ช ํํ์ง ์๋ค๋ ๊ฒ์ ๋ง์ต๋๋ค. ๊ธฐ๋ฅ ๋ก๋๋งต ์๊ฐ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ํ์ฌ ์์ง๋์ด๋ง ๊ณํ์ ๋ฐ๋ฅด๋ฉด 3.0 RTM์ ๋ฒ์ด๋ฌ์ผ๋ฏ๋ก 3.0 ์ดํ์ ๋๋ค.
@pjmlp C++/WinRT์ ๋ํ ๊ทํ์ ๊ทธ๋ฆผ๊ณผ IDL ์ถ๊ฐ ํ์์ฑ์ ๊ณต๊ฐํฉ๋๋ค. C++/CX๊ฐ ์ด ์ธก๋ฉด์์ ํจ์ฌ ๋ ์ข์ต๋๋ค. C++/WinRT ํ๊ฒฝ ๊ฐ์ ์ ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํด์ผ ํ๋ ๋ ๋ค๋ฅธ ์ฃผ์ ์ ๋๋ค. Live Visual Tree ๋ฐ Hot Reload์ ๊ฐ์ ๋๊ตฌ๋ C# ๋ฐ C++ ๋ชจ๋์์ ์๋ํ์ง๋ง C++์๋ง ์ํฅ์ ๋ฏธ์น๊ณ ๋ณ๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ํน์ ํญ๋ชฉ์ด ์์ต๋๋ค. ํ์ฌ ์์ง๋์ด๋ง ๊ณํ์ ๋ฐ๋ฅด๋ฉด IDL ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ 3.0 RTM์์ ๋ฒ์ด๋ฌ์ต๋๋ค.
@robloo , ์ฐ๋ฆฌ๋ WPF๋ก ์์ฑ๋ ๋ฐ์คํฌํ ์ฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค. C++/WinRT๋ WinUI ์ํ๊ณ์ ์ฒซ ๋ฒ์งธ ์๋ฏผ์ ๋๋ค. ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ WinUI๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก ์ ์ ํ ๋๊ตฌ์ ์ธ์ด๋ฅผ dogfoodํ๊ณ ์์ต๋๋ค.
@Chiramisu "๋น MSIX ๋ฐฐํฌ ์ง์"์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ค๋์ MSIX๋ฅผ ์ฌ์ฉํ์ฌ Desktop WinUI 3 ์ฑ์ ์ค์นํ๊ณ ์คํํด์ผ ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ด๋ฌํ ํ์์ฑ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค. Desktop WinUI 3 ์ฑ์ ์คํํ๋ ค๋ฉด .EXE์์ ๋ ๋ฒ๋ง ์คํํ๋ฉด ๋ฉ๋๋ค. ์ฑ์ ์ค์นํ๋ ค๋ฉด xcopy๋ฅผ ์ํํ๋ฉด ๋ฉ๋๋ค(์๋ฌด๊ฒ๋ ์๋ช ํ ํ์๊ฐ ์์). ๊ธฐ๋ณธ์ ์ผ๋ก WiX์ ๊ฐ์ ๋ค๋ฅธ ํจํค์ง ๋ฐ ์ค์น ์์คํ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@marb2000 ๋ฌธ์ ๋ฅผ ์ธ์
์ง๊ธ์ ASP.NET, WFP ๋ฐ Win32์ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. Microsoft๊ฐ ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๊ฐ UAP => UWP์์์ ๊ฐ์ด ์๋ ๊ตฌ์ฑ์ ๋๋ฆฌ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ์์ฑํ๋ ๋ฐ ์ง์ณค์์ ๊นจ๋ซ๊ณ UWP์ ๋ํ ํ์ ์กฐ์น๋ฅผ ์ทจํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ ํ, .NET Framework์์ .NET Core๋ก, ๋๋ ์ C++/CX => C++/WinRT.
์ด๊ฒ์ Windows 8 ๋์ ์ดํ ์ง์์ ์ธ ์ฌ์์ฑ์ผ๋ก ์ฝ๊ฐ ์ค๋ง๊ฐ์ ๋๋ผ๋ Windows ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ๋ณด์ปฌ ๋ฉค๋ฒ๋ก์ ํผ๋๋ฐฑ์ ๊ฐ๊น์ต๋๋ค.
@pjmlp Windows API์ ๋ํ (ํ์ค ํธํ) C++ ๋ํผ์ธ C++/WinRT๋ฅผ ์ ๋นํํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๊ตฌ(๋ฐ IDL ํ์ผ ๋ฑ) ์์ด C++/WinRT๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
@pjmlp Windows API์ ๋ํ (ํ์ค ํธํ) C++ ๋ํผ์ธ C++/WinRT๋ฅผ ์ ๋นํํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๊ตฌ(๋ฐ IDL ํ์ผ ๋ฑ) ์์ด C++/WinRT๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋ฌธ์ ์ ๋๋ค. Visual Studio์์ C++/CX์ ๊ฐ๋ฐ ๊ฒฝํ์ ๋นํด ๋๊ตฌ ์ง์์ด ์ ํ ์๋ค๋ ๊ฒ์ ๋๋ค.
IDL ํ์ผ์ ๋ํ ํธ์ง ์ง์์ด ์์ผ๋ฉฐ intelisense๋ ๊ณ ์ฌํ๊ณ ๊ตฌ๋ฌธ ๊ฐ์กฐ๋ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์ฑ๋ ๋ฒ์ญ ๋จ์๋ฅผ ์๋์ผ๋ก ๋ณต์ฌํ๊ฑฐ๋ ๋ณํฉํ๋ผ๋ ์ง์๋ฅผ ๋ฐ์ต๋๋ค!
์ด๊ฒ์ ์๋ ์ ATL์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
ISO C++ ํธํ์ฑ์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. UWP๋ ์ด์จ๋ Windows ์ ์ฉ์ด๋ฉฐ ์ธ์ด ํ์ฅ์ด ์๋ C++ ์ปดํ์ผ๋ฌ๋ ์์ต๋๋ค.
WRL์ ์ ์ผํ ์ฌ์ฉ์์๋ WinDev๋ฅผ ์ ์ธํ๊ณ ๋ ์ด๋ฅผ ์งํ ์ํฉ์ผ๋ก ๋ณผ ์ ์๋ ์ฌ๋์ด ์์ต๋๋ค.
@pjmlp ,
ISO C++ ํธํ์ฑ์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. UWP๋ ์ด์จ๋ Windows ์ ์ฉ์ด๋ฉฐ ์ธ์ด ํ์ฅ์ด ์๋ C++ ์ปดํ์ผ๋ฌ๋ ์์ต๋๋ค.
๋๊ท๋ชจ C++ ํ๋ซํผ ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ์ฐ๋ฆฌ์๊ฒ๋ ํ์ค์ ์ค์ํ๋ ๊ฒ์ด ํฐ ๋ฌธ์ ์
๋๋ค. C++/CX์ ์ ํ์ ๋์ฐํ์ต๋๋ค(์์ ํฌ์ธํฐ๊ฐ ์๋ ๋ฉค๋ฒ ๋ณ์, ๋ชจ์! ( ^
) ๋ฑ). ํ์ฌ ๋๊ท๋ชจ C++/CLI interop ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ๋ฌธ์ ์ ์ด ๋๋ฌด ๋ง์ ๋์ดํ ์ ์์ต๋๋ค.
IDL ํ์ผ์ ๋ํ ํธ์ง ์ง์์ด ์์ผ๋ฉฐ intelisense๋ ๊ณ ์ฌํ๊ณ ๊ตฌ๋ฌธ ๊ฐ์กฐ๋ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์ฑ๋ ๋ฒ์ญ ๋จ์๋ฅผ ์๋์ผ๋ก ๋ณต์ฌํ๊ฑฐ๋ ๋ณํฉํ๋ผ๋ ์ง์๋ฅผ ๋ฐ์ต๋๋ค!
๋ค์ ๋งํ์ง๋ง, C++/WinRT์ ๋๊ตฌ๋ฅผ ๋ณํฉํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ 2๊ฐ์ ๋ณ๊ฐ์ ๊ฒ์ ๋๋ค. C++/WinRT๋ WinRT API๋ฅผ ๋๋ฌ์ผ C++ ๋ํผ์ ๋๋ค. IDL์ ์ฝ๋ ์์ฑ์ ์ํ ๊ฒ์ ๋๋ค. ์, ๋์ฐํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋๋ฌด ๋๋น ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ ๋ Windows ์ ์ฉ ์ฑ์ ์์ฑํ๊ณ MSVC๊ฐ ์คํจํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ํ์ค ์ค์์ ๊ด์ฌ์ ๊ฐ๊ณ ์์ต๋๋ค.
@MarkIngramUK
๋ค์ ๋งํ์ง๋ง, C++/WinRT์ ๋๊ตฌ๋ฅผ ๋ณํฉํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ 2๊ฐ์ ๋ณ๊ฐ์ ๊ฒ์ ๋๋ค. C++/WinRT๋ WinRT API๋ฅผ ๋๋ฌ์ผ C++ ๋ํผ์ ๋๋ค. IDL์ ์ฝ๋ ์์ฑ์ ์ํ ๊ฒ์ ๋๋ค. ์, ๋์ฐํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋๋ฌด ๋๋น ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ ๋ MS-DOS 3.3 ์ดํ๋ก Microsoft ํ๋ซํผ์ ์ฝ๋ฉํด ์์ผ๋ฉฐ 1992๋ Turbo C++ 1.0๊ณผ ํจ๊ป ๋ด ๋๊ตฌ ์์์ C++๋ฅผ ์ถ๊ฐํ์ผ๋ฉฐ C++ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ๋๋ถ๋ถ์ Borland ๋ฐ Microsoft ์ ํ์ ์ฌ์ฉํ์ต๋๋ค. C++/WinRT์ ๋ํ ๊ฐ์๊ฐ ํ์ํ์ง ์์ต๋๋ค.
ํ์คํ ๊ทธ๋ ์ง ์์ ๊ฒ์ C++ Builder ๋ฐ Qt(Qt Designer ํฌํจ) ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ์ผ์นํ๋ฉฐ, C++/CX๋ 25๋ ํ์ ๊ฒฐ๊ตญ ๋ฐ๋ผ์ก์ ๊ฒ์ด๋ผ๋ ์ฝ์์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ถ๋ช ํ ์ฌ๊ธฐ ์๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ATL 3.0์ด ํฌํจ๋ Visual C++ 6.0์ ์ํ๊ณ ๋๋จธ์ง๋ .NET 5, WPF ๋ฐ Win32 ๋ฐ์คํฌํฑ ๊ฒฝํ์ ๊ณ ์ํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์๋ ์์์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด C++/WinRT๋ ๊ทธ๋๋ก ๋ฐ๋ ธ์ต๋๋ค.
์์งํ ๋งํด์, C++/WinRT๋ ์ด์ ๊ฑฐ์ 4๋ ์ด ๋์๊ณ , Microsoft๋ ๊ตฌ๋ฌธ ๊ฐ์กฐ ๋ฐ ์ธํ ๋ฆฌ์ผ์ค์ ๋ํ ์ง์์กฐ์ฐจ ์ ๊ณตํ ์ ์์์ต๋๊น?
์ฐ๋ฆฌ ์ค ์ผ๋ถ๊ฐ ๋ฉ๋ชจ์ฅ++(๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์)๋ก ๋ง๋ ๊ฒ, ์ ๋ง์?
์ฐ์ ์์๊ฐ ์ด๋์ ์๋์ง ํ์คํ ๋ณด์ฌ์ฃผ๋ฉฐ Windows 8 ์ดํ๋ก ๋๋ฌด ๋ง์ ์ฌ์์ฑ์ด WinUI์ ์ฑํ๋ ๊ฒ์ ๋๋ค.
@pjmlp , ๋ค์ ๋น์ ์ ์๋ชป๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. C++/WinRT๋ C++์ด๋ฏ๋ก ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์๊ฐ ์๊ณ ์ธํ ๋ฆฌ์ผ์ค๋ฅผ ์ง์ํฉ๋๋ค. ๊ฐ์ง๊ณ ์๋ ๋ค๋ฅธ C++ ์ฝ๋์ ๋์ผํฉ๋๋ค.
IDL ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์ ๋ฐ IDL์์ .hpp ๋ฐ .cpp์ ๊ธฐ๋ณธ ๊ตฌํ์ ์์ฑํ๋๋ก ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ด IDE ํตํฉ์ด ๋ ๋์ ์ ์์ต๋๋ค(์: ํค๋์ ์ ์ ์์ด ์ ์ธ๋ ํจ์๊ฐ ํ์ฌ ๋ น์ ๋ฌผ๊ฒฐ์ ์ผ๋ก ํ์๋๋ ํ๋กฌํํธ) ํ๋ ์์ฑ) C++/CX๋ก ๋์๊ฐ๋ ๊ฒ์ ์ ๋ค์ด๊ทธ๋ ์ด๋ IMO์ ๋๋ค. ๋ด๊ฐ C++/CX์ ํจ๊ป ์ฌ์ฉํ๋ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ณต์ ์ฝ๋๋ฅผ ํตํฉํ๊ณ ๋ด ํ๋ก์ ํธ๋ฅผ C++20์์ C++17๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ๋๋ฌด ๋ง์ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค(ํฌ๊ธฐํ๊ณ ์ถ์ง ์์ต๋๋ค. 20 ๋์๊ฒ ๋๋ฌด ๋ง์ ์ข์ ๊ฒ์ ์ค๋ค).
C++/WinRT๋ ๋ํ ํ๋ก๊ทธ๋จ์ด ์์ฑํ์ง ์๊ณ WinRT ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ๋ C++/CX๋ณด๋ค ํจ์ฌ ๋ ๋ฐฉํด๊ฐ ๋ฉ๋๋ค.
Qt ๋ฐ C++ Builder๋ ๋๋ถ๋ถ ํ์ค์ ์ค์ํ๋ C++์์ ๊ฒฝํ์ ์์์ต๋๋ค(Qt์๋ Qt MOC๋ผ๋ IDL๊ณผ ์ ์ฌํ ๊ฒ์ด ์์ต๋๋ค). ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด VS๋ ๊ฐ๋ฅํฉ๋๋ค. DevDiv์ ๋๊ตฐ๊ฐ๋ก๋ถํฐ ๋ ๋ง์ ์ฌ๋์ด ํ์ํ ๋ฟ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ์ @sylveon ์ ๋ํด ์ธ๊ธํ๋ฏ์ด ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋ก ์์ ๋กญ๊ฒ ๋น๋ํ ์ ์์ต๋๋ค(ํ์ฌ MSVC ๋ฐ Clang/LLVM์ผ๋ก ๋น๋). C++/CX ๋๋ ๊ธฐํ MS ํ์ฅ์ ์ฌ์ฉํ๋ฉด ์ด๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
@MarkIngramUK ๋ฐ @syveon
๋๋ ์ด ์ค๋ ๋๋ฅผ ๋๋๊ณ , WinUI ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ๋๊ตฌ ๊ฐ์ ์ ์ํด ๋์ ๊ฐ์ ํผ๋๋ฐฑ์ ํ์ํ์ง ์๋๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
ํ์ค ํธํ C++/WinRT๋ก ์ฆ๊ฑฐ์ด ์๊ฐ์ ๋ณด๋ด์ญ์์ค.
'no ์ผ์ดํฐ๋ง' ์คํ๋ฅผ ์์ ํ๊ธฐ ์ํด ํธ์งํ ์ ์๋์.. '์ง๊ธ...'์ด ๋์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
@pjmlp ๋๋ ๋น์ ์ด ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ ํํ ์ดํดํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
1๋ ์ ๋ ์ ์ UWP C++/CX ์ฝ๋๋ฅผ C++/WinRT๋ก ์ด์ํ๋ ์์ด๋์ด๋ฅผ ํฌ๊ธฐํ์ต๋๋ค. ์ด์์ ๋ํ ์ธ์ผํฐ๋ธ๋ MSVC++์ ๋ด๊ฐ ์ฝ 18๊ฐ์ ์ ์ ๋ณด๊ณ ํ์ง๋ง ๋จ์ํ ์์ ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๋ฒ๊ทธ๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ Clang์ ์ฌ์ฉํ์ฌ UWP ์ฑ์ ์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ Visual Studio๋ Clang์ ์ฌ์ฉํ์ฌ UWP ์ฑ ๋น๋๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ํ๋ฅญํฉ๋๋ค. C++/WinRT์ "ISO C++ ์ ์ฉ" ์ด์ ์ด ๋ฐ๋ก ์ฌ๋ผ์ก์ต๋๋ค. ์ฌ๊ธฐ์ C++/WinRT๋ฅผ ํตํด C++/CX ์ฝ๋ ๊ธฐ๋ฐ์ ์ด์ํ๋ ๊ฒ์ 20๋ ์ ์ผ๋ก ์๊ฐ ์ฌํ์ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค๋ ์ฌ์ค์ ์ถ๊ฐํฉ๋๋ค.
์ ๋ ๋ณธ์ง์ ์ผ๋ก Android/iOS ์ฑ์ Windows๋ก ์ด์ํ๋ ๊ฒ์ ํฌ๊ธฐํ์ต๋๋ค. Android/iOS์ฉ ๊ฐ๋ฐ ์ธ์ Windows ์ฑ ๊ฐ๋ฐ์ธ clusterfuck์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ฐ๋ฆฌ์ ๊ฐ์ ์์ ์์ ์์ ๋จ์ํ ์คํ ๊ฐ๋ฅํ์ง ์์ต๋๋ค.
@MarkIngramUK ๋๊ตฌ๊ฐ ๋งค์ฐ ์ค์ํ๋ค๋ ์ ์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์ ์ ํ ํด๋ง ๋ถ์กฑ์ ๋ณด์ํ ์ ์๋ ์์์ด ์๋ ๊ฒ์ ์๋๋๋ค.
์ด์ ๋ด ๋ง์ ๋ง์น ํ ๋ด ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
C++/CX์ ํจ๊ป WinUI 3 ์ฌ์ฉ์ ์ง์ํฉ๋๋ค. ์์ฒด ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ ๋ฆฌ์์ค๊ฐ ์๋ ํ์ฌ์์ C++/WinRT์ฉ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด C++/WinRT๋ก ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ง๊ธ์ ํ์คํ ์๋๋๋ค.
@pjmlp ๋๋ ๋น์ ์ด ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ ํํ ์ดํดํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
1๋ ์ ๋ ์ ์ UWP C++/CX ์ฝ๋๋ฅผ C++/WinRT๋ก ์ด์ํ๋ ์์ด๋์ด๋ฅผ ํฌ๊ธฐํ์ต๋๋ค. ์ด์์ ๋ํ ์ธ์ผํฐ๋ธ๋ MSVC++์ ๋ด๊ฐ ์ฝ 18๊ฐ์ ์ ์ ๋ณด๊ณ ํ์ง๋ง ๋จ์ํ ์์ ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ๋ฒ๊ทธ๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ Clang์ ์ฌ์ฉํ์ฌ UWP ์ฑ์ ์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ Visual Studio๋ Clang์ ์ฌ์ฉํ์ฌ UWP ์ฑ ๋น๋๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ํ๋ฅญํฉ๋๋ค. C++/WinRT์ "ISO C++ ์ ์ฉ" ์ด์ ์ด ๋ฐ๋ก ์ฌ๋ผ์ก์ต๋๋ค. ์ฌ๊ธฐ์ C++/WinRT๋ฅผ ํตํด C++/CX ์ฝ๋ ๊ธฐ๋ฐ์ ์ด์ํ๋ ๊ฒ์ 20๋ ์ ์ผ๋ก ์๊ฐ ์ฌํ์ ํ๋ ๊ฒ๊ณผ ๊ฐ๋ค๋ ์ฌ์ค์ ์ถ๊ฐํฉ๋๋ค.
์ ๋ ๋ณธ์ง์ ์ผ๋ก Android/iOS ์ฑ์ Windows๋ก ์ด์ํ๋ ๊ฒ์ ํฌ๊ธฐํ์ต๋๋ค. Android/iOS์ฉ ๊ฐ๋ฐ ์ธ์ Windows ์ฑ ๊ฐ๋ฐ์ธ clusterfuck์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ฐ๋ฆฌ์ ๊ฐ์ ์์ ์์ ์์ ๋จ์ํ ์คํ ๊ฐ๋ฅํ์ง ์์ต๋๋ค.
@MarkIngramUK ๋๊ตฌ๊ฐ ๋งค์ฐ ์ค์ํ๋ค๋ ์ ์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์ ์ ํ ํด๋ง ๋ถ์กฑ์ ๋ณด์ํ ์ ์๋ ์์์ด ์๋ ๊ฒ์ ์๋๋๋ค.
์ด์ ๋ด ๋ง์ ๋ง์น ํ ๋ด ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
C++/CX์ ํจ๊ป WinUI 3 ์ฌ์ฉ์ ์ง์ํฉ๋๋ค. ์์ฒด ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ ๋ฆฌ์์ค๊ฐ ์๋ ํ์ฌ์์ C++/WinRT์ฉ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด C++/WinRT๋ก ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ง๊ธ์ ํ์คํ ์๋๋๋ค.
๊ถ๊ธํด์ 18๊ฐ์ ์ ์ ๋ณด๊ณ ๋ ๋ฒ๊ทธ๋ ๋ฌด์์ ๋๊น? ์ด๋๊ฐ์ ๋งํฌ๊ฐ ์์ต๋๊น?
์๋
๋ฏธ๊ตฌ์,
___Android์ฉ Outlook์์ ํ์ ํ ํ ๋์ฐํ ์ํฉ์ ์์ ํ๊ธฐ ์ํด ์์ ํ์ต๋๋ค.__
Winrt ํ๋ซํผ์ด WINUI๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉํ๋ ํ๋ซํผ์ด๋ผ๊ณ ๋ง์ํ์ จ๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฐ ๋ฆด๋ฆฌ์ค์ ๋ํ ๋ชฉํ๋ฅผ ๋ช ํํ๊ฒ ๋ง๋ค ์ ์๋ ์์ด๋์ด๊ฐ ์์์ต๋๋ค.
IDL์ด ์์ฑํ๊ณ ํ์ผ์ ์๋์ผ๋ก ๋ณต์ฌํ๋ ๊ฒฝ์ฐ ๋ฌด๋ฆฌ๋ฅผ ํธ์ถํ๊ณ ๋๊ตฌ์์ ์์ ์ค์ธ ์ํ์ ์ผ์นํ๋๋ก ์์ ํ๋ ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/binding-property
์ฌ๊ธฐ๊ฐ ์๋๋ผ๋ฉด ๋ค๋ฅธ ๊ณณ์์ ๋ ผ์ํ ์ ์์ ๊ฒ์ ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ํนํ XAML ์คํ๋์ค์ ๊ฐ์ ์กด์ฌํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ XAML ๋์์ด๋์ ๋ํด ํ์ ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. (๋ง์ฝ IValueConverter
์ฌ์ฉํ๋ XAML์ ์ฑ๊ณต์ ์ผ๋ก ๋ก๋ํ ์ ์๋๋ก ์ผ๋ถ ์ฝ๋๋ฅผ ๋ก๋ํ ์๋ง ์๋ค๋ฉด ...
์ด์ ๊ฒ์๋ฌผ์์ ์ธ๊ธํ๋ฏ์ด C++/WinRT ์์ฒด์ C++17 ํ์ค ์ค์๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ Microsoft์ Visual C++ ์ปดํ์ผ๋ฌ๋ก ์ปดํ์ผํด์ผ ํ๊ธฐ ๋๋ฌธ์ C++/CX ์ฝ๋ ๊ธฐ๋ฐ์ C++/WinRT๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ธ์ผํฐ๋ธ๊ฐ ์์ต๋๋ค. ๊ทธ๋๋. ์ปดํ์ผ๋ฌ๋ฅผ ๊ต์ฒดํ ์ ์๋ค๋ฉด ์์ ํ ๋ฐ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ Visual Studio๋ Windows ๋ฐํ์ ๊ตฌ์ฑ ์์์ ๋ํ ์ปดํ์ผ๋ฌ ์ ํ์ ์ง์ํ์ง ์์ต๋๋ค. ํนํ ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ค๋ช ๋ ๋๋ก ๋ฐ์คํฌํฑ ์ฑ์์ ์ง์๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์ง์๋์ง ์๋ ์ด์ ๋ ์ ๊ฒ ๋ฏธ์คํฐ๋ฆฌ์ ๋๋ค. Clang ์ง์์ Windows ๋ฐํ์ ๊ตฌ์ฑ ์์์ ๋ํด ์ค์ ๋ก ํ์ฅ๋์ด์ผ ํฉ๋๋ค.
Clang์ ์ฌ์ฉํ์ฌ Android ๋ฐ iOS์ฉ ์ฝ๋ ๊ธฐ๋ฐ์ ์ปดํ์ผํ๊ณ ์์ต๋๋ค. Clang์ ์ฌ์ฉํ์ฌ Windows์ฉ ์ฝ๋ ๊ธฐ๋ฐ์ ์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ ์ค์ ๋ก C++/CX์์ ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํ๋ ๋งค์ฐ ์ข์ ์ด์ ์ ๋๋ค. ์ด์ ๋ํ Visual Studio ๊ธฐ๋ฅ ์์ฒญ ์ด ์ด๋ฏธ ์กด์ฌํ์ง๋ง Visual Studio ํ์์ ์ง๊ธ๊น์ง ์๋ฌด ๊ฒ๋ ์ํํ์ง ์์์ต๋๋ค.
C++ ํ์ค ์ค์๊ฐ ์๊ณ ๋ฐ์คํฌํฑ ์ฑ์ฉ Visual Studio์์ Clang ์ง์์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ง์ง๋ง ๋จ๊ณ๋ฅผ ์ํํ๊ณ Windows ๋ฐํ์ ๊ตฌ์ฑ ์์์ ๋ํ Clang ์ง์์ ์ ๊ณตํ์ฌ C++/CX์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์ค์ ์ด์ ๋ฅผ ์ ๊ณตํ์ญ์์ค.
ํ์ค ์ค์๋ ์๋น์์๊ฒ ์ ์ฉํฉ๋๋ค. ์์ฐ์๊ฐ MSVC๋ฅผ ๊ณ ์ํ๋ค๊ณ ์ธ๊ธํ๋ฏ์ด. CLToolExe
์์ฑ์ .vcxproj
ํ์ผ์ clang-cl ๊ฒฝ๋ก๋ก ์ค์ ํ์ฌ clang-cl์ "๊ฐ์ "ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค(์ด๋ LLVM ๋๊ตฌ ์ธํธ์์ ์ด๋ฏธ ํจ๊ณผ์ ์ผ๋ก ์ํํ๊ณ ์์ ). UWP ํ๋ก์ ํธ์์ ์ด๊ฒ์ด ์ผ๋ง๋ ์ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋ํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
XAML ๋ฐ C++/WinRT ์์ฐ์ ๋๊ตฌ๊ฐ ๋ฐ์คํฌํฑ ํ๋ก์ ํธ์์ ์ ๊ธ ํด์ ๋๋ฉด ๋์๊ฒ๋ ๋ฌธ์ ๊ฐ ์ค์ด๋ค ๊ฒ์ ๋๋ค.
@ackh Clang 11์์ ๋น๋ํ UWP ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<Project>
์๋์ ์ฒซ ๋ฒ์งธ ์ง์๋ฌธ์ผ๋ก ๋ค์ ์ง์๋ฌธ์ ์ถ๊ฐํฉ๋๋ค. <PropertyGroup>
<CLToolExe>C:\Program Files\LLVM\bin\clang-cl.exe</CLToolExe>
</PropertyGroup>
<AdditionalOptions>%(AdditionalOptions) /bigobj</AdditionalOptions>
๋ฅผ <AdditionalOptions>%(AdditionalOptions) /bigobj -Xclang -std=c++20 -mcx16</AdditionalOptions>
๋ฐ๊พธ๊ธฐ<PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
๋ฅผ <PreprocessorDefinitions>_SILENCE_CLANG_COROUTINE_MESSAGE;WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
๋ฐ๊พธ๊ธฐ<ModuleOutputFile />
๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ํจ์ ์ด ์์ต๋๋ค.
-m32
๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.์ด์ ๋ํ ๊ด์ฌ์ ๋๊ธฐ ์ํด https://github.com/microsoft/ProjectReunion ์์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@sylveon ์ด ์ง์นจ์ ๊ฒ์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
WinUI๊ฐ ์ ํ๋ก์ ํธ SDK( Microsoft.NET.Sdk ๋๋ MSBuild.Sdk.Extras)๋ฅผ ์ง์ํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด์ ์คํ์ผ์ csproj ํ์ผ์ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ WinUI๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ์ ์ฉํ ์ ์๋ ์ฌ๋ฌ TargetFrameworks๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.