Runtime: System.Xaml์„ .NET Core๋กœ ํฌํŒ…

์— ๋งŒ๋“  2016๋…„ 01์›” 29์ผ  ยท  158์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/runtime

dotnet/runtime#14862์— ํ† ๋ก ์˜ ๊ฒฐ๊ณผ๋กœ ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  : ์ด๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค System.Xaml ๋˜๋Š” .NET Core๋กœ ์ด์‹ํ•˜๋ ค๋Š” ์šฐ๋ฆฌ์˜ ์•ฝ์†์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์š”์ฒญ์„ ์บก์ฒ˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


์‹œ๋‚˜๋ฆฌ์˜ค

  1. WF(์›Œํฌํ”Œ๋กœ ์žฌ๋‹จ) - dotnet/runtime#14862

    • ๊ทธ๋Ÿฌ๋‚˜ CoreWF ๋Š” Xaml์—์„œ ์ง๋ ฌํ™”๋ฅผ ์ถ”์ƒํ™”ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์›๋ž˜ ์˜๋„๋œ ๋Œ€๋กœ). ์ฆ‰, ๊ธฐ์กด์˜ ๋ชจ๋“  ๋ฐ์Šคํฌํƒ‘ ์ง๋ ฌํ™”๊ฐ€ Xaml์— ์žˆ์œผ๋ฉฐ ์ตœ์†Œํ•œ ์ „ํ™˜ ๊ฒฝ๋กœ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(๋ณ€ํ™˜๊ธฐ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ด ๋  ์ˆ˜ ์žˆ์Œ).

  2. WPF์˜ ์ „์ œ ์กฐ๊ฑด

    • ์ฐธ๊ณ : WPF/GUI ํ”„๋ ˆ์ž„์›Œํฌ๋Š” .NET Core(์˜ค๋Š˜๋‚  ์„œ๋ฒ„ ๋ฐ ์ฝ˜์†” ์•ฑ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•จ)์˜ ํฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์™„์ „ํ•œ ์ข…๋‹จ ๊ฐ„ ๊ณ„ํš ๋ฐ ์•ฝ์†์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  3. UI ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ „์ œ์กฐ๊ฑด

    • https://github.com/AvaloniaUI/Avalonia - @grokys (https://github.com/dotnet/corefx/issues/5766#issuecomment-275260663 ์ฐธ์กฐ)

    • Eto.Forms - @cwensley (https://github.com/dotnet/corefx/issues/5766#issuecomment-275282292 ์ฐธ์กฐ)

  4. ... ํ† ๋ก ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋” ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
area-Meta enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@Michael-DST @rschiefer
_84538408_7751d5e5-fce7-42fd-b90d-fe31e6c71421_020116_014028_pm

๋ชจ๋“  158 ๋Œ“๊ธ€

๋งŒ์„ธ! ๊ณต์‹ ์ธ์ •/์ธ์ •! ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ๋‚˜๋Š” ๊ทธ ๋‹จ์–ด๋“ค์ด "์•ฝ์†"๊ณผ ๋™์ผํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋ณธ ์–ด๋–ค ๊ฒƒ๋ณด๋‹ค ํ™•์‹คํžˆ ๋‚ซ์Šต๋‹ˆ๋‹ค. @terrajobst ๋‹น์‹ ์€ ๋‚˜์˜ ์˜์›…์ž…๋‹ˆ๋‹ค. :ํ•˜ํŠธ: :ํ•˜ํŠธ: :ํ•˜ํŠธ:

@cwensley ์™€ @SuperJMN , ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค ์‚ฌ์ด์— ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ(๋‚ด ๊ด€์ ์—์„œ) ๋ชจ๋“  ์‚ฌ๋žŒ์€ ๊ถ๊ทน์ ์œผ๋กœ ์ƒˆ๋กœ์šด Xaml ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•˜๋‚˜์˜ ํฌํŠธ/๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ Xaml์˜ ๋‹ค๋ฅธ ๋ฒ„์ „/๋ฐฉ์–ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :)

๋˜ํ•œ ์ €๋Š” ํ˜„์žฌ "์ž‘์—… ์•ˆ์‹๋…„(๋Œ€๋‹จํ•œ ๊ณ ๊ฐ LOL)"์— ์žˆ์œผ๋ฉฐ ํ”Œ๋žซํผ ๊ฐ„ Xaml๋งŒ 3-4๊ฐœ์›” ๋™์•ˆ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ’€ํƒ€์ž„์œผ๋กœ ์ผํ•  ์ˆ˜ ์žˆ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ ์ด ์ผ์„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์˜๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ๊ฒƒ(๋˜ํ•œ, ๋‚˜๋Š” ์ข‹์€ ํƒ€์ด๋ฐ์„ ์œ„ํ•œ ๊ธฐํšŒ์ฃผ์˜์ž์ž…๋‹ˆ๋‹ค!)

System.Xaml์ด ์˜คํ”ˆ ์†Œ์Šค๋ผ๋ฉด ์ด ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๋””์ž์ธ ๋ชฉํ‘œ์— ๋”ฐ๋ผ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ด๋ฅผ .net ์ฝ”์–ด๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์•ˆ๋‚ดํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. .net ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํž˜์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Michael-DST, xaml์˜ ํ•œ ๋ฐฉ์–ธ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๊ตฌํ˜„์€ ์™„์ „ํžˆ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ๊ตฌํ˜„์œผ๋กœ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

Mono์˜ ์šฐ์ˆ˜ํ•œ System.Xaml(MIT ๋ผ์ด์„ผ์Šค) ๊ตฌํ˜„์˜ PCL 259/136 ํฌํŠธ์ธ Portable.Xaml ์˜ ๊ฒฝ์šฐ, ๋งŽ์€ ๋ฒ„๊ทธ ์ˆ˜์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MS์˜ System.Xaml์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…(์ฝ๊ธฐ/์“ฐ๊ธฐ ํฌํ•จ)์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ด์— ๊ตญํ•œ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ™•์žฅ ๊ธฐ๋Šฅ์˜ ์˜ˆ๋กœ Portable.Xaml์€ ๋ชฉ๋ก์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํ˜•์‹ ๋ณ€ํ™˜๊ธฐ ์‚ฌ์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ System.Xaml์€ ๋‹ค์–‘ํ•œ ํ˜•์‹์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” IList.Add(object)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@cwensley ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ฌด์ง€๋ฅผ ์ฃผ์žฅํ•˜์ง€๋งŒ .NET Core์™€ PCL์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ฐ™์€ ์ค„ ์•Œ์•˜๋Š”๋ฐ? ์ฆ‰, ํŠน์ • PCL ํ”„๋กœํ•„๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค๋ฉด .NET Core๋กœ ๋„˜์–ด๊ฐˆ ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค... ์ด๊ฒƒ์€ ์–ผ๋งˆ ์ „์ด์—ˆ์Šต๋‹ˆ๋‹ค(์†”์งํžˆ ์ €๋Š” .NET Core์—์„œ RTM/W๋กœ ์ „ํ™˜๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ ์ƒˆ๋กœ ๊ณ ์นจ์„ ํ•˜๊ธฐ์— ์ข‹์€ ๋•Œ์ž…๋‹ˆ๋‹ค. :ํ”ผ

Portable.Xaml์ด ์‹ค์ œ๋กœ mono์˜ System.Xaml ํฌํŠธ์ธ ๋ฐ˜๋ฉด OmniXaml์€ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ถ„์•ผ์—์„œ ์ƒˆ๋กœ์šด ์ธ๊ธฐ๋ฅผ ๋ˆ„๋ฆฌ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋‚ด ์ดํ•ด/๊ฐ์ƒ์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š”(๋‚ด ์ž์‹ ์˜ ๊ด€์ ์—์„œ) ์–ด๋–ป๊ฒŒ๋“  ๋‘˜์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋‘ ๊ธฐ์ง€ ์‚ฌ์ด์—์„œ ๋ฐ”๋žŒ์งํ•œ์ง€์กฐ์ฐจ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์—๋Š”(spelunking/analysis ์—†์ด) ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜(Portable.Xaml)์˜ ์„ฑ์ˆ™๋„์™€ ๋‹ค๋ฅธ ํ•˜๋‚˜(OmniXaml)์˜ ์ƒˆ๋กœ์šด ๋งค๋ ฅ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒŒ์‹œ๋ฌผ ์— ๋”ฐ๋ฅด๋ฉด @Michael-DST PCL 259๋Š” ์‹ค์ œ๋กœ .NET Core์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. Portable.Xaml์šฉ nuget ํŒจํ‚ค์ง€์˜ ๋Œ€์ƒ์œผ๋กœ ์ด๋ฏธ \lib\dotnet ๋ฅผ ํฌํ•จํ–ˆ์œผ๋ฏ€๋กœ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ .NET Core์—์„œ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” OmniXaml์„ ์กฐ์‚ฌํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด ์ผ์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜์—ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์€ ์ด์น˜์— ๋งž์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Portable.Xaml์ด ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋Œ€๋ถ€๋ถ„์ด ์™„์ „ํ•œ ๊ฒฝ์šฐ ๊ทธ๋Ÿฌํ•œ ์ด์ ์ด ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ (;

:) ์˜ˆ, ์—ฌ๊ธฐ์—์„œ ์˜ต์…˜์„ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ์˜คํ”ˆ ์†Œ์Šค ์„ธ๊ณ„์— ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฌด์ง€๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ Xaml ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋” ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹จํŽธํ™”๋˜๋Š” ๊ฒƒ์€ ์งœ์ฆ๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , @SuperJMN ์ด ์ด์— ๋Œ€ํ•œ ๊ฒฌํ•ด๋ฅผ ๋“ฃ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฐ€ ๊ทธ์˜ ์ƒˆ๋กœ์šด ์ˆ˜์ •์— ๋Œ€ํ•ด ๊ฝค ํ™•๊ณ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งˆํฌ์—… ํ™•์žฅ์„ ์œ„ํ•ด IServiceProvider ๋Œ€์‹  MarkupExtensionContext๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ด ์ƒˆ๋กœ์šด ์„ธ๊ณ„๋กœ ์ด์‹ํ•˜๋ ค๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ํš๊ธฐ์ ์ธ ๋ณ€ํ™”๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด ๋ชจ๋“  PCL ํ”„๋กœํ•„์€ .NET Core์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ„์•ฝ ์„ธํŠธ์™€ ํŒฉํ† ๋ง์€ PCL ํ”„๋กœํ•„์˜ ์ง„ํ™”์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ .NET Core์™€ ์ฆ‰์‹œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” "์ด์ „ ์Šคํƒ€์ผ" ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(mscorlib ๋“ฑ์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ๋จ)์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@๋งˆ์ดํด DST

@terrajobst ๋‹น์‹ ์€ ๋‚˜์˜ ์˜์›…์ž…๋‹ˆ๋‹ค. :ํ•˜ํŠธ: :ํ•˜ํŠธ: :ํ•˜ํŠธ:

๊ท€ํ•˜์˜ ์—ด์ •์— ๋งค์šฐ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ, ๋ˆ„๊ตฌ๋“ ์ง€ ์ด์™€ ๊ฐ™์€ ์š”์ฒญ์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๊ณ  ์ž‘์—…์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ์˜ ํ›„์›์ด๋‚˜ ์Šน์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :-) ๋‚˜๋Š” ๋‹จ์ง€ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์ ˆ๋ฆ„๋ฐœ์ด๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ง์ ‘ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค("๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜์‹ญ์‹œ์˜ค") :-)

LOL @terrajobst ๊ดœ์ฐฎ์•„์š”. ์ œ ์—ด์ •์€ ๋†๋‹ด ๋ฐ˜, ์ง„์ง€ํ•จ ๋ฐ˜์ž…๋‹ˆ๋‹ค... MSFT๋Š” ์ˆ˜๋งŽ์€ ํˆฌํ‘œ ์™€ ๊ด‘๋ฒ”์œ„ํ•œ ๋Œ€ํ™” ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฑฐ์˜ 1๋…„ ๋™์•ˆ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์นจ๋ฌตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฑฐ์˜ 1๋…„ ๋™์•ˆ ๋…๋ฐฉ์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ์˜ ๋ฌธ ์•„๋ž˜๋กœ ์‹์‚ฌ๋ฅผ ๋ฐ€์–ด ๋„ฃ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ์„ ํ–ˆ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. :stuck_out_tongue:

[ํŽธ์ง‘: ๊ทธ ์œ ์ถ”๋ฅผ ์ฝ์€ ํ›„(๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์— ์ธ์šฉ๋œ ๊ฒƒ์„ ๋ณธ ํ›„), ๊ทธ๊ฒƒ์€ ๋”์ฐํ•˜๊ณ  ์•„๋งˆ๋„ ๋‹น์‹œ ๋‚ด๊ฐ€ ์ฝ๊ณ  ์žˆ๋˜ ๊ธฐ์‚ฌ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•˜์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค -- ๋นŒ์–ด๋จน์„ ๋‰ด์Šค, ์™œ ๋‚˜์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์ณ์•ผ ํ•ฉ๋‹ˆ๊นŒ?! ๋” ๋‚˜์€/๊ด€๋ จ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์•„๋งˆ๋„ 1๋…„ ๋™์•ˆ ์—ฐ๊ธฐ๋ฅผ ๋›ด ํ›„์— ์ฒœ์‚ฌ ๋ผ์šด๋“œ์—์„œ ๋งค์šฐ ํ•„์š”ํ•œ ํ˜„๊ธˆ ์ฃผ์ž…์„ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.]

์ฐธ์กฐ: @Harikm86 , System.Xaml์˜ ์†Œ์œ ์ž

์ €๋Š” XAML์„ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค. Silverlight(์˜ˆ, ์ œ๊ฐ€ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค)์—์„œ Windows Workflow, ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ์ƒˆ๋กœ์šด Universal App ํ”Œ๋žซํผ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์„ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ์„ ์–ธ์  ์–ธ์–ด์ž…๋‹ˆ๋‹ค. Core๋กœ ์ด์‹ํ•˜๋ฉด XAML์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๊ธฐ์ˆ ์„ ์ด์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

@rschiefer์˜ ์ง€์›์„ ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค! ์ž…๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋Š” ๋‹ค๋ฅธ Xaml ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•˜๊ณ  ๋Œ€ํ™”/๋ฐฉํ–ฅ์„ ๋•๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์ €๋Š” ๋˜ํ•œ Silverlight์˜ ํŒฌ์ด๋ฉฐ 2011๋…„๋ถ€ํ„ฐ Silverlight์˜ ๋‹ค์Œ ๊ตฌํ˜„์„ ์ถ”๊ตฌํ•ด ์™”์Šต๋‹ˆ๋‹ค(๋ป”๋ป”ํ•œ ํ”Œ๋Ÿฌ๊ทธ: Visual Studio ํŒ€์— ๋” ๋˜‘๋˜‘ํ•œ Silverlight ํ˜•ํƒœ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด ํˆฌํ‘œํ•˜๊ณ  ๊ทธ๋“ค์—๊ฒŒ ์•Œ๋ ค์ฃผ์„ธ์š”. ์—ฌ๊ธฐ ์•Œ์•„ ).

์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด "Xaml"์ด๋ผ๊ณ  ๋งํ•  ๋•Œ .NET 4.x+(๋˜๋Š” "System.Xaml")์— ์žˆ๋Š” Xaml ์‹œ์Šคํ…œ/๊ธฐ๋Šฅ ์ง‘ํ•ฉ์„ ์—ด๋งํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Silverlight 5์˜ Xaml๋„ ์‹ค์ œ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

(๋ฌผ๋ก  OmniXaml์—์„œ ๋ฐœ๊ฒฌ๋œ ์ƒˆ๋กœ์šด ๊ฐœ์„  ์‚ฌํ•ญ ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.)

์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ทธ ์ดํ›„๋กœ ๊ณ ํ†ต์„ ๊ฒช์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ด ํŒ€์ด ์ด์‹ํ•œ UWP์˜ "์ƒˆ", ๋‚˜์œ ๋ฒ„์ „์ด ์•„๋‹Œ ํ•œ(์œ„์˜ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ์–ธ๊ธ‰ํ•œ ํˆฌํ‘œ ์ฐธ์กฐ).

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ "Xaml" ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์€ ํ–‰์šด์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ† ํฐ ๊ตฌ๋ฌธ ๋ถ„์„์ด ์žˆ๋Š” XML์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(๋ถ„๋ช…ํžˆ ํ•„์š”ํ•จ). ์žฌ๋ฏธ์žˆ๋Š” ์‚ฌ์‹ค: UWP์˜ Xaml ์‹œ์Šคํ…œ์€ ๊ถ๊ทน์ ์œผ๋กœ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘์— System.Xaml ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Œ... #์•„์ด๋Ÿฌ๋‹ˆ.

์ด์ƒ์ ์œผ๋กœ๋Š” ์ด ํฌํŠธ๊ฐ€ ๋ฐฐ์น˜๋˜๋ฉด UWP Xaml ์‹œ์Šคํ…œ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€์‹  ์ด ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹นํ™ฉ์Šค๋Ÿฌ์šด Xaml ์—ญ์‚ฌ์˜ ์žฅ์„ ๋’ค๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Silverlight๋ฅผ ๋” ์ƒˆ๋กญ๊ณ  ๋” ๋‚˜์€ ํ˜•ํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :) :) :)

@๋งˆ์ดํด DST

๋”ฐ๋ผ์„œ ๊ฑฐ์˜ 1๋…„ ๋™์•ˆ ๋…๋ฐฉ์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ์˜ ๋ฌธ ์•„๋ž˜๋กœ ์‹์‚ฌ๋ฅผ ๋ฐ€์–ด ๋„ฃ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ์„ ํ–ˆ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. :stuck_out_tongue:

์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•˜๋‹ค :์Šค๋งˆ์ผ:

@๋งˆ์ดํด DST

๋‚˜๋Š” ์‹ค์ œ๋กœ ์ง€๊ธˆ๊นŒ์ง€ ๋งŽ์€ ๊ฒƒ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  UWP๋ฅผ ํ”ผํ–ˆ๊ณ  UWP๊ฐ€ Xaml์˜ ์ž์ฒด "๋ฒ„์ „"์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ๊ธฐ์‹œ์ผœ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. System.Xaml์„ ์ด์‹ํ•œ ๋‹ค์Œ ์‹ค์ œ Xaml์„ ์‚ฌ์šฉํ•˜๋„๋ก UWP๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. System.Xaml์„ ์ด์‹ํ•œ ๋‹ค์Œ ์‹ค์ œ Xaml์„ ์‚ฌ์šฉํ•˜๋„๋ก UWP๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@terrajobst ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ @rschiefer์— ์ƒˆ๋กœ์šด ์˜์›…์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. :์Šค๋งˆ์ผ: :์Šค๋งˆ์ผ: :์Šค๋งˆ์ผ:

ํ† ๋ก ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋งค์šฐ ๋ฉ‹์ง€๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์‰ฝ๊ฒŒ ๊ฐ๋ช…์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค!).

@Michael-DST @rschiefer
_84538408_7751d5e5-fce7-42fd-b90d-fe31e6c71421_020116_014028_pm

@helmsb ๋„ค! ใ…‹ใ…‹ใ…‹ใ…‹

์›น(Angular.js), ์•ฑ(Android) ๋“ฑ์„ ์œ„ํ•œ ๊ฒฝ์Ÿ๋ ฅ ์žˆ๋Š” Google์˜ ์ธ๊ธฐ ์žˆ๋Š” ๋จธํ‹ฐ๋ฆฌ์–ผ ๋””์ž์ธ ๊ธฐ์ˆ ์ธ FWIW๋„ ์˜คํ”ˆ ์†Œ์Šค๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์žฅ์ด ์ƒ์‚ฌ์™€ ์ƒ์‚ฌ ๊ฐ™์€ ์กด์žฌ๋ฅผ ์„ค๋“ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@dsaf ๋ฌด์Šจ ๋ง์”€์ด์„ธ์š”?

FWIW ์˜ค๋Š˜ ๊ฒŒ์‹œ๋œ ๊ธฐ์‚ฌ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Is the Tide Turning on project.json? , ๊ธฐ์ˆ  ๋ฐ MSFT ๋น„์ฆˆ๋‹ˆ์Šค/IP ๊ด€์  ๋ชจ๋‘์—์„œ .NET ๊ฐœ์ฒด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด Xaml์ด ์„ ํ˜ธ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, Xamarin ๊ฑฐ๋ž˜๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๊ฐ€ ์•ž์œผ๋กœ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ ํ›จ์”ฌ ๋” ๋ฐ”๋น ์งˆ ๊ฒƒ์ด๋ผ๋Š” ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

๋ฐ˜๋“œ์‹œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. UWP์˜ Xaml ๋˜๋Š” Xamarin์˜ Xaml ํ’๋ฏธ๊ฐ€ ์ผ๋ถ€ ๊ต์ฐจ ํ”Œ๋žซํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋Š” System.Xaml์˜ ํฌํŠธ ๋˜๋Š” ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋˜๋Š” Xaml ๊ตฌํ˜„์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Xamarin์˜ Xaml ์‹œ์Šคํ…œ์€ ํ์‡„์ /๋‚ด๋ถ€์ ์ด์ง€๋งŒ System.Xaml๋งŒํผ ์„ฑ์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ž์ฒด๋Š” ๋‹ค์†Œ ์—‰์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ POCO ์ง๋ ฌํ™” ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ธˆ์ง€๋˜๋Š” BindingObject์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ UWP์˜ Xaml ์‹œ์Šคํ…œ์€ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์„ ๋‹น์‹ ์ด ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ง์ด๋‹ค. :stuck_out_tongue:

"์ˆœ์ˆ˜ ๊ด€๋ฆฌ Xaml ๊ตฌํ˜„"์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? FWIW, ์—ฌ๊ธฐ์—์„œ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์€ System.Xaml์˜ ์ง์ ‘์ ์ธ 1:1 ํฌํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ System.Xaml, Xamarin.Core.Xaml, ๊ทธ๋ฆฌ๊ณ  ... ๊ธ€์Ž„, ๋‚˜๋Š” UWP์˜ Xaml์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์ง€๋งŒ... :wink:

๋‚ด๋ถ€์ ์œผ๋กœ๋Š” WPF์™€ Xaml๋ณด๋‹ค UWP์˜ Xaml์„ ์„ ํ˜ธํ•œ๋‹ค๊ณ  ๋“ค์—ˆ์ง€๋งŒ Microsoft์˜ ํŒ€๋งˆ๋‹ค ์˜๊ฒฌ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DotNet์˜ Xaml์€ ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•˜์ง€๋งŒ UWP๊ฐ€ ์ถ•์†Œ๋˜๋Š” ์ด์œ ๊ฐ€ ๋˜๋Š” ๋‹จ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์„ค๋ช…์ž์˜ ๋ชจ๋“  ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ DotNet ๋…์ ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์—์„œ UWP์˜ Xaml์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์ข‹์€ ์ ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž ์žฌ์ ์ธ ๋ฏธ๋ž˜์˜ Microsoft.Xaml์€ DotNet ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌ๋˜๋Š” ํŒŒ์‚ฌ๋“œ๊ฐ€ ์žˆ๋Š” ํ”Œ๋žซํผ ๊ฐ„ ๊ธฐ๋ณธ ๊ตฌํ˜„์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๋ฏธ๋ž˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ CoreFX์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ œ๊ณต๋˜๋„๋ก ๊ฒฐ์ •๋˜์ง€ ์•Š๋Š” ํ•œ dotnet/corefx์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. .NET์ด๋ผ๊ณ  ํ•˜๋ฉด... 4.6์„ ๋งํ•˜๋Š” ๊ฑฐ๊ฒ ์ฃ ? ๋‚ด ์ดํ•ด์— ๋”ฐ๋ฅด๋ฉด ์ด๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ํ”Œ๋žซํผ ๊ฐ„ ๋ฐ .NET(4.6) ์ „์šฉ์ธ .NET Core Xaml ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ? "DotNet ๋…์ ์ด ์•„๋‹˜"์ด๋ผ๊ณ  ๋งํ•˜๋ฉด "DotNet์ด ํฌํ•จ๋จ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์ด์ค‘ ๋ถ€์ •. :stuck_out_tongue: ์ด๊ฒƒ์€ .NET 4.6์—์„œ UWP Xaml์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ช…ํžˆ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ์ž˜๋ชปํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”. ๋˜ํ•œ ์—ฌ๊ธฐ์„œ ์ข‹์€ ๋ชฉํ‘œ๋Š” Xaml์„ CoreFX์˜ ์ผ๋ถ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ผ๋งˆ ๋™์•ˆ ์ด ๋ฌธ์ œ๋ฅผ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์ผ๋ถ€ ํ† ๋ก ์ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค . -- ๊ทธ๋ฆฌ๊ณ  ํ™•์‹คํžˆ, @RichiCoder1 ์ด ํ‹€๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ์—์„œ ์ •ํ™•ํžˆ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํˆฌํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค... ์ „์— ์–ด๋””์„œ ๊ท€ํ•˜์˜ ํƒœ๊ทธ๋ฅผ ๋ณธ ์ ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค! :์›ƒ๋‹ค:

๋˜ํ•œ UWP์˜ Xaml์— ๋Œ€ํ•œ ๋‚ด๋ถ€์ ์ธ ์„ฑํ–ฅ๋„ ๋“ค์—ˆ์ง€๋งŒ, ๊ทธ ์Šค๋ ˆ๋“œ๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ† ๋ก ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์ด์—ˆ์Šต๋‹ˆ๋‹ค( Tim Heuer์˜ Twitter ํ† ๋ก  ). ๋ฐ”๋Š˜์€ ๊ทธ ์ดํ›„๋กœ ํ™•์‹คํžˆ ์›€์ง์˜€์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ๋” ์ข‹์•˜์Šต๋‹ˆ๋‹ค! ใ…‹ ใ…‹ ใ…‹. "Xaml์€ UI์šฉ"์ด๋ผ๊ณ  ์˜คํ•ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :stuck_out_tongue:

DotNet์ด๋ผ๊ณ  ํ•˜๋ฉด ์ฝ”์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํฌํ•จํ•˜๋Š” DotNet์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  UWP ์•ฑ ์™ธ๋ถ€์—์„œ UWP Xaml์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. C++ UWP ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ DotNet ๋…์ ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์€ C++(๋˜๋Š” ์ž ์žฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด)์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  XAML์„ ์†Œ์œ ํ•œ ํŒ€์ด UI ์™ธ๋ถ€์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋“œ๋ฌผ๊ฑฐ๋‚˜ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ Microsoft ๋˜๋Š” ํŒŒํŠธ๋„ˆ์™€ ์ ๊ทน์ ์œผ๋กœ ๋น„๋ฐฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ œ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ ํ‘œํ˜„๋ ฅ๊ณผ ํž˜์„ ๋†’์ด ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. @RichiCoder1 ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ _๊ฑฐ์˜_ ์™„์ „ํžˆ ๋‹น์‹ ์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค... "ํ”„๋ ˆ์ž„์›Œํฌ"๋ผ๊ณ  ํ•˜๋ฉด 4.6์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

๋‚ด ์ƒ๊ฐ์— ๋‚ด๋ถ€ ํŒ€์ด UI ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋“œ๋ฌผ๋‹ค๊ณ  ๋Š๋ผ๋Š” ์ด์œ  ์ค‘ ์ผ๋ถ€๋Š” Tim์˜ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฐœ๋ฐœ์ž์™€์˜ ์—ด์•…ํ•œ ์ฐธ์—ฌ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ฝ 1๋…„ ์ •๋„ ์ „๊นŒ์ง€ MSFT์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ •๋ง ์‹œ๋„๋Ÿฝ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์— ๋Œ€ํ•ด ์œ ์ฃ„์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค Tim์˜ ํŠธ์œ—์€ ๋‚ด๊ฐ€ Windows 8.0 ์ดํ›„๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ Xaml ์‹œ์Šคํ…œ์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๊ณ  ์›๋ž˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๋‹ค๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ/๋น„๊ณต๊ฐœ๋กœ ๋ถˆํ‰ํ•œ ํ›„ ๋‚ด๊ฐ€ ํ•œ ํˆฌํ‘œ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. UWP(Windows 10) Xaml์ด 3๋…„ ๋™์•ˆ ํ˜์‹ ์ด๋‚˜ ๊ฐœ์„  ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•˜๋‹ค๋Š” ์†Œ๋ฌธ์„ ๋“ค์—ˆ์„ ๋•Œ ํ•œ ๋‹จ๊ณ„ ๋” ์˜ฌ๋ผ๊ฐ”์Šต๋‹ˆ๋‹ค. ๋Œ์ด์ผœ๋ณด๋ฉด ํ›จ์”ฌ ๋” ์ผ์ฐ ํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์ค‘์š”ํ•œ ๋ฐฐ์›€์˜ ๊ตํ›ˆ์ด์—ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์ œ ์ƒํƒœ๊ณ„์— ํ›จ์”ฌ ๋” ํ†ตํ•ฉ๋˜์–ด ์žˆ๊ณ  (๋˜๋Š” ์ ์–ด๋„ ๋‚ด๊ฐ€ ๊ทธ๋Ÿฐ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋‚€๋‹ค) ๋‚ด ๋ชฉ์†Œ๋ฆฌ๊ฐ€ ๋“ค๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋‚€๋‹ค. ์‚ฌ์‹ค, 4๊ฐœ์›” ์กฐ๊ธˆ ์ „์— ๋‚ด๊ฐ€ ํ•œ _๋งค์šฐ ์ค‘์š”ํ•œ_ ํˆฌํ‘œ ๊ฐ€ ์ด๋ฒˆ ์ฃผ ์ดˆ ๊ถŒ์œ„ ์žˆ๋Š” Visual Studio ํŒ€์— ์˜ํ•ด ๊ฒ€ํ†  ์ค‘์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์„ธ์ƒ์ด ํ”๋“ค๋ ธ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ ˆ์ œ๋œ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๋ฐ์Šคํฌํƒ‘ .Net์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Core์™€ Full Framework๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•œ๋‹ค. Microsoft์˜ ๋ชจ๋“  ์ตœ๊ทผ ์›€์ง์ž„์— ๋Œ€ํ•œ ์ข‹์€ ์  ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐœ๋ฐœ์ž์™€์˜ ๋” ๋‚˜์€ ์ฐธ์—ฌ๋ฅผ ๊ฑฐ์˜ ๊ฐ•์š”ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๋‚˜ ์ž์‹ ์— ๋Œ€ํ•ด ๋งค์šฐ ํฅ๋ถ„! ์ด์ œ ๊ทธ ์—ฐ๊ทน์ด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ๋ณด๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณต์œ  ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” UWP ์•ฑ์„ ์ œ์™ธํ•˜๊ณ  Xamarin ๋„๊ตฌ๋ฅผ ์ผ๋ฅ˜๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์˜๋ฏธํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ณด๋‹ค ๋” ๋†’์€ ์ˆ˜์ค€์„ ์˜๋ฏธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค์ง ์‹œ๊ฐ„(๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ƒ๊ฐ์— //Build)๋งŒ์ด ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ตฐ์š”... ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :+1:

//build์— ๊ด€ํ•ด์„œ๋Š”... ์ฐธ์œผ๋กœ. :) ๊ฐœ์ธ์ ์œผ๋กœ UWP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”(๋Š์Šจํ•˜๊ฒŒ?) ์ƒˆ๋กœ์šด Xamarin์˜ ์žฅ์ ์„ ํ™œ์šฉํ•˜์—ฌ iOS/Droid๋กœ ์ด๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋” ๊ฐ•๋ ฅํ•œ Xaml ๋ชจ๋ธ๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ด ์Šค๋ ˆ๋“œ๋ฅผ 4์›” 28์ผ ์ดํ›„๋กœ ์กฐ์šฉํžˆ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. :stuck_out_tongue:

๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค! :)

UWP ์‚ฌ์šฉ์ž๋Š” .NET ์ฝ”๋“œ๋ฅผ ํ’€์ธํ•˜์ง€ ์•Š๋Š” XAML ๊ตฌํ˜„์„ ๋” ์‰ฝ๊ฒŒ ์ฑ„ํƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ .NET Core ํ•ญ๋ชฉ์ด๋”๋ผ๋„).

์ž์ฒด ํฌํ•จ๋œ ๋ธ”๋ž™๋ฐ•์Šค์ฒ˜๋Ÿผ(๋˜๋Š” UWP์—๋งŒ ์˜์กดํ•˜์ง€๋งŒ UWP๋Š” [์•„์ง] ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Silverlight [์•ฑ์„ Win10 ๋Œ€์ƒ์œผ๋กœ๋งŒ ์ž ๊ธ€ ์ˆ˜ ์—†์Œ]).

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ XAML์˜ ๋‹ค์–‘ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(UWP UI, Workflow, WPF/.NET, Silverlight ๋“ฑ)์— ๋Œ€ํ•œ ์ถ”์ƒํ™” ๊ณ„์ธต ๋ฐ ํ”Œ๋Ÿฌ๊ทธํ˜•/๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ ๋‹ค์†Œ ์œ ํ† ํ”ฝ์ž…๋‹ˆ๋‹ค. DirectX๊ฐ€ HAL(Hardware Abstraction Layer)์„ ํ†ตํ•ด ๊ธฐ๊ณ„๋กœ ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ HEL(Hardware Emulation Layer - http://www.developer.com/net/asp/article.php/968461/What์—์„œ ์–ธ๊ธ‰ ์ฐธ์กฐ)์— ๋Œ€ํ•œ ๊ฐ€๋Šฅ์„ฑ๋„ ์—ด์–ด์ค๋‹ˆ๋‹ค. -is-DirectX.htm). ๋ฌผ๋ก  ์กฐ์‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ๋ฉด์—์„œ ์ง€์˜ฅ์˜ ๋ฌธ์„ ์—ด ์ˆ˜๋„ ์žˆ์ง€๋งŒ DirectX๊ฐ€ ๊ทธ๊ฒƒ์„ ๋Œ์–ด๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‚˜์˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

System.Xaml์„ .NET Core๋กœ ์ด์‹ํ•˜๊ธฐ ์œ„ํ•œ +1.
์•ž์œผ๋กœ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋‹จ์ผ ํ†ตํ•ฉ XAML ์–ธ์–ด(.NET Xaml, UWP Xaml, Xamarin Xaml)๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋ ค๋ฉด .NET Core ๋ฒ„์ „์˜ System.Xaml์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

+1

๋Œ€๋Ÿ‰ ์•Œ๋ฆผ ์•Œ๋ฆผ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ด€์‹ฌ/๋ฐ˜์‘์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด GitHub์—์„œ ๊ฐœ๋ณ„ ๋Œ“๊ธ€์„ +1ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

plus-one

ํ•˜ํ•˜ @jasonwilliams200OK ์ €๋Š” ๊ฐ•๋ ฅํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ System.Xaml ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๊ธฐ์ดˆ์ ์ธ ๊ด€์‹ฌ์„ ํ‘œํ˜„ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์›์˜ ๋Œ€๋Ÿ‰ ์•Œ๋ฆผ ๊ฒฝ๊ณ ๋ฅผ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :angel: ๋‹ค๋ฅธ ์ฃผ์ œ๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ณ ํ†ต/์„ฑ๊ฐ€์‹ฌ/๋ถˆ๋งŒ์„ ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. :๋ˆˆ์ง“:

์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ์œ ํšจ(๋ฐ ๊ฐ€์น˜ ์žˆ๋Š”) ํฌ์ธํŠธ. ์›์ธ์„ ์œ„ํ•ด ๋‚ด :+1:์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

@jasonwilliams200OK

๋ถˆ๋Ÿฌ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

FWIW, ๋ฐฉ๊ธˆ Xamarin.Forms ํŒ€์„ ์ดˆ๋Œ€ํ•˜์—ฌ ์—ฌ๊ธฐ์—์„œ ๋Œ€ํ™”์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค.
https://bugzilla.xamarin.com/show_bug.cgi?id=26740

๋˜๋Š” _์—ฌ๊ธฐ_ ๋ชจ๋“  ์‚ฌ๋žŒ์ด _๊ฑฐ๊ธฐ_์˜ ๋Œ€ํ™”๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. :์›ƒ๋‹ค:

์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋Œ“๊ธ€์—์„œ ํ›Œ๋ฅญํ•œ ํ† ๋ก ์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/

๊ธฐ๋ณธ์ ์œผ๋กœ Visual Studio์—์„œ ์ง„ํ–‰ ์ค‘์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ์ƒˆ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ JSON ๋Œ€ Xaml์ž…๋‹ˆ๋‹ค(๋งŒ์„ธ!). ๋ถ€๋‹ด์—†์ด ์ฐธ์—ฌํ•˜์„ธ์š”. :) ์ด๋ ‡๊ฒŒ ๋˜ ๋‹ค๋ฅธ ๋ชจ์Šต์„ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

@Mike-EEE, ์ด ๋กœ๋“œ๋งต๋„ ์‚ดํŽด๋ณด์„ธ์š”: https://github.com/dotnet/roslyn-project-system/blob/master/docs/Roadmap.md. ์ƒˆ๋กœ์šด Roslyn ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์€ .. ์†Œ์ค‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™€...์ด์ œ์•ผ ์ด ์†Œ์‹์„ ๋“ค์œผ๋‹ˆ ๋ฏธ์ณค๋„ค์š”. ์ด๊ฒƒ์€ Scott Hunter๊ฐ€ ํ–ฅํ›„ ๊ฒŒ์‹œ๋ฌผ์— ๋‚˜์˜ฌ ๋” ๋งŽ์€ ์ •๋ณด์™€ ๊ด€๋ จํ•˜์—ฌ ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ž„์— ํ‹€๋ฆผ์—†์Šต๋‹ˆ๋‹ค. ๋ณด๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ์Šฌ๋ฆฐ์˜ ํž˜์ด ์ปค์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Xaml ์ง๋ ฌํ™” ํ”„๋กœ์ ํŠธ ์ •์˜์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ๋” ํŽธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :๋ˆˆ์ง“:

ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. https://github.com/dotnet/roslyn-project-system#welcome -to-the-roslyn-c-and-visual-basic-project-system(๋ฐ VS MSDN ๋ธ”๋กœ๊ทธ ๋งํฌ ), MEF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด XAML๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์ง๋ ฌ ๋ณ€ํ™˜๊ธฐ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ JSON์ด ๋œ ์‹œ๋„๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ ์†์„ฑ ๋ฐ ์ข…์†์„ฑ ๋“ฑ์„ ์„ค๋ช…ํ•  ๋•Œ XAML/XML๋ณด๋‹ค JSON์„ ์„ ํ˜ธํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(YAML์€ JSON๋ณด๋‹ค ๋œ ์‹œ๋„๋Ÿฝ๊ณ  lang ํ‘œ์ค€์€ std-JSON๊ณผ ๋‹ฌ๋ฆฌ ์ฃผ์„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ dotnet ์„ธ๊ณ„์—์„œ ๋“ค์—ฌ์“ฐ๊ธฐ ์ธ์‹ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” YAML ๋ฐ ๊ธฐํƒ€ ์–ธ์–ด๋Š” ์•„์ง ์ธ๊ธฐ๋ฅผ ์–ป์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ XAML/XML๋ณด๋‹ค JSON์„ ์„ ํ˜ธํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ! ์ด ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค!!! ์—ํ—ด, ๋‚ด ๋ง์€... :)

๋‚˜๋Š” ๋‘ ์„ธ๊ณ„์˜ ์žฅ์ ์„ ๋ชจ๋‘ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @SuperJMN ๋ฐ @Grokys ๊ฐ€ ์ด์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ OmniXaml์—์„œ ๋œ ์žฅํ™ฉํ•˜๊ณ  ์ˆ˜๋‹ค์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ w/ JSON์€ w/ JSON์ด ์•„๋‹ˆ์ง€๋งŒ .NET ๊ตฌ์„ฑ์˜ ๊ธฐ์ดˆ์ด๊ธฐ๋„ ํ•œ ๋””์ž์ธ ์ ‘๊ทผ ๋ฐฉ์‹(์ด๋Š” ์˜๊ฐ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•จ), ์ฆ‰ ๊ฐœ์ฒด์˜ ์Šคํ‚ค๋งˆ๋Š” "๋˜ ๋‹ค๋ฅธ ์•„ํ‹ฐํŒฉํŠธ"์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ํด๋ž˜์Šค ์ •์˜๋ฅผ ๊ด€๋ฆฌ/์œ ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ _not_ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Xaml ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ(์•Œ๋‹ค์‹œํ”ผ!) ํด๋ž˜์Šค ์ •์˜๋Š” ๋ฌธ์„œ ์Šคํ‚ค๋งˆ _is_์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๊ฒƒ์€ ๋ฌธ์„œ ๊ฐœ๋ฐœ์— ๋งค์šฐ โ€‹โ€‹์ž์—ฐ์Šค๋Ÿฌ์šด ๋Š๋‚Œ์„ ์ฃผ๊ณ  ๋„๊ตฌํ™”์—๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ์ •์‹ ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. :smile: ๋ถˆ๋ถ„๋ช…ํ•œ ์Šคํ‚ค๋งˆ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„ ๊ทธ๊ฒƒ์„ ์„ค์น˜ํ•˜๊ณ  ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ธํ…”๋ฆฌ์„ผ์Šค๋ฅผ ์ž‘๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚˜๋ฅผ ํ™”๋‚˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

JSON๊ณผ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” JSON์—๋งŒ ๊ตญํ•œ๋œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์›น ์‚ฌ๊ณ  ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๋ช…๋ช… ๊ทœ์น™์ž…๋‹ˆ๋‹ค. .NET ๊ตฌ์„ฑ๋„ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์ด POCO๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

public class MyPoco {
    public string Property {get; set;}
}

๊ทธ๋ฆฌ๊ณ  JSON(๋˜๋Š” app.config)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

{
 { "property": "Hello world I have inconsistent naming conventions!" }
}

์—ฌ๊ธฐ์„œ ๋‹ค์‹œ Xaml์€ ํด๋ž˜์Šค ์ •์˜์™€ ์ง๋ ฌํ™”๋œ ๋Œ€์‘๋ฌผ ์‚ฌ์ด์— ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Xaml์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

.NET ๊ตฌ์„ฑ์€ ๋ชจ๋“  ๊ตฌ์„ฑ ์—”ํ„ฐํ‹ฐ์— ๋Œ€ํ•ด 4๊ฐœ์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— .NET ๊ตฌ์„ฑ์ด ์ตœ์•…์ด๋ผ๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. web/app.config์˜ ์š”์†Œ
  2. ์–ด๋–ป๊ฒŒ๋“  ๋งˆ์ˆ ์ฒ˜๋Ÿผ web/app.config์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” .xsd ํŒŒ์ผ(์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!)
  3. ConfigurationElement ๋ฐ/๋˜๋Š” ConfigurationSection ์š”์†Œ๋Š” app/web.config์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์ผ๊ด€์„ฑ์ด ์—†๋Š” camelCase๋ฅผ PascalCase์— ๋งคํ•‘ํ–ˆ์Šต๋‹ˆ๋‹ค -- ์˜ค ๋ฏธ์นœ!
  4. ๊ถ๊ทน์ ์œผ๋กœ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์—ฐ๊ฒฐ๋œ POCO์ž…๋‹ˆ๋‹ค. (์•„ํœด!)

.JSON ๋ฌธ์„œ๋กœ ์ง๋ ฌํ™”๋˜๋Š” POCO ๊ฐœ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ๋˜๋Š” ์œ„์— ์„ค๋ช…๋œ ๊ด€๋ จ ์—†๋Š” ๋งคํ•‘๋„ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ๋งŒํผ JSON์˜ ํ”„๋กœ์ ํŠธ ๋””์ž์ธ์„ ์—ฐ๊ตฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‹ต์„ ์•Œ๊ณ  ๊ณ„์‹œ๋ฉด ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  Xaml์€ ๋‘ ๊ฐœ์˜ ์•„ํ‹ฐํŒฉํŠธ๋งŒ ํ•„์š”๋กœ ํ•˜์—ฌ ์ด ๋””์ž์ธ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํด๋ž˜์Šค ํŒŒ์ผ(.cs)
  2. ๋ฐ์ดํ„ฐ ํŒŒ์ผ(.xaml)

๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ์–ด๋ณด๊ธฐ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ํŒŒ์ผ์ด ์š”๊ตฌํ•˜๋Š” ๋ฐ”๋กœ ๊ทธ ์ผ์„ ํ•˜์ง€ ์•Š๋Š” "์ € ์‚ฌ๋žŒ"์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ. :์›ƒ์Œ:

.JSON ๋ฌธ์„œ๋กœ ์ง๋ ฌํ™”๋˜๋Š” POCO ๊ฐœ์ฒด๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์œ„์— ์„ค๋ช…๋œ ๊ด€๋ จ ์—†๋Š” ๋งคํ•‘๋„ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‹ต์„ ์•Œ๊ณ  ๊ณ„์‹œ๋ฉด ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

[DataContract] ๋ฐ [DataMember] ์†์„ฑ์„ ๊ณ ๋ คํ•˜๋ฉด .NET ํ”„๋ ˆ์ž„์›Œํฌ(BCL ์ˆ˜์ค€์—์„œ)๊ฐ€ JSON ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ serailizer๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JSON์—์„œ JavaScript(๋ฐ ๊ธฐํƒ€ ๋งŽ์€ ์–ธ์–ด)๋กœ ๋˜๋Š” CSON์—์„œ CoffeeScript๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ/๋กœ์šฐ๋ ˆ๋ฒจ JavaScript ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด <-> C# POCO ์ „ํ™˜ ์ง€์›์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  XPATH XQUERY XSLT ์—ฐ๊ฒฐ์ด ์žˆ๋Š” XML๊ณผ ๋‹ฌ๋ฆฌ JSON์—๋Š” ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ์Šคํ‚ค๋งˆ ๊ฐœ๋…์ด ์žˆ์œผ๋ฉฐ JSON.net์€ ์ด๋ฅผ ์ฑ”ํ”ผ์–ธ์ฒ˜๋Ÿผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

C#6 ์ด์ƒ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฌธ์ œ/์ œ์•ˆ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. https://github.com/dotnet/roslyn/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+author%3Agafter+ ์‚ฌ์ „ , ํŠนํžˆ https://github.com/dotnet/roslyn/issues/6949 ๋ฐ ๋‚ด๋ถ€ ๋งํฌ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. ์ƒˆ๋กœ์šด C#6 ๋”•์…”๋„ˆ๋ฆฌ ์ด๋‹ˆ์…œ๋ผ์ด์ € ๊ตฌ๋ฌธ๊ณผ ์ด๋Ÿฌํ•œ ์ œ์•ˆ์œผ๋กœ C#์€ ์˜๋ฏธ์ƒ JSON์— ๋” ์นœ์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

.NET ๊ตฌ์„ฑ์ด ์ตœ์•…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ASP.NET ํŒ€์—์„œ ํ”Œ๋Ÿฌ๊ทธ ์•ค ํ”Œ๋ ˆ์ด ํŒจํ‚ค์ง€๋กœ ๋„์ž…ํ•œ "๊ตฌ์„ฑ" ๋ฐ "IOption" ํŒจํ„ด๋„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/aspnet/Configuration , https://docs.asp.net/ en/latest/fundamentals/configuration.html , ์•…๋ช… ๋†’์€ XML ๋ฐ”์ธ๋”ฉ ๊ตฌ์„ฑ ๊ด€๋ฆฌ์ž๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

JSON์€ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ์Šคํ‚ค๋งˆ ๊ฐœ๋…์ด ์žˆ์œผ๋ฉฐ JSON.net์€ ์ด๋ฅผ ์ฑ”ํ”ผ์–ธ์ฒ˜๋Ÿผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ๋กœ์„œ์˜ ํด๋ž˜์Šค ์ •์˜์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. :) :) :)

C#์ด ์˜๋ฏธ์ ์œผ๋กœ JSON ์นœํ™”์ ์ด ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•˜ํ•˜ ๋ฌผ๋ก  _any_ ๊ฐ์ฒด๋Š” ์ด๋ฏธ JSON ์นœํ™”์ ์ž…๋‹ˆ๋‹ค. JSON์€ ์˜๋„ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๊ฒฐํ•˜๊ณ  ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด ์ •์˜๋ฅผ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  JSON.net์ด ์ด ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ํฐ ์—ญํ• ์„ ํ•œ๋‹ค๋Š” ๋ฐ๋Š” ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. _applications_์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ๋•Œ ๋” ๋‚˜์€ ๋‹จ์–ด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋Œ€ํ™”๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์˜์—ญ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

๊ฒฐ๊ตญ ์—ฌ๊ธฐ์—๋Š” (์ ์–ด๋„ ๋‚˜์—๊ฒŒ) ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ฒฝ๊ณ„ ๊ฐ„์— ์ „์†ก๋  ๊ฐœ์ฒด๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ(๊ฒฝ๋Ÿ‰)๊ณผ ์ด๋Ÿฌํ•œ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ(์ค‘์š”ํ•จ)์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฉด์—์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์ปจํ…์ŠคํŠธ ์ „ํ™˜์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜( IOptions ? :laughing:)์„ ์—ด์–ด๋‘๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ˜•์‹์„ ์„ ํƒํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ํ•œ(๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ๊ณ  ๋Š๋ผ๊ฒŒ ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ) ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์—ฌ๊ธฐ์„œ ์ด๊น๋‹ˆ๋‹ค. :+1:

UWP XAML์€ ํด๋ž˜์‹ .NET WPF XAML์— ๋น„ํ•ด ๊ธฐ๋Šฅ์ด ์ ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์žฅ ๊ทธ๋ฆฌ์›Œํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” TypeConverters์ž…๋‹ˆ๋‹ค.

https://msdn.microsoft.com/en-us/library/bb546926 (v=vs.90).aspx(์ด ๊ธฐ์‚ฌ๋Š” WPF TypeConverters์šฉ)์— ์ œ์•ˆ๋œ ๋Œ€๋กœ ๊ณ ์œ ํ•œ TypeConverter๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

UWP ์—์„œ๋Š” "XML ๋„ค์ž„์ŠคํŽ˜์ด์Šค ' using:App2TypeConverters '์˜ ์•Œ ์ˆ˜ ์—†๋Š” ์œ ํ˜• '์ž๋™์ฐจ'"๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

        <ListBox>
            <local:car></local:car>
        </ListBox>

UWP์— ์‚ฌ์šฉ์ž ์ง€์ • TypeConverter๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‚˜์š”? ์•„๋‹ˆ๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? XamlCompiler๊ฐ€ ๋‚ด๋ถ€ IServiceProvider๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TypeConverter๋ฅผ ๋“ฑ๋กํ•œ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๊ทธ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๋“  ๋“ฑ๋ก ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋˜ํ•œ XAML ์ปดํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ๋ฐฐ๊ฒฝ ์ง€์‹์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. XAML์€ ์—ฌ์ „ํžˆ โ€‹โ€‹BAML๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ๋“  XAML ์ปดํŒŒ์ผ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋”ฐ๋ผ์„œ System.Xaml์„ ์—ฌ์‹ญ์‹œ์˜ค.

Sooooooo... ์ด๊ฒƒ์€ System.Xaml์ด ๋งˆ์นจ๋‚ด ํŒŒํ‹ฐ์— ์ฐธ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? :์Šค๋งˆ์ผ: :์Šค๋งˆ์ผ: :์Šค๋งˆ์ผ:
https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to-port-to-net-core/

๋‚˜๋Š” ์—ฌ๊ธฐ๋กœ ๋“ค์–ด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ๊ฒƒ์ด๋‹ค.
a) .Net Core์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” XAML์„ ์ •๋ง ์ข‹์•„ํ•˜๊ณ 
b) ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒ ํ•˜๋ฉด ์ด๋ฏธ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜(์˜ˆ: Raspberry Pi์˜ IoT ํ‘ธ์‹œ)๋กœ ์ด์‹๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ UWP ํ’๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

WPF XAML์„ ์–ป๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋†€๋ž์Šต๋‹ˆ๋‹ค.

.NET Core๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋นŒ๋“œ๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง€๋‚œ 10๋…„ ๊ฐ„์˜ ํ•™์Šต์„ ๊ธฐ๋ฐ˜์œผ๋กœ XAML๋„ ๋™์ผํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ™” WPF/Silverlight/WinRt-XAML์€ ์™„์ „ํ•œ ์‹คํŒจ์˜€์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฑธ์Œ ์•ž์œผ๋กœ, ๋‘ ๊ฑธ์Œ ๋’ค๋กœ(ํ•œ ๊ฑธ์Œ์€ ์˜†์œผ๋กœ). XAML, Expression Blend ๋“ฑ์˜ ์•ฝ์†์€ ์‹คํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ €๋Š” Scott Hunter๊ฐ€ "๊ธ€์Ž„, ๊ฒฐ์ฝ” ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. Windows ์‚ฌ์šฉ์ž๋Š” Windows ๋ชจ์–‘์˜ ๋ฒ„ํŠผ์„ ๊ธฐ๋Œ€ํ•˜๊ณ  Mac์˜ Mac ๋ฒ„ํŠผ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉด์„œ Dotnet Core์—์„œ ํ”Œ๋žซํผ ๊ฐ„ UI๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„์š” ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค - ๊ทธ๋Š” ์ง€๋‚œ 5๋…„ ๋™์•ˆ ์–ด๋””์— ์žˆ์—ˆ๋‚˜์š”??? ์›น์€ ํ˜„์žฌ UI ๋””์ž์ธ์„ ์™„์ „ํžˆ ์ง€๋ฐฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์›น์—๋Š” "ํ‘œ์ค€ ๋ฒ„ํŠผ"๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ฃผ์žฅ์€ ๋‹จ์ˆœํžˆ ๋ชจ๋“  ์ฆ๊ฑฐ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์›น UI๋Š” ์ด์ œ ์ง€๊ตฌ์ƒ์˜ ์ƒ๊ฑฐ๋ž˜๋ฅผ ์ง€๋ฐฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๋ช…ํžˆ Dotnet Core์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. [์ƒ์ƒ์˜] "ํ‘œ์ค€ ํ”Œ๋žซํผ ๋ชจ์–‘๊ณผ ๋Š๋‚Œ"์— ๋Œ€ํ•œ ์—ด๋ง ์—†์ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ XAML์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ถ”์ •ํ•˜๋Š” ์ฃผ์š” ๊ธฐ์ˆ  ์žฅ์• ๋ฌผ์€ "XAML"(๋˜๋Š” ์ฐจ์„ธ๋Œ€ UI ํ”Œ๋žซํผ์ด ํ˜ธ์ถœ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ)์„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ 3D API์™€ ์ธํ„ฐํŽ˜์ด์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. MacOS ๋“ฑ์—์„œ Direct3D/Direct2D์— ์˜์กดํ•  ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ทธ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” Unity ๋“ฑ์— ์˜ํ•ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

XAML ๊ธฐ์ˆ  ์ œํ’ˆ๊ตฐ์„ ์˜คํ”ˆ ์†Œ์‹ฑํ•˜๋Š” ์ฃผ์ œ์— ๋Œ€ํ•ด Microsoft์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์— ์ˆจ๊ฒจ์ง„ ๋น„ํŠธ์ฝ”์ธ โ€‹โ€‹๋˜๋Š” microsoft.com์˜ ๊ฐœ์ธ ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MSFT: ์˜คํ”ˆ ์†Œ์Šค WPF/Silverlight/WinRT-XAML์„ ์‹คํ–‰ํ•˜๊ณ  UX์˜ ๋‹ค์Œ ํ™ฉ๊ธˆ ์‹œ๋Œ€๋ฅผ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

Scott Hunter, @JackUkleja์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋“ค์œผ๋‹ˆ ์ •๋ง ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์†Œ์Šค/๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๋ฉด, ๋‹น์‹ ์ด ๋งํ•œ ๊ฒƒ ์™ธ์—๋„ ์—ฌ๋Ÿฌ ์ธก๋ฉด์—์„œ (๋†€๋ผ์šด) ๋ฌด์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  1. ์ด๊ฒƒ์ด ๋ฐ”๋กœ Xamarin.Forms๊ฐ€ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ํ”Œ๋žซํผ๋ณ„(๋˜๋Š” ๊ทธ๋Œ€๋กœ ํ‰๋‚ด๋‚ด๊ธฐ) UX/์ƒํ˜ธ์ž‘์šฉ/์Šคํƒ€์ผ์€ ํ…Œ๋งˆ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด WPF๊ฐ€ ๋งค์šฐ ์ž˜ํ•œ ์ผ์ž…๋‹ˆ๋‹ค(๋‹น์‹ ์˜ ๊ด€์ ์—์„œ๋Š” ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๊ณ  ๊ฐœ์„ ๋˜์–ด์•ผ ํ•˜์ง€๋งŒ).
  3. ์ตœ์•…์˜ ๊ฒฝ์šฐ, ์ด๊ฒƒ์€ ํ‹€๋ฆผ์—†์ด ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ํ›Œ๋ฅญํ•œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ธ WPF๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“  ์ธ์žฌ ํ’€์„ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์ตœ์†Œํ•œ WPF๋ฅผ ํ”Œ๋žซํผ ๊ฐ„ ๋ฐฉ์‹์œผ๋กœ ์„ฑ๊ณต์‹œํ‚จ ๋™์ผํ•œ ๋งˆ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ข‹์€ UX๋Š” ์ข‹์€ UX์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ง€์ ํ–ˆ๋“ฏ์ด ์›น์€ ์ด๊ฒƒ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ์ž๋Š” ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ํŠน์ • ๋ชจ์–‘๊ณผ ๋Š๋‚Œ์— ํ™•์‹คํžˆ ์ ์‘๋˜์–ด ์žˆ์ง€๋งŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ด๊ฒƒ์€ ํ…Œ๋งˆ์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

iOS ๊ธฐ๊ธฐ์—์„œ Droid "์Šคํ‚จ"(๋™์ž‘ ํฌํ•จ)์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ WPF์—์„œ ๊ฐ€๋Šฅํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์† ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๋ฐ”๋กœ ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ์–‘/๋Š๋‚Œ/๊ฒฝํ—˜์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””์ž์ธํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ…Œ๋งˆ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ "๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค." ์ด๊ฒƒ์€ ๋ถˆํ–‰ํžˆ๋„ Xamarin.Forms์— ๋Œ€ํ•œ ๋น„๋ฐฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์„ค๋ช…ํ•˜์ง€๋งŒ ๊ฐ ๋Œ€์ƒ ํ”Œ๋žซํผ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋งŽ์€ ๋งˆ์ฐฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@Mike-EEE Scott Hunter๊ฐ€ ์ด dotnet Rocks ์—ํ”ผ์†Œ๋“œ์—์„œ ๊ทธ๋Ÿฐ ํšจ๊ณผ์— ๋Œ€ํ•ด ๋งํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค: https://www.dotnetrocks.com/?show=1291

๋‹ต์žฅ:

"์—ญ๋Œ€ ์ตœ๊ณ ์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ธ WPF๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“  ์ธ์žฌ ํ’€"

...WPF์™€ ๊ด€๋ จ๋œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด MSFT๋ฅผ ๋– ๋‚˜ Google๋กœ ์ด๋™ํ•˜์—ฌ Angular์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. WPF์˜ ๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ Angular ๋ฐ ํ…œํ”Œ๋ฆฟ๊ณผ ๊ฐ™์€ ๊ด€๋ จ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋‚˜ํƒ€๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ถ„ํ• ํ•˜๋“ ์ง€ ๊ฐ„์— ํ•ญ์ƒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ HTML/CSS์˜ ๋ƒ„์ƒˆ๊ฐ€ ๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  UI๊ฐ€ ๋ฌธ์„œ/์˜๋ฏธ๋ก  ๊ธฐ๋ฐ˜์ด๋ผ๋Š” ๊ฒƒ์ด ๋ง์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ด๊ฒƒ์ด HTML์˜ ํŠน์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์ƒ์ด ์—ฌ์ „ํžˆ "XAML ์ฝ”์–ด"๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

[์žญ... Google ๋ฐ WPF ์„ค๊ณ„์ž์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.]

@rrelyea ๊ทธ๊ฑด ๋‚ด ์ดํ•ด ์˜€์ง€๋งŒ ๋‚ด๊ฐ€ ์‹ค์ˆ˜ํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” WPF ํŒ€ ์ค‘ ์ผ๋ถ€๊ฐ€ Angular์—์„œ ์ž‘์—…ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฝ์—ˆ๋‹ค๊ณ  ๋งน์„ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Ian Ellison-Taylor ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? (์ง€๊ธˆ์€ MSFT๋กœ ๋Œ์•„์˜จ ๊ฒƒ ๊ฐ™์ง€๋งŒ...)

๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ HTML/CSS์˜ ๋ƒ„์ƒˆ

ํ†ตํ•ฉ HTML CSS ํ‘œ์ค€ ๋˜๋Š” ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํ‘œ์ค€(C, C++, JavaScript)์— ๋Œ€ํ•œ ์ค€์ˆ˜ ๋ฐ ์ˆ˜๋ ด์ด ๋งŽ์„์ˆ˜๋ก ์ด ์„ธ์ƒ์€ ๋” ๋‚˜์€ ๊ณณ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ XAML ๋Œ€์‹  HTML+CSS ์Šคํƒ ๋“ฑ์— ๋Œ€ํ•œ ์ƒ์œ„ ์ง‘ํ•ฉ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋˜๋Š” ๋‹จ์ˆœํžˆ ASPNET์˜ Razor์— ๋Œ€ํ•œ ๋Œ€์ฒด ํ”„๋ŸฐํŠธ ์—”๋“œ ์—”์ง„์œผ๋กœ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/aspnet/Razor/issues/78 : ๊ตฌ๊ทผ:

@jasonwilliams200OK FWIW/FYI์—๋Š” ์ด๋ฏธ JSIL ์— .NET์˜ HTML/CSS "ํ‘œ์ค€" ํฌํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ถœ๋ ฅ์€ 100% HTML5์™€ ํ˜ธํ™˜๋˜๋ฉฐ ๋ชจ๋“  ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌผ๋ก  ์šฐ๋ฆฌ๊ฐ€ ์—ด๋งํ•ด์•ผ ํ•˜๋Š” ์ข…๋ฅ˜์˜ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  2011๋…„ Silverlight๊ฐ€ ์ค‘๋‹จ๋œ ์ดํ›„๋กœ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š” ์ƒ๊ฐ์ด์—ˆ์ง€๋งŒ ์ €๋Š” ์ด๋งŒ).

์ฆ‰, (๋‹น์‹ ์˜ ์š”์ ๊นŒ์ง€) ์ด์ƒ์ ์ธ/์š”์ฒญ์€ .NET ๊ฐœ๋ฐœ์ž๊ฐ€ .NET/C#/F#/VB.NET๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ณ  CSS/HTML/JS๋ฅผ ๋งŒ์งˆ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Xamarin .NET ๊ฐœ๋ฐœ์ž๋Š” iOS/Droid์˜ ํ† ๋Œ€๋ฅผ ๊ฑด๋“œ๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@Mike-EEE, ์ƒ์œ„ ์ง‘ํ•ฉ ์–ธ์–ด(TypeScript์—์„œ JavaScript๋กœ ๋˜๋Š” Less์—์„œ CSS๋กœ)์—์„œ๋Š” ๋™์ผํ•œ ํŒŒ์ผ์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์—์„œ ํ•˜์œ„ ์ง‘ํ•ฉ lang ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ๋ฐ˜๋Œ€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆ˜ํผ ์„ธํŠธ์˜ ๊ฐœ๋…์€ ํฐ๊ฐญ, ์ฝ”๋ฅด๋„๋ฐ” ๋“ฑ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์•ฝ๊ฐ„ ๋„˜์–ด์„  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

ํ•˜ํ•˜ ์˜ˆ @jasonwilliams200OK ์ €๋Š” .NET์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ์šฐ๋ฆฌ์˜ ์ ‘๊ทผ ๋ฐฉ์‹/์ „๋žต์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. CSS/JS๋ฅผ ๋งŒ์ง€๋Š” ๊ฒƒ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋งŒ์ง€๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฝ๋ฉธ๋กœ ๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. :stuck_out_tongue:

์˜ˆ๋ฅผ ๋“ค์–ด Xaml(yay)์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ TypeScript(boo)์—๋„ ์˜์กดํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ Fayde ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ถ๊ทน์ ์œผ๋กœ ๋‘ ๊ฐœ์˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๊ธฐ๋ฐ˜(ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์šฉ TypeScript/JS, ๋‹ค๋ฅธ ๋ชจ๋“  ์ฝ”๋“œ์šฉ .NET)์œผ๋กœ ๋๋‚˜๋ฏ€๋กœ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ๋ชจ๋‘์—์„œ ๋งค์šฐ ๋น„์Œ‰๋‹ˆ๋‹ค.

ASPNET์˜ Razor์— ๋Œ€ํ•œ ๋Œ€์ฒด ํ”„๋ก ํŠธ ์—”๋“œ ์—”์ง„

Razor๋Š” ์ œ ์ƒ๊ฐ์— ํ…œํ”Œ๋ฆฟ ์—”์ง„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•ด๋‹น ๋งํฌ์—์„œ "...์ฝ”๋“œ์— ๋Œ€ํ•œ ํ”„๋ก ํŠธ ์—”๋“œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ๊ธด ๋ชฉ๋ก์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

HTML ํŽ˜์ด์ง€ ๋‚ด์—์„œ Razor์™€ ๊ฐ™์€ ํŠน์ˆ˜ํ•œ C#๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด MS๋กœ๋ถ€ํ„ฐ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์‚ฌ์šฉ์ž ์ง€์ • ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

btw, Bridge.net(http://bridge.net) ๋ฐ Fayde์™€ ๊ฐ™์€ XAML ์†”๋ฃจ์…˜๊ณผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํƒ€ C# to Javascript ์ปดํŒŒ์ผ๋Ÿฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

HTML5/JS/etc์—์„œ ๋‹ค์‹œ XAML. WPF๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ํฅ๋ฏธ๋กœ์šด ํ”„๋กœ์ ํŠธ Granular ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Saltarelle์„ ์‚ฌ์šฉํ•˜์—ฌ JS๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์˜ˆ๊ฐ€ ์—ฌ๊ธฐ ์— ์žˆ์Šต๋‹ˆ๋‹ค.

Granular๋Š” ์ •๋ง ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค. @ethanhs. ์ œ๊ฐ€ ๋ฏธ์ฒ˜ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. CSHTML5 , JSIL, Bridge.net( @birbilis ๊ฐ€ ์–ธ๊ธ‰ํ•จ)๊ณผ ๋™์ผํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์œ ์ผํ•˜๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ PCL์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜ ํ•˜๋Š” ๋ฐฉ๋ฒ•.

๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ๊ทธ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ›Œ๋ฅญํ•ด ๋ณด์ด๊ธด ํ•˜์ง€๋งŒ Silverlight์˜ ์ข…๋ง ์ดํ›„ .NET ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฒฌ๋ŽŒ์•ผ ํ–ˆ๋˜ ์ง€์˜ฅ ๊ฐ™์€ ์ƒํ™ฉ์„ ๊ฑฐ์˜ ์š”์•ฝํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๊ณผ ์•ฝ 12๋ช…์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ .NET์ด ์ž‘๋™ํ•˜๋„๋ก "๋‹ค์†Œ" ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ Silverlight ๊ฒฝํ—˜์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋Œ€ํ•˜๋Š” ์ „์ฒด ๊ฒฝํ—˜์€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ Silverlight๋ฅผ ์žŠ๊ฒŒ ๋งŒ๋“œ๋Š” ๋‹จ์ผํ•œ ํ†ตํ•ฉ ์†”๋ฃจ์…˜์€ ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ ์  ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ๋ฐ”๋ž๋‹ˆ๋‹ค. WebAssembly๋Š” ์œ ๋งํ•ด ๋ณด์ด์ง€๋งŒ ํ•œ๋™์•ˆ ์ค‘์š”ํ•œ ๋ฐœ์ „์„ ๋ณด๊ฑฐ๋‚˜ ๋“ฃ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. JSIL ๊ธฐ๋ฐ˜ ํฌํŠธ/์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ ๋Š” ๋‹ค์†Œ ๋Š๋ ค์ง„ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์ง€๋‚œ 10์›” ์ดํ›„๋กœ ์ฒดํฌ์ธ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์—ฌ๊ธฐ์—์„œ ๋ŒํŒŒ๊ตฌ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚ด๋…„ //build์—์„œ ์ด์™€ ๊ฐ™์€ ๋ฐœํ‘œ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :ํ•˜ํŠธ: :+1:

๊ทธ๊ฒƒ์€ XAML์— ์ผ์–ด๋‚œ ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ตœ๊ณ ์˜ ์ผ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ํˆฌํ‘œํ•˜์„ธ์š”!

์ฟจ @bbougot. ๊ฑฐ์˜ 15๊ฐœ์›” ๋™์•ˆ ์กด์žฌํ•œ ํ›„ _๋งˆ์นจ๋‚ด_ ์•ฝ๊ฐ„์˜ ๊ด€์‹ฌ์„ ๋ฐ›์€ ๋˜ ๋‹ค๋ฅธ ํˆฌํ‘œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋”์ฐํ•œ Xaml ์‹œ์Šคํ…œ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ ๊ฑฐ์˜ 3๋…„ ๋™์•ˆ ๊ณ„์‚ฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
https://wpdev.uservoice.com/forums/110705-dev-platform/suggestions/7232264-add-markup-extensions-to-and-improve-winrt-xaml

(์ง„์‹ฌ์œผ๋กœ, ๊ฐ€์žฅ ๋ช…๋ฐฑํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํˆฌํ‘œ๋ฅผ ์ธ์ •ํ•˜๋Š” ๋ฐ 15๊ฐœ์›”? UWP ํŒ€์€ ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? Visual Studio ๋˜๋Š” .NET ํŒ€์€ ์–ธ์ œ ๊ทธ ๋ฐฐ๋ฅผ ์ธ์ˆ˜ํ•˜๊ณ  ๋ฐ”๋กœ์žก์„ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋ฌด์—‡์„ . .. ์•—, ๊ทธ๋ ‡๊ตฐ์š” ๋ฐฉํ™ฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค...)

๋˜ํ•œ ์ด ์Šค๋ ˆ๋“œ์— ํˆฌํ‘œํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํŠนํžˆ GitHub ๋ฐ˜์‘๊ณผ ๊ฐ™์€ ๋ฉ‹์ง„ ํŽธ์˜ ์‹œ์„ค์ด ์žˆ๊ธฐ ์ „์— ์ด ๋ฌธ์ œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ํ˜„์žฌ @ 60์—์„œ ๊ฝค ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

Xaml์€ ์ „์ฒด ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๊ณ„๋ฅผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ๋ ฅ์„ ๊ฐ€์ง„ ์œ ์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค!
DirectX๋ฅผ ์—†์• ๊ณ  OpenGL์„ ์•ˆ์•„์ฃผ์„ธ์š”!
UWP๋Š” PC์—์„œ, ์ „ํ™”๋กœ, ์›น์‚ฌ์ดํŠธ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค!
๋น„๋ฐ” ์ž !

์ž, ์—ฌ๊ธฐ @terrajobst , @harikmenon ๋ฐ @karelz ์— ์‹œ๋ฏผ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ตœ๊ทผ์— ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์„ ๋ณด๋‹ˆ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ์— ์ฐธ์—ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!). ๋‹จ์ˆœํ•œ ํ˜ธ๊ธฐ์‹ฌ์—์„œ ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ๋ชจํ—˜์„ ํ•˜๊ณ  ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ณ ๊ธ‰(๋˜๋Š” ์•„๋‹ ์ˆ˜๋„ ์žˆ๋Š”) GitHub ํ•„ํ„ฐ๋ง์„ ํ™•์ธํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋งŽ์€ ํ‘œ๊ฐ€ ์žˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” URL์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/dotnet/corefx/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc

์ด ๋ฌธ์ œ์—๋Š” ํ˜„์žฌ 82๊ฐœ์˜ ์ฐฌ์„ฑ ํˆฌํ‘œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ณ , ๋‚ด๊ฐ€ ๋งž๋‹ค๋ฉด ๋ชฉ๋ก์—์„œ ๋‹ค์Œ์œผ๋กœ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ•ญ๋ชฉ์€ 17์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ๋Š” ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ/ํˆฌํ‘œ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ฒƒ์ด ์šฐ์„  ์ˆœ์œ„ ๋ฐ/๋˜๋Š” ๊ณ„ํš๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ์ง€๊ธˆ _๋งค์šฐ_ ์ธ๊ธฐ ์žˆ๋Š” ์งˆ๋ฌธ/ํ•ญ๋ชฉ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(๋‹ค์‹œ, ๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด). ๋”ฐ๋ผ์„œ ์•„๋งˆ๋„ ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•  ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋‚˜ ํ™•์ธ์„ ๋“ฃ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ด€์ /๋งฅ๋ฝ์„ ์–ป๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ /๋˜๋Š” ๊ณ ๊ฐ ์š”๊ตฌ์™€ ๊ด€๋ จํ•˜์—ฌ ์™„์ „ํžˆ ์˜คํ•ด๋œ ๊ฒƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ. ๊ทธ๊ฒƒ์€ ์ผ์–ด๋‚œ๋‹ค. ๐Ÿ˜„

๋‹น์‚ฌ์˜ .NET Core ์—”์ง€๋‹ˆ์–ด๋Š” .NET Standard 2.0(๋˜ํ•œ ๋†’์€ ๊ณ ๊ฐ ์š”๊ตฌ ์‚ฌํ•ญ)์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋ฐ ์—ฌ๊ธฐ์—์„œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. .NET Core๋ฅผ ์ตœ์‹  ํ‘œ์ค€์œผ๋กœ ๋งŒ๋“  ํ›„ ํ•ด๋‹น ๋ชฉ๋ก์— ์—†๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

upvotes ์ฟผ๋ฆฌ๋ฅผ ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@karelz ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋งค์šฐ ๊ฐ์‚ฌ. ๐Ÿ‘

๐Ÿ‘ผ ๐Ÿ‘ผ ๐Ÿ‘ผ ์ข‹์•„์š”/๋ฆฌํŠธ์œ— ํ•˜์‹ค ๋ถ„ ๊ณ„์‹ค๊นŒ ํ•ด์„œ ๊ธ€ ๋‚จ๊น๋‹ˆ๋‹ค. ๐Ÿ‘ผ ๐Ÿ‘ผ ๐Ÿ‘ผ
https://twitter.com/MikeEEE76/status/776769805722521600

์ €๋Š” .net ๋ฒ„์ „ 3๋ถ€ํ„ฐ xaml์„ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ Silverlight์˜ ์ถ•์†Œ์™€ ์ฃฝ์Œ๊นŒ์ง€๋„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐœ์„ ์„ ์œ„ํ•œ ๋ณ€ํ™”๋ฅผ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ UWP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋Œ€์‹  ํ‡ด๋ณด๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์ง€๋งŒ ๋ฐ์Šคํฌํƒ‘ ์•ฑ๊ณผ ๊ฐ™์€ ์™„์ „ํ•œ xaml ์ง€์›์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ์—๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” UWP์—์„œ ์ƒˆ๋กœ์šด ์•ฑ์„ ๋งŒ๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๊ณ  ๋‚ด๊ฐ€ ๋ฐฐ์šด ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์‹œ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ์–ด๋ ค์šด ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. xaml ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋””๋กœ ์ด๋™ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์˜จ๋ผ์ธ์—์„œ ๋งŽ์€ ์ง€์›์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋ ˆ์ž„์›Œํฌ ์•„๋ž˜์— ์žˆ๋˜ ํ‘œ์‹œ๊ธฐ๊ฐ€ ๋” ์ด์ƒ ๊ฑฐ๊ธฐ์— ์—†๊ณ  x:static์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์— ๋Œ€ํ•ด ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์˜ˆ์ œ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ xaml์—์„œ ์ƒˆ UWP๋กœ ํ‘œ์‹œํ•˜๋Š” ๋งํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค...

@giworking MS๊ฐ€ ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์— ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค! Satya Nadella์˜ ๋ง์ฒ˜๋Ÿผ azule์€ MS์˜ ํ•ต์‹ฌ์ด์ž ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค. azule์„ ๋†’์ด๋Š” ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์—๋„ˆ์ง€๋Š” ์ „์ฒด .net ์ƒํƒœ๊ณ„์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์— ๋น„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ชฝ์€ ์ฝ”๋”์™€ ๊ธฐ์—…์ด MS์˜ ํด๋ผ์šฐ๋“œ๋ฅผ ์ˆ˜์šฉํ•˜๋„๋ก ์„ค๋“ํ•˜๋Š” ๊ฑฐ์˜ ์œ ์ผํ•œ ๋ฌด๊ธฐ์ž…๋‹ˆ๋‹ค(์ค‘๊ตญ์—์„œ .net์€ ์ •๋ง ์น˜๋ช…์ ์ธ ์ƒํ™ฉ์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ž๋ฐ”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  "f k s t xamarin์ด ๋ฌด์—‡์ธ๊ฐ€์š”?"๋ผ๊ณ  ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ....). ๊ทธ๋ž˜์„œ ์ค‘๊ตญ ์ฝ”๋”๋กœ์„œ xamarin, uwp, typescript ๋ฐ cshtml5๋ฅผ ๋ณผ ๋•Œ ์ „์ฒด ํด๋ผ์ด์–ธํŠธ ์ธก์„ xaml+C# ๋ชจ๋“œ๋กœ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์™œ ์šฐ๋ฆฌ MS ์นœ๊ตฌ๋“ค์€ if๋กœ ์ค‘๊ตญ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋˜๋Œ๋ฆฌ์„ธ์š”?

์™€์šฐ, ์ด ๋ฌธ์ œ๋Š” ์ด์ œ 100๊ฐœ ์ด์ƒ์˜ ์ถ”์ฒœ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค! ์ง€์ง€๋ฅผ ๋ณด๋‚ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด @terrajobst ์˜ ์—„์ฒญ๋‚œ ์ƒํ‘œ ๊ฐœ๋ฐœ์ž ์ฐธ์—ฌ๊ฐ€ ํฌํ•จ๋œ ์ •๋ง( ์ •๋ง๋กœ! ) ํ›Œ๋ฅญํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์—ฌ๊ธฐ ๋Œ“๊ธ€์— ์žˆ์Šต๋‹ˆ๋‹ค.
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/

(์ง„์‹ฌ์œผ๋กœ, ํšŒ์‚ฌ ๊ธฐ๋ฐ˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฒŒ์‹œํ•˜๋Š” ๋ชจ๋“  MSFT ์ง์›์€ ๊ฒŒ์‹œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ Landwerth ์”จ์˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ผ์•ผ ํ•˜๋ฉฐ ์ดํ›„์— ๋ฐœ์ƒํ•˜๋Š” ๋ถˆ๊ฐ€ํ”ผํ•˜๊ณ  ์…€ ์ˆ˜ ์—†์ด ๋งŽ์€ ๋Œ“๊ธ€์— ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ MSFT ์ž‘์„ฑ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹จ์ˆœํžˆ ๊ฒŒ์‹œ๋ฌผ์ด ๋งˆ๋ฅด๋„๋ก ๋‚ด๋ฒ„๋ ค๋‘๊ณ  ์งˆ๋ฌธ์„ ์ฃฝ์€ ์‚ฌ๋žŒ์œผ๋กœ ๋‚จ๊ฒจ ๋‘์‹ญ์‹œ์˜ค. ๋ฌผ๋ก  ์ด๋Š” ์ฒญ์ค‘์„ ๋Œ€ํ•˜๋Š” ๋”์ฐํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค!)

์–ด์จŒ๋“ , ์•„์ง ์ฝ์ง€ ์•Š์•˜๋‹ค๋ฉด ํŠนํžˆ ๋Œ“๊ธ€์„ ์ฝ์„ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ง€๊ธˆ ๊ฒŒ์‹œํ•˜๋Š” ์ด์œ ๋ฅผ _System.Xaml์„ .NET Standard/๊ต์ฐจ ํ”Œ๋žซํผ ์‹œ๋Œ€๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ์—ด์ •/์—ด๋ง๊ณผ ํ•จ๊ป˜ ๋Œ“๊ธ€์— ์–ธ๊ธ‰๋œ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค_. ๐Ÿ‘

154๊ฐœ์˜ ์ฐฌ์„ฑํ‘œ... ๊ทธ๋ฆฌ๊ณ  ๊ณ„์‚ฐ ์ค‘์ž…๋‹ˆ๋‹ค. ๐Ÿ˜Ž ๊ทธ ๋‹ค์Œ์œผ๋กœ ๋†’์€ ํ˜ธ๋Š” 25 ํ™” ์ž…๋‹ˆ๋‹ค. #squeakywheel

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์„œ ํƒ€!

์ˆ˜๋งŒ ๋ช…์˜ Windows 7 ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ตœ์ดˆ ๋‹ค์šด๋กœ๋“œ/์„ค์น˜ ๊ฒฝํ—˜์„ ๊ทน์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด .NET Native๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” WPF๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” @ReactWindows ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ React Native๋ฅผ Linux๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์ž ์žฌ์ ์œผ๋กœ @ReactWindows ๊ณต์œ  ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์ง€๋งŒ Xamarin.Forms๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค.

NETCore vNext์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” System.Xaml(๋ฐ WindowsBase, PresentationCore ๋ฐ Xamarin.Forms์˜ ๊ธฐํƒ€ ํ˜•์‹/๋ฉ”์„œ๋“œ/์–ด์…ˆ๋ธ”๋ฆฌ ์ข…์†์„ฑ)์ด ์ด ์ „๋žต์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ๋Œ€์ƒ์„ ๋‹ค์‹œ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ Mono์˜ System.Xaml์—์„œ ๋ˆ„๋ฝ๋œ ์œ ํ˜•/๋ฉ”์„œ๋“œ๋ฅผ ์ฑ„์šฐ๊ณ  .NET Core์šฉ์œผ๋กœ ๋นŒ๋“œํ•˜์—ฌ ์ด ๊ฒฐํ•จ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” Microsoft๊ฐ€ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ ๋‹ค์Œ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ.. /cc @rozele @pre10der89

@matthargett ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค. .net ์ฝ”์–ด์— ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๊ฒ€ํ† ํ•  ๋•Œ ์ด ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด xaml ํŒ€์— ์—ฐ๋ฝํ•˜๊ธฐ๊นŒ์ง€ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ System.Xaml์„ ์—ฌ๋Š” ๋ฐ ์›๊ฒฉ์œผ๋กœ ๊ด€์‹ฌ์กฐ์ฐจ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณดํ˜ธํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

4์›” ๋ง์— 2.0 ๋ฆด๋ฆฌ์Šค ์ดํ›„์— ๊ณ ๋ ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ WF๋ฅผ netstandard1.x ๋กœ ์ด์‹ํ•˜๊ธฐ ์œ„ํ•ด System.XAML์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WF์˜ ํ•ต์‹ฌ์ด ์ž‘๋™ํ•˜๋Š” @dmetzgar ์˜ ํ›Œ๋ฅญํ•œ ์ž‘์—…์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ์ฃผ์š” ๋ถ€๋ถ„์€ ๊ฒฐ๊ตญ netstandard2.x ์— ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์ž…๋‹ˆ๋‹ค.

@dmetzgar ํฌํŠธ์˜ ์ฃผ์š” ์ง€์นจ์€ ์ฝ”์–ด์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋””์ž์ธ ์–ธ์–ด๋„ ๋ฌถ์ง€ ์•Š๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๋Œ€๋กœ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ง๋ ฌํ™”ํ•˜๊ณ  ๋‚˜์ค‘์— ๊ทธ ์œ„์— ๋””์ž์ด๋„ˆ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ˜„์žฌ XAML ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์™€ ์—ญํ˜ธํ™˜๋˜์ง€ ์•Š์ง€๋งŒ .Net Core๋กœ ๋ฌด์—‡์ด๋“  ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์ด ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

XAML ๋””์ž์ด๋„ˆ๋ฅผ ์œ„ํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” OminiSharp๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ๋””์ž์ธ/์ง๋ ฌํ™”๋Š” WF ์ฝ”์–ด์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. .Net Core์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šฌ๋ฆผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด WF๋ฅผ .Net Core๋กœ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํžˆ ๋ฐํ˜”๊ณ , System.XAML ํŒ€์— OSS์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์€ ์ƒ์‚ฐ์ ์ด์ง€ ๋ชปํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. XAML ํŒ€์—๋Š” ๋‹ค๋ฅธ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ Windows/UWP/Xamarin ๋น„์ฆˆ๋‹ˆ์Šค์˜ ํ•ต์‹ฌ์ด๋ฏ€๋กœ ๋„ˆ๋ฌด ๋นจ๋ฆฌ OSS๋ฅผ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ ๋Œ€์‹  @dmetzgar ์—๊ฒŒ .Net Foundation์—์„œ WF ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ณต์‹์ ์œผ๋กœ ๊ณต๊ฐœํ•˜๊ณ  netstandard2.x ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ์ผ์ •์ด๋‚˜ ์•ฝ์† ์—†์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์•ˆ๋‚ดํ•˜๊ณ  ์‹คํ–‰ํ•˜๋„๋ก ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์˜ ํŒ€์ด ์ฃผ๋„ํ•˜๋Š” ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์ด ๋  ๊ฒƒ์ด๋ฉฐ, ๋ถ„๋ช…ํžˆ ๋•๊ณ ์ž ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋„์›€์„ ๋ฐ›์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Orleans ํ”„๋กœ์ ํŠธ์—์„œ ์ƒํ™ฉ์ด ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๋Š”์ง€ ๋ณด์„ธ์š”... ์ž‘๋…„์— OSSed๋ฅผ ๋ฐ›์€ ๊ฒƒ์€ Microsoft Research์˜€์œผ๋ฉฐ .Net Foundation์—์„œ ๊ฐ€์žฅ ํฌ๊ณ  ๊ฐ€์žฅ ํ™œ๋™์ ์ธ ์ €์žฅ์†Œ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋…ธ๋ ฅ์— ์˜ํ•ด ์ฃผ๋„๋ฉ๋‹ˆ๋‹ค(์—ฌ์ „ํžˆ MSFT ํŒ€ ํ’€ํƒ€์ž„ ๊ทผ๋ฌด).

์–ด์จŒ๋“ , IMHO, ๋‚ด ์ƒ๊ฐ์— ์šฐ๋ฆฌ๋Š” ์žฅ๋‚œ์„ ๋ฉˆ์ถ”๊ณ  ๋ญ”๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @dmetzgar ํŒ€์€ ๊ธฐ๋ณธ์ ์œผ๋กœ .net ์ฝ”์–ด์— ์ ‘๊ทผํ•  ๊ณ„ํš์ด ์—†๋Š” WF์˜ ์ฃผ์š” ์‚ฌ์šฉ์ž๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ์ด๋ฏ€๋กœ ์ž‘์—…ํ•  ๋Œ€์—ญํญ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„( @dmetzgar ํŒ€์˜ ๊ฐ๋…) ๋…ธ๋ ฅ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ WF๋ฅผ netstandard1.x๋กœ ์ด์‹ํ•˜๊ธฐ ์œ„ํ•ด System.XAML์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

@galvesribeiro ๊ทธ๊ฑด ์‚ฌ์‹ค์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” System.Xaml์„ .NET Core๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ค‘ .NET ํŒ€์ด ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋‹จ์—ฐ์ฝ” ๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ๋˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์™œ ์š”์ฒญํ•ฉ๋‹ˆ๊นŒ? ์–ด์จŒ๋“  WF๋Š” ๋‹จ์ˆœํžˆ System.Xaml ํฌํŠธ๊ฐ€ ์ถฉ์กฑํ•  ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘ _ํ•˜๋‚˜_์ž…๋‹ˆ๋‹ค. ์•„์‹œ๋‹ค์‹œํ”ผ(๋˜๋Š” ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๋‹ค!) System.Xaml์€ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XAML ํŒ€์—๋Š” ๋‹ค๋ฅธ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ Windows/UWP/Xamarin ๋น„์ฆˆ๋‹ˆ์Šค์˜ ํ•ต์‹ฌ์ด๋ฏ€๋กœ ๋„ˆ๋ฌด ๋นจ๋ฆฌ OSS๋ฅผ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋„ค, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์—ฌ๊ธฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ข…์˜ ๋ฌธ์ œ์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :) ๊ทธ๋ฆฌ๊ณ  ์š”์ฆ˜์€ 'Xaml ํŒ€'์ด ์žˆ๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒ ๊ตฐ์š”, ์žˆ์ฃ ?! ์ •๋ง ์ด ๊ธฐ์ˆ ์ด ์ค‘๋‹จ๋˜์—ˆ๋‹ค๊ณ  ๋Š๋ผ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด์— ๋Œ€ํ•œ ๋Œ€์•ˆ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , IMHO, ๋‚ด ์ƒ๊ฐ์— ์šฐ๋ฆฌ๋Š” ์žฅ๋‚œ์„ ๋ฉˆ์ถ”๊ณ  ๋ญ”๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. FWIW, @SuperJMN ์€ ๋ฐฉ๊ธˆ OmniXamlv2.0 ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MSFT๊ฐ€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—๋„ˆ์ง€์™€ ๋…ธ๋ ฅ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋™์•ˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋…ธ๋ ฅ์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

๋งํ•˜์ž๋ฉด @terrajobst ์˜ ์ธ์šฉ๋ฌธ๊ณผ ํ•จ๊ป˜ ์ •ํ™•ํžˆ ์ด์— ๋Œ€ํ•œ ์ข‹์€ ์Šค๋ ˆ๋“œ (์ฆ‰, ์ด์— ๋Œ€ํ•œ MSFT์˜ ๋น„ํ™œ์„ฑ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด System.Xaml์ด ํ”Œ๋žซํผ ๊ฐ„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๋ง์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ System.Xaml์ด WPF ๋ฐ WF ์™ธ๋ถ€์—์„œ๋Š” ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ NuGet์€ ํ•ด๋‹น ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•œ ํ•ฉ๋ฆฌ์ ์ธ ํ”„๋ก์‹œ ๋ฉ”ํŠธ๋ฆญ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  System.Xaml์€ UI ์˜์—ญ ์™ธ๋ถ€์—์„œ ์˜๋ฏธ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ฐจ๋ผ๋ฆฌ ์ง€๊ธˆ ๋ฐ”๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๊ธฐ๋ฐ˜์ด ํ†ตํ•ฉ๋˜์–ด System.Xaml๊ณผ ๊ฐ™์€ ์ƒ์œ„ ์ˆ˜์ค€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ด์‹ํ•˜๋Š” ๊ฒƒ๋„ ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์–‘์žํƒ์ผ์˜ ์ง„์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹คํ–‰ ๋ช…๋ น๋ฌธ์ž…๋‹ˆ๋‹ค.

System.Xaml์ด WPF/WF ์™ธ๋ถ€์—์„œ ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๋งค์šฐ ์ž˜๋ชป๋œ ์„ค๋ช…์„ ์ œ์ณ๋‘๊ณ , ์ด ๋ชจ๋“  ๊ฒƒ์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์˜๋„๊ฐ€ ์ „ํ˜€ ์—†๋Š” ์ €์—๊ฒŒ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. Immo์™€ ๊ทธ๊ฐ€ ์—ฌ๊ธฐ์„œ ํ•˜๋Š” ์œ„๋Œ€ํ•œ ์ผ์„ ์ „์ ์œผ๋กœ ์ง€์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ๋ชฉํ‘œ๋Š” ๊ทธ ๋ฐœ์–ธ์— ๋Œ€ํ•ด ๋น„ํŒ์ ์ธ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ €๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์–ธ์–ด๊ฐ€ ์ €๋ฅผ ์ž ์‹œ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๊ณ  ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ด€๋ง(๋˜๋Š” ์˜คํžˆ๋ ค "๋‚ด๊ฐ€ ๋ณผ ๋•Œ ๊ทธ๊ฒƒ์„ ๋ฏฟ์œผ์‹ญ์‹œ์˜ค" LOL!) ์ž…์žฅ์— ๋†“์ด๋„๋ก ํ—ˆ์šฉํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋ธ”๋ก ์ฃผ์œ„์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ ์ €๋Š” .NET Standard 2.0์˜ ํ˜„์žฌ ๋…ธ๋ ฅ์„ ์ง€์›ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์˜ˆ์ƒ๋ณด๋‹ค ๋‚˜์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ Windows ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•˜๋Š” .NET Core ํ”„๋กœ์ ํŠธ์šฉ System.Xaml์„ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ €์—๊ฒŒ ์ถฉ๋ถ„ํ•œ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ๐Ÿ‘

@Mike-EEE ๋จผ์ € ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. https://github.com/dotnet/corefx/issues/2394 oO ์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•ด ํšŒ์‹ ์„ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ๋„ˆ๋ฌด ์—ฌ๋Ÿฌ ๋ฒˆ ์—ฐ๊ด€๋˜์–ด ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.

๋‘˜์งธ, XAML์ด UI์—๋งŒ ์œ ์šฉํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. TFS ๋นŒ๋“œ, WF ์ž์ฒด ๋ฐ ์ตœ๊ทผ์—๋Š” UI์—์„œ ์ˆ˜๋…„ ๋™์•ˆ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Azure ML๊ณผ ๊ฐ™์€ DSL๊ณผ XAML์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํƒ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•˜๋ ค๋Š” ๊ฒƒ์€ XAML์ด .Net Core๋กœ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ์ด์‹๋˜๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Immo๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๊ทธ๋“ค์€ ๋จผ์ € ํ˜„์žฌ ํ”Œ๋žซํผ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .Net Core์—๋Š” ์•„์ง ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ์กฐ์ž‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ WPF์—์„œ UWP์˜ ์ทจ์•ฝํ•˜๊ณ  ๋ถ€์กฑํ•œ ๊ธฐ๋Šฅ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ XAML ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ์ด OSS๋ฅผ ๋ฐ›๊ธฐ ์ „์— ํ†ต์ผ๋˜๊ณ  ์•ˆ์ •ํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์•ˆ์—์„œ ์ผํ•˜๋Š” ํŒ€์ด ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์ž์›์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•ด์•ผํ•œ๋‹ค๋ฉด ๊ทธ๋“ค๋ณด๋‹ค diff๋ฅผํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

WF์™€ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ ์ด์ „ ์˜๊ฒฌ์€ ๋Œ€๋ถ€๋ถ„ ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด WF์—์„œ ์ฝ”์–ด๋กœ์˜ ์ด์‹์ด ๊ทธ๋ ‡๊ฒŒ ๋นจ๋ฆฌ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์œผ๋ฉฐ ์ด๋Š” ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค .

์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ๋„ˆ๋ฌด ์ž์ฃผ ๊ด€๋ จ๋˜์–ด ์žˆ์–ด์„œ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.

ํ•˜ํ•˜ @galvesribeiro ์ €๋„ ๊ทธ๊ฒŒ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ €๋ฅผ ๋ฌผ์—ˆ๋Š”์ง€ ๋‹น์‹ ์—๊ฒŒ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์ธ์ •ํ•˜๊ธฐ๊ฐ€ ๋‘๋ ต์Šต๋‹ˆ๋‹ค). ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ๋‚˜๋Š” ํ•˜๋‚˜์— ๊ด€๊ณ„์—†์ด ์ž…๋ ฅ์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

FWIW, @cwensley ๋„ @ Portable.Xaml ์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ํ›Œ๋ฅญํ•œ ์ผ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— System.Xaml์˜ ๋ชจ๋…ธ ๊ธฐ๋ฐ˜ ์ ์‘์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ†ตํ•ด ์›๋ž˜ ๋ฒ„์ „๋ณด๋‹ค ๋” ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ๋ง›/์˜ต์…˜์˜ ์›๋ž˜ System.Xaml ๊ฒฝํ—˜์— ๊ฐ€์žฅ ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ๋…ธ๋ ฅ์„ ์œ„ํ•œ ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์•„์นจ์— ์นดํŽ˜์ธ์œผ๋กœ ์ธํ•œ 2์„ผํŠธ๋งŒ.

System.Xaml์„ .NetCore๋กœ ์ด์‹ํ•˜์‹ญ์‹œ์˜ค.

FWIW, ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด 200๊ฐœ ์ด์ƒ์˜ ํˆฌํ‘œ๊ฐ€ ์žˆ์—ˆ๊ณ  ํ˜„์žฌ 202์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋†’์€ ๋ฌธ์ œ๋Š” 47์— ์žˆ๋Š” dotnet/corefx#13526์ž…๋‹ˆ๋‹ค. WAS 47... ์ง€๊ธˆ์€ 48์— ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. :) (๊ฐ€์„œ ์‚ฌ๋ž‘์„ ๋ณด์—ฌ์ค˜, ์ข‹์€ ์ƒ๊ฐ์ด์•ผ.) #squeakywheel

@Mike-EEE ;-)๋ฅผ ์ƒ๊ธฐ์‹œ์ผœ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€์น˜๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด: ์šฐ๋ฆฌ๋Š” ์•„์ง ๊นŠ์ด ํŒŒ๊ณ ๋“ค ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ 3์›”๊นŒ์ง€ "์•„์ง ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ํ•˜๋”๋ผ๋„ ๋‹ค์Œ ๊ณต์‹ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์–ธ๊ธ‰์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. (๋ฉด์ฑ… ์กฐํ•ญ: ๋‚˜๋Š” ์ตœ์„ ์˜ ๊ฐœ์ธ์ ์ธ ์ถ”์ธก์„ ์ „๋‹ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ํŒ€ ์•ฝ์†์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!).

์ง€๋‚œ ์‹œ๊ฐ„์— ์ด ๋ฌธ์ œ๋ฅผ ์กฐ๊ธˆ ๋…ผ์˜ํ–ˆ์„ ๋•Œ ํŠ€์–ด๋‚˜์˜จ ํ•ต์‹ฌ ์งˆ๋ฌธ์€ 200๊ฐœ ์ด์ƒ์˜ ํˆฌํ‘œ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ์ง„์ •์œผ๋กœ System.Xaml๊ณผ WPF์— ๊ด€ํ•œ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด ๋‘˜์„ ๊ตฌ๋ณ„ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฐ€์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ? (์˜ˆ: 2๊ฐœ์˜ ํŠน์ • ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ WPF์— ํˆฌํ‘œํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๋Œ€์‹  "WPF๊ฐ€ ์•„๋‹Œ ์ˆœ์ˆ˜ํ•œ Xaml")

๋˜ํ•œ ๋ช‡ ๊ฐ€์ง€ ์šฐ์„  ์ˆœ์œ„ ์ถ”์ •๊ณผ ํ•จ๊ป˜ System.Xaml์— ๋Œ€ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ์š”์•ฝ ๋ชฉ๋ก์ด ์žˆ์œผ๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ˜„์žฌ ๊ธด ํ† ๋ก ์— ๊ฑธ์ณ ํฉ์–ด์ ธ ์žˆ์Œ). @Mike-EEE ์šฐ๋ฆฌ๊ฐ€ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (ํ•ด๋‹น ๋ถ„์•ผ์— ๋Œ€ํ•œ ๊นŠ์€ ๊ด€์‹ฌ๊ณผ ๊นŠ์€ ์ง€์‹์„ ๊ฐ–๊ณ  ๊ณ„์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

ํ™•์‹คํžˆ System.Xaml ๋Š” ์‚ฌ๋žŒ๋“ค์ด @karelz๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ WPF๋ฅผ ์—ฌ๊ธฐ์—์„œ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด IMHO๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ System.Xaml์„ ์‚ฌ์šฉํ•˜๋Š” WF, TFS Build ๋“ฑ๊ณผ ๊ฐ™์€ XAML์„ ํ™œ์šฉํ•˜๋Š” ๋งŽ์€ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@karelz ์—ฌ๊ธฐ์— ๋‹ต์žฅ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @galvesribeiro ๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด System.Xaml์€ ๋‹จ์ˆœํ•œ UI ์ด์ƒ์ด๋ฉฐ ๋ถˆํ–‰ํžˆ๋„ ๋งŽ์€ MSFT๊ฐ€ ๋†“์น˜๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ์ดํ•ด์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์ง๋ ฌํ™” ์†”๋ฃจ์…˜์„ ๋Šฅ๊ฐ€ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ง๋ ฌํ™” ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๋ช…ํ•  ๋•Œ ๊ฐ€์žฅ ์ž˜ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค(๊ฒฐ๊ตญ ์ด๋ฆ„์˜ "A"). ๋ถˆํ–‰ํžˆ๋„ "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"์€ "UI"์™€ ๋ณ‘ํ•ฉ๋˜์–ด ์—ฌ๊ธฐ์—์„œ ๋งˆ์ฐฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ์ธก๋ฉด์„ ๊ฐ„๊ณผํ•˜๋Š” ๊ฒƒ์€ UWP์˜ ์ฃผ์š” ์‹คํŒจ์˜€์œผ๋ฉฐ ์•„๋ฌด๋„ UWP๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ Xamarin์€ Xaml์˜ ํŠน์ง•์—์„œ ์ด ํ•ต์‹ฌ ์ธก๋ฉด์„ ์ดํ•ดํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๋‚ด๋ถ€์ ์ด๋ฉฐ ๊ถŒ์œ„ ์žˆ๋Š” ์ผ๋ฅ˜ ์ œํ’ˆ์œผ๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์—ฌ๊ธฐ์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค).

TBH, @cwensley ์˜ Portable.Xaml ์— ์žˆ๋Š” System.Xaml ํฌํŠธ๋Š” ํ˜„์žฌ ์„ ๋‘์ฃผ์ž์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” Mono์˜ System.Xaml(์ „๋ฐ˜์ ์œผ๋กœ ์นœ์ˆ™ํ•œ API ์œ ์ง€)์„ ์ด์‹ํ–ˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ System.Xaml๋ณด๋‹ค _๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ์ด ๋ฌธ์ œ๋Š” @cwensley ์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•˜์—ฌ ์•ž์œผ๋กœ ์‚ฌ์šฉํ•  ๊ถŒ์œ„ ์žˆ๋Š” ํ”Œ๋žซํผ ๊ฐ„ Xaml ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ ๊นŒ๋‹ค๋กœ์›Œ์ง€๊ณ  ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ (์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ) ๋ณต์žกํ•œ ๊ด€์ ์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. System.Xaml์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๋ช…ํ•˜๋Š” ํ‘œํ˜„๋ ฅ์ด ํ’๋ถ€ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์–ธ์–ด(์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ)๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ Visual Studio(๋ฌผ๋ก  Blend)์— ๋‚ด์žฅ๋œ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ ์ง€์›๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ƒ์ ์œผ๋กœ๋Š” ๋™์ผํ•œ ํ›Œ๋ฅญํ•œ ๊ฒฝํ—˜์„ ๊ณ„์†ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ๋“  Xaml์˜ ๋””์ž์ด๋„ˆ ๊ฒฝํ—˜์„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐฉ์‹์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์—ฌ๊ธฐ์„œ ๋…ผ์˜ํ•˜๋Š” ๋ฉ‹์ง„ ์ผ€์ดํฌ ์œ„์— ์ฒด๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๋˜ํ•œ ์—ฌ๊ธฐ์„œ ๋ฐ˜๋ณตํ•ด์„œ Xaml์˜ ์•ฝ์†(๋ฐ ์ œ๊ณต)์€ ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ ๊ฐœ์„ ์ด๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ถ๊ทน์ ์œผ๋กœ ์ด๊ฒƒ์„ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ ๊ฐœ๋ฐœ๊ณผ _devops_ ๊ฐ„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฆ‰, devops๊ฐ€ ์•„๋ฆ„๋‹ต๊ฒŒ ๋””์ž์ธ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ ํŽธ์ง‘๊ธฐ(Xaml ๊ธฐ๋ฐ˜)์—์„œ ์ž‘๋™ํ•˜์—ฌ ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์„ธ์ƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

_์—ฌ๊ธฐ์„œ ์ „์ฒด ์•„์ด๋””์–ด๋Š” ์ฝ”๋”ฉ์—์„œ ๋ฐฐํฌ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ์ „์ฒด ๋น„์šฉ์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ํŽธ์ง‘์ž ๋ฐ ๋””์ž์ด๋„ˆ์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ๋งˆ์ˆ ์„ ์‹คํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ(๋ฐ/๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ)์— ์†์„ ๋„ฃ์–ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์„ ์ฐพ์•„์„œ ๊ณ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค (์ž์› ๊ด€์ ์—์„œ) ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค._

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋น„์ „ ๊ด€์ ์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์•Œ๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ์ด ์†Œ์‹์„ ๋“ฃ๊ณ  ์–ผ๋งˆ๋‚˜ ๊ด€์‹ฌ์ด ์žˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜‰ ๊ทธ๋ž˜์„œ, ๋งŒ์•ฝ ์ด๊ฒƒ์ด ๋‹จ์ˆœํžˆ "์ด ๋ฌธ์ œ๋ฅผ ๋๋‚ด๊ณ  ๋‹น์‹ ์„ ๋– ๋‚˜๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ• ๊นŒ์š”?" ๋‚˜๋Š” Wensley ์”จ์™€ ํ•จ๊ป˜ ์ผํ•  ๊ฐ€๋Šฅ์„ฑ์„ ํƒ๊ตฌํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ทธ์˜ ์œ„๋Œ€ํ•œ ์—…์ ์„ ์ง€๊ธˆ๊นŒ์ง€ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€(๋˜๋Š” ๊ทธ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐ ์—ด๋ ค ์žˆ๋Š”์ง€) ๋ณผ ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. .NET Core Wave 2 ๋ฆด๋ฆฌ์Šค(5์›”์ฏค?)๋ฅผ ์œ„ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ๊ฐ„ Xaml ํŒจํ‚ค์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ๋„๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. :)

์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ํ™•์‹คํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด์ „ ์งˆ๋ฌธ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ์ง€์ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋‚˜๋Š” ์„ธ๋ถ€ ์‚ฌํ•ญ์— ํ™•์‹คํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” MSFT ์ธก์—์„œ Xaml != WPF์— ๋Œ€ํ•ด ์ด์˜๋ฅผ ์ œ๊ธฐํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™•์‹คํžˆ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š์•˜๋‹ค. ๋‚˜๋Š” ๋‚ด๊ฐ€ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ๊ฒฉ์ฐจ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, "์ˆœ์ˆ˜ Xaml" ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋™๊ธฐ์™€ ํ•„์š”์„ฑ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
(BTW: ๋‚˜๋Š” ๋‹น์‹ ์˜ devops ์‹œ๋‚˜๋ฆฌ์˜ค์™€ Xaml์ด ์–ด๋–ป๊ฒŒ ๊ฑฐ๊ธฐ์— ๋„์›€์ด ๋˜๋Š” ์œ ์ผํ•œ/๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ์ง€ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?)

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋๋‚ด๋ ค๊ณ  ์—ฌ๊ธฐ์— ์˜จ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ œ๋ฐœ! ๊ทธ๊ฒƒ์กฐ์ฐจ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•˜๋‹ค. ์ €๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์š”์ฒญ์„ ์š”์•ฝํ•˜์—ฌ ์ ์ ˆํ•œ ์‚ฌ๋žŒ๋“ค๊ณผ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ์œ„ํ•ด ์™”์Šต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ์ด์‚ฌ๋ฅผ ์ƒ๊ฐํ•˜์„ธ์š”). ์˜ˆ, ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ์ €(๋ฐ/๋˜๋Š” ๋‹ค๋ฅธ MSFT ๋ช‡ ๋ช…)๊ฐ€ ๋” ๋†’์€ ๊ณณ์—์„œ ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ์š”์ฒญ์„ ์™„์ „ํžˆ ์ดํ•ดํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ธฐ ์ „์— Xaml๊ณผ WPF๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ์˜ ์ข‹์€ ์˜ˆ๋ผ๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. .NET ํŒ€์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ์˜ ๋ฌด์ž‘์œ„ ์ฑ„ํŒ…์—์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Xaml != WPF๋ฅผ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์†Œ๊ฐœ๋˜๋Š” ์ˆœ์ˆ˜ํ•œ Xaml์„ ๊ฐ–๋Š” "๊ฑฐ๋Œ€ํ•œ ๊ฐ€์น˜"๋ฅผ ๋ณด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์œ„์˜ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋™๊ธฐ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์ด์•ผ๊ธฐ๋ฅผ ๋” ์ž˜ ์•Œ๋ฆฌ๊ณ  ํŒ๋งคํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. (๋ช…ํ™•ํ•œ ์Šคํ† ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ ์•„๋ฌด๋„ ํŽ€๋”ฉ์„ ๊บผ๋ฆฐ๋‹ค๊ณ  ํ•ด์„œ ๋†€๋ผ์ง€ ์•Š์•˜์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. :) - ์Šคํ† ๋ฆฌ๋Š” ํŽ€๋”ฉ์˜ ์ „์ œ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค)
๊ทธ๋Ÿผ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•ด ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ ํ”ผ์น˜๋ฅผ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค.

@cwensley ์˜ ์ž‘์—…๊ณผ ๊ด€๋ จํ•˜์—ฌ - ๊ทธ๋ฆฌ ๋น„์‹ธ์ง€ ์•Š์€ ์†”๋ฃจ์…˜์ด ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ํ•œ ๋ฒˆ, ์†”๋ฃจ์…˜์— ๋›ฐ์–ด๋“ค๊ธฐ ์ „์— ๋จผ์ € ๋ฐฐ๊ฒฝ๊ณผ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. (๋‚˜๋Š” ๋ฌด์‹œํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ WHY๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋™์˜ํ•  ๋•Œ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค)

@galvesribeiro ๋ˆ„๊ตฐ๊ฐ€ ์—ฌ๊ธฐ์—์„œ WPF์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค IMHO

ํˆฌํ‘œํ•œ 200๋ช… ์ด์ƒ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด Xaml != WPF๋ฅผ ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ง„์ •์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ํ™•์‹ ์„ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ์†Œํ•œ ๋ช‡ ๊ฐ€์ง€ ์‚ดํŽด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋จผ์ € Xaml์„ ๊ฐ€์ ธ์™€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด WPF๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” WPF์ธ ๋ฐ˜๋ฉด "์ˆœ์ˆ˜ Xaml"์€ ์ด๋ฅผ ํ–ฅํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค (์ ์–ด๋„ .NET ํŒ€์—์„œ ์ด๋Ÿฌํ•œ ์˜๊ตฌ์‹ฌ์„ ๊ฐ€์ง„ ์œ ์ผํ•œ ์‚ฌ๋žŒ์€ ์•„๋‹ˆ์ง€๋งŒ) ...
๋˜ ๋‹ค๋ฅธ ๊ฐ๋„๋Š” "์ˆœ์ˆ˜ Xaml"์„ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ชฉ๋ก(WPF, ์œ„์˜ devops, ๋ช‡ ๊ฐ€์ง€ ๋”?)์œผ๋กœ ๋‚˜๋ˆˆ ๋‹ค์Œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํˆฌํ‘œ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํˆฌํ‘œํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ง„์ •์œผ๋กœ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ์ง„์ •์œผ๋กœ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
(์ด๊ฒƒ์€ ์ง€์—ฐ ์ „์ˆ ์ด๋‚˜ ์•…์˜์  ์ธ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ "๊ณ ๊ฐ"์„ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์— ๋„๋‹ฌํ•˜๋Š” ๋” ๋‚˜์€ ์ œ์•ˆ์ด ์žˆ์œผ๋ฉด ์˜๊ฒฌ์„ ๋งํ•˜์‹ญ์‹œ์˜ค. ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์— ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. )

ํŽธ์ง‘: ํ‰์†Œ์™€ ๊ฐ™์ด ๋‚ด๊ฐ€ ๋ฌธ์ œ์— ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋ง์”€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ์ตœ์„ ์„ ๋‹คํ•ด ๋„์™€์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์„ ์˜ ์˜๋„๋กœ์š”. ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ํ™˜์ƒ์ด๋‚˜ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋ณด๋‹ค ๋˜‘๋˜‘ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@karelz WPF๋ฅผ ์ „ํ˜€ ์ข‹์•„ํ•˜์ง€ ์•Š๋”๋ผ๋„ XAML์ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํœ ์„ ์žฌ๋ฐœ๋ช…ํ•˜๊ณ  ๊ณ ์œ ํ•œ ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋งŽ์€ UI ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฐœ๋กœ๋‹ˆ์•„๋Š” ์ƒ์œ„ ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ๋„ค์ดํ‹ฐ๋ธŒ XAML์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ Omnisharp๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Workflow Foundation์€ XAML์˜ ํฐ ์‚ฌ์šฉ์ž/๊ณ ๊ฐ์ด๋ฉฐ Port WF์—์„œ .Net Core ์Šค๋ ˆ๋“œ๋กœ์˜ ์‚ฌ๋žŒ๋“ค์€ ํ•ญ์ƒ ์ด์— ๋Œ€ํ•ด ๋ฌป์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์˜ˆ๋ฅผ ๋“ค์–ด UI ๋ฐ WF์™€ ๊ฐ™์€ ์›ํ•˜๋Š” ์‚ฌ์šฉ๋ฒ•๊ณผ ํ•จ๊ป˜ ํ”Œ๋žซํผ ๊ฐ„ System.Xaml ์—์„œ ๊ธฐ๋Œ€๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€์น˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์›์‹œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๊ทธ๋ ค์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@karelz

๋˜ํ•œ ์ตœ์†Œํ•œ ๋ช‡ ๊ฐ€์ง€ ์‚ดํŽด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋จผ์ € Xaml์„ ๊ฐ€์ ธ์™€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด WPF๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” WPF์ธ ๋ฐ˜๋ฉด "์ˆœ์ˆ˜ Xaml"์€ ์ด๋ฅผ ํ–ฅํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค (์ ์–ด๋„ .NET ํŒ€์—์„œ ์ด๋Ÿฌํ•œ ์˜๊ตฌ์‹ฌ์„ ๊ฐ€์ง„ ์œ ์ผํ•œ ์‚ฌ๋žŒ์€ ์•„๋‹ˆ์ง€๋งŒ) ...

๊ทธ๋ž˜์„œ... ๊ทธ๊ฒŒ ๋ญ๊ฐ€ ๋ฌธ์ œ์•ผ? WPF์™€ ๊ฐ™์€ ํ”Œ๋žซํผ ๊ฐ„ ์†”๋ฃจ์…˜์€ ๊ฝค ์ข‹์€ ์ผ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Xamarin์€ ํ”Œ๋žซํผ ๊ฐ„ ๋ฐ์Šคํฌํ†ฑ GUI๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@jnm2 ๋‚˜์˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์ฃผ์š”(90% ์ด์ƒ) ์‹œ๋‚˜๋ฆฌ์˜ค๋ผ๋ฉด ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘๋ฅผ ๊ณ„ํšํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. WPF ์—†์ด Xaml์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ ์–ด๋„ ๋ณ„๋กœ). ๊ทธ๋ฆฌ๊ณ  WPF๊ฐ€ ์ปค๋ฐ‹๋˜๊ณ  ๊ณง ์˜ฌ ๊ฒƒ์ด๋ผ๋Š” ์ž˜๋ชป๋œ ํ™˜์ƒ์„ (์ž ์žฌ์ ์œผ๋กœ) ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WPF/GUI๋ฅผ .NET Core๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ํ˜„์žฌ ์ฃผ๋กœ ์„œ๋ฒ„ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ์ฝ˜์†” ์•ฑ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” .NET Core์˜ ํฐ ๋‹จ๊ณ„๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

System.Xaml์ด ์žˆ๋Š” @jnm2 ๋Š” WPF์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋‹ค๋ฅธ ํ”Œ๋žซํผ(https://github.com/AvaloniaUI/Avalonia)์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  _์‹œ๋„ํ•˜๋Š”_ ์‚ฌ๋žŒ๋“ค(์ €์™€ ๊ฐ™์€)์„ ํฌ๊ฒŒ ๋„์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ฉ๋ฆฌ์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๋Š” @grokys - ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ํฐ ๋„์›€์ด ๋ ๊นŒ์š”? ๊ทธ๊ฒƒ ์—†์ด๋Š” ๋ฌด์—‡์ด ๋„์ „์ ์ž…๋‹ˆ๊นŒ?

๋˜ํ•œ (WPF๊ฐ€ ์•„๋‹Œ) ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐ์Šคํฌํ†ฑ UI ํ”„๋ ˆ์ž„์›Œํฌ์ธ Eto.Forms ์— Xaml์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์ฒ˜์Œ์— Portable.Xaml ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“  ์ด์œ ์ด๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ๋‚˜์™€ ๋‚ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ด๊ฒƒ์„ "๊ถŒ์œ„ ์žˆ๋Š”" ํฌ๋กœ์Šค ํ”Œ๋žซํผ xaml ๊ตฌํ˜„์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(@Mike-EEE๊ฐ€ ๋งํ•œ ๋Œ€๋กœ). ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ๊ฐ€ ์‹œ๊ฐ„์—๋งŒ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค(;

@karelz
UI ํ”„๋ ˆ์ž„์›Œํฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ XAML์—์„œ HTML๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์žฅ๋ฉด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Kation ์ •ํ™•ํžˆ ๋ฌด์Šจ ๋ง์ธ์ง€ ์ž์„ธํžˆ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

BTW: ๋งจ ์œ„ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์‹œ๋‚˜๋ฆฌ์˜ค ์š”์•ฝ์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์—†์œผ๋ฉด ์„ค๋ช…ํ•˜๊ณ  ์ดํ•ด๊ฐ€ ๋˜๋ฉด ๊ฑฐ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@karelz
Visual Studio์˜ ๊ฐ•๋ ฅํ•œ XAML ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ๊ตฌ์„ฑ ์š”์†Œ ์ฝ˜ํ…์ธ ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ XAML์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ HTML ์ฝ˜ํ…์ธ , ํ›จ์”ฌ ๋” ๋งŽ์€ SVG ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ .Net 4.5์šฉ XML ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๋ฐ˜์ œํ’ˆ XAML์ž…๋‹ˆ๋‹ค. https://github.com/Kation/WebPresentation

XAML์—์„œ HTML ๋˜๋Š” SVG๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ XAML์˜ ๊ฐ€์น˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๋ฉ‹์ง„ VS ํŽธ์ง‘๊ธฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฐ’์ž…๋‹ˆ๊นŒ? HTML ํŽธ์ง‘๊ธฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ์š”์ ์„ ์™„์ „ํžˆ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@karelz
์ผ๋ถ€ ํ”„๋กœ์ ํŠธ์—์„œ ํ…œํ”Œ๋ฆฟ๊ณผ ์Šคํƒ€์ผ๋กœ WPF์™€ ๊ฐ™์€ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@karelz ๋Œ€ํ™”์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ํ™˜์ƒ์ด๋‚˜ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋ณด๋‹ค ๋˜‘๋˜‘ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„, ๋ถ€๋Ÿฝ๋‹ค. ๐Ÿ˜‰

๋”ฐ๋ผ์„œ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” WPF์ธ ๋ฐ˜๋ฉด "์ˆœ์ˆ˜ Xaml"์€ ์ด๋ฅผ ํ–ฅํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์€ ๋‹ค์‹œ ์ œ๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ฒฐํ•ฉ์ž…๋‹ˆ๋‹ค. Xaml์€ ์ˆœ์ˆ˜ํ•˜๊ณ  ๋‹จ์ˆœํ•œ ์ง๋ ฌํ™” ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํฌํ•จ๋œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € Xaml์— ์„ค๋ช…๋œ _console ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ_์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/DevelopersWin/VoteReporter/blob/master/DevelopersWin.VoteReporter.Application/Program.xaml

์ฝ˜์†” ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•  ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•˜๋Š” Xaml์— ์„ค๋ช…๋œ ๋ช…๋ น์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ WPF ๋˜๋Š” "UI"์™€ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค(๊ธฐ์ˆ ์ ์œผ๋กœ ์ด๊ฒƒ์€ CLI๊ฐ€ UI๋ผ๋Š” ์˜๋ฏธ์—์„œ UI์ด์ง€๋งŒ ์ฐจ์ด์ ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค). ๋˜ํ•œ ํŒŒ์ผ์—์„œ ๋ฐ”๋กœ ๋งˆํฌ์—… ํ™•์žฅ๊ณผ ์ •์  ๋ฉค๋ฒ„ ์„ ์–ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ JSON์ด๋‚˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ˜•์‹์—์„œ ๋ณธ ์ ์ด ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ IMO Xaml์˜ ํž˜์ž…๋‹ˆ๋‹ค.

"์ˆœ์ˆ˜ Xaml" ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ์„œ, ๋‹ค์Œ์€ ์ƒˆ๋กœ์šด ํ˜•์‹์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” MSBuild์— ๋Œ€ํ•ด ์ œ์•ˆํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
https://github.com/Mike-EEE/Stash/blob/master/MsftBuild.Model/SampleFormats/Xaml/Processor.xaml

(๋ ˆ๋ฒจ์„ ์˜ฌ๋ฆฌ๋ฉด ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค๋ฅธ ํ˜•์‹์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Xaml ๋ฒ„์ „์ผ ๋ฟ์ž…๋‹ˆ๋‹ค)

์ด๊ฒƒ์€ ๋‹ค์‹œ ์ด๋ก ์ ์ธ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์ˆ˜ํ–‰ํ•  ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ( System.Windows.Input.ICommand ) ๋ช…๋ น ์„ธํŠธ์ธ ํ”„๋กœ์„ธ์„œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, WPF๋‚˜ UI๋Š” ์—†์ง€๋งŒ ์ฝ˜์†”๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ž์—์„œ ์–ธ๊ธ‰ํ•œ ์—ฌ๊ธฐ์—์„œ ์ง€์ ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์ด ํŒŒ์ผ์—์„œ ๊ฐ€์ ธ์˜จ Visual Studio์˜ ๊ธฐ๋ณธ ์ œ๊ณต ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  Visual Studio๋Š” ๋‹จ์ˆœํžˆ "๋ถˆ์„ ์ผœ๊ณ " ๋‚ด๊ฐ€ ์ž‘์—… ์ค‘์ธ ํŒŒ์ผ์˜ ํด๋ž˜์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋“œ๋กญ๋‹ค์šด ๋ฐ ๊ธฐํƒ€ ๋””์ž์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์†์„ฑ ํŽธ์ง‘๊ธฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์ด๋ ‡๊ฒŒ ํ•˜๋ฉด devops ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋” ์‰ฌ์›Œ์ง€๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ดํ•ดํ•˜๋‹ค).

ํ”„๋กœ์„ธ์„œ ํŒŒ์ผ ์™ธ์—๋„ ํ”„๋กœ์„ธ์„œ์— ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ก ์ ์ธ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์ž…๋ ฅ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Mike-EEE/Stash/blob/master/MsftBuild.Model/SampleFormats/Xaml/Project.xaml

์—ฌ๊ธฐ์„œ ๋‚˜๋Š” ๋ฒ„์ „(์™ธ๋ถ€ ํŒŒ์ผ์—์„œ)์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” _markup extension_์„ ์‚ฌ์šฉํ•˜๊ณ  ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ์ˆ˜์ง‘๋œ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด์ง€๋งŒ ๊ทธ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค).

BTW, ์ด ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ์™„์ „ํžˆ ์ž‘๋™ํ•˜๋ฏ€๋กœ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ SLN์„ ๊ฐ€์ ธ์™€ Xaml ๋ฒ„์ „์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(์ฐธ๊ณ : My Machine์—์„œ ์ž‘๋™ ํ•˜๋ฏ€๋กœ ๋งˆ์ผ๋ฆฌ์ง€๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„)

BTW: ๊ท€ํ•˜์˜ devops ์‹œ๋‚˜๋ฆฌ์˜ค์™€ Xaml์ด ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์œ ์ผํ•œ/๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ์ง€ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

๋„ค, ๊ธ€์ด ์ข€ ๊ธธ์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋“ค์–ด๊ฐˆ๊นŒ ๋ง๊นŒ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ์ด์ œ ์œ„์˜ ๋น„์ฃผ์–ผ ๋””์ž์ด๋„ˆ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์—๊ฒŒ ์ด๊ฒƒ์ด ๊ถ๊ทน์˜ ์ตœ์ข… ๊ฒŒ์ž„์ด๊ณ  ์ œ๊ฐ€ ์ด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๊ถ์ง€์— ๋ชฐ๋ฆฌ๋Š”์ง€ ์•Œ๊ณ  ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค. _๊ทธ ์ด์œ ๋Š” ๊ฒฐ๊ตญ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ˆ˜๋ช… ๋™์•ˆ ์ด ์†Œ์œ  ๋น„์šฉ์„ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค._

๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ POCO ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํŽธ์ง‘ ๋ฐ ๋””์ž์ธ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” POCO์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•Œ๋‹ค์‹œํ”ผ ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ๋Š” UI ๋„๋ฉ”์ธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” POCO ์š”์†Œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” Xaml ํŒŒ์ผ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค(์›ํ•˜๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— "Xaml"์˜ ๊ธฐ์กด "WPF"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค).

์ œ ์„ธ๊ณ„์—์„œ๋Š” ๊ฐœ๋ฐœ์ด ๋ผ์ด๋ธŒ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌ/์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  Xaml ํŒŒ์ผ์„ devops์— ์ œ๊ณตํ•˜๋„๋ก ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ™•์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ผ์ด๋ธŒ ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ ๋ฐฉ๋ฒ•์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜์ง€๋งŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” Visual Studio์˜ ์œ„ ์Šคํฌ๋ฆฐ์ƒท์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ์ข…(๋ฐ๋ธŒ์˜ต์Šค) ์‚ฌ์šฉ์ž๋Š” ๊ฐ•์ œ๋กœ ์ฝ”๋“œ์— ์†์„ ๋„ฃ์–ด์•ผ ํ•˜๋Š” ๋Œ€์‹ (๋˜๋Š” ์กฐ์ง์ด ๊ทธ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๊ฐ’๋น„์‹ผ ์ธ์žฌ/๊ธฐ์ˆ ์„ ๊ณ ์šฉํ•˜๋„๋ก ๊ฐ•์š”๋ฐ›๋Š” ๊ฒฝ์šฐ), ๋Œ€์‹  ์ œํ•œ์ ์ด๊ณ  ๊ฒ€์ฆ๋œ ์‹œ๊ฐ์  ํŽธ์ง‘ ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

_์—ฌ๊ธฐ์„œ ์•„์ด๋””์–ด๋Š” ์ฝ”๋“œ๋ฅผ ์•Œ๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋ ฅ(๋ฐ ๊ธฐ์ˆ ) ๋•Œ๋ฌธ์— ๋ฐฐํฌ ํ›„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋น„์šฉ์ด ์ƒ๋‹นํžˆ ์ ˆ๊ฐ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค._

์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์€ ํ•œ ๊ฐ€์ง€ ์ธก๋ฉด์€ ํ•ด๋‹น ์ปจํŠธ๋กค์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Visual Studio์—๋Š” ์ด๋Ÿฌํ•œ POCO ์†์„ฑ์— ์—ฐ๊ฒฐ๋œ ์‹œ๊ฐ์  ํŽธ์ง‘๊ธฐ๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ (๋…ธํ™”๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ) ๊ด‘๋ฒ”์œ„ํ•œ API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://msdn.microsoft.com/en-us/library/microsoft.windows.design.model.designmodevalueprovider(v=vs.90).aspx

์ด ๋ชจ๋“  ๊ฒƒ์€ ์ถ”๊ฐ€ ์ž‘์—…, ์˜ค๋ฒ„ํ—ค๋“œ ๋˜๋Š” ๋…ธ๋ ฅ ์—†์ด Visual Studio์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ ๊ถ๊ทน์ ์ธ ์•„์ด๋””์–ด๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ถ๊ทน์ ์œผ๋กœ ๋ฐ๋ธŒ์˜ต์Šค ํ”„๋กœ์„ธ์Šค์—์„œ๋„ ๋„์›€์ด ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ํŽธ์ง‘์ž์™€ ๋””์ž์ด๋„ˆ ์ œํ’ˆ๊ตฐ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ชจ๋‘ ํ™˜์ƒ์ ์ด๋ฉฐ ์‹ค์ œ์ ์ธ ์‹ค์ œ ๊ธฐ๋ฐ˜์ด ์—†์Šต๋‹ˆ๋‹ค(์•„์ง). ํ™•์‹คํžˆ ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์ œ ์ƒ๊ฐ์€ ์•„๋‹ˆ์ง€๋งŒ Windows Forms ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ ํŽธ์ง‘๊ธฐ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด ๋ฐ ์‚ฌ๋ก€ ๊ทธ๋ฃน์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ์ด ๋นจํŒ์„ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „์‹œ์ผœ Xaml์˜ ํž˜์„ ํ†ตํ•ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

@karelz์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋Œ€ํ™”์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด ์ƒ๊ฐ๊ณผ ์‹ ๋…์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ(์˜ˆ, ์ €๋Š” ์œ ์ฃ„ ๐Ÿ‘ผ), ์‚ฌ๋ฌผ์— ๋Œ€ํ•ด ์—ด๋ฆฐ ๋งˆ์Œ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ๋ชจ๋“  ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋‚ด๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋” ์ž˜ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@karelz - Avalonia๋Š” ํ˜„์žฌ OmniXaml์„ XAML ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ๊ฝค ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฒ„๊ทธ์™€ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Portable.Xaml๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ OmniXaml์€ ํ•ญ์ƒ ์ž‘์—…ํ•  ์‹œ๊ฐ„์ด ๋งŽ์ง€ ์•Š์€ ์ž์› ๋ด‰์‚ฌ์ž์— ์˜ํ•ด ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ System.Xaml์„ ์—ด์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ ˆ์ถฉ์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ OmniXaml ๋ฐ Portable.Xaml๊ณผ ๊ฐ™์€ ํƒ€์‚ฌ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๊ทœ์ •์„ ์ค€์ˆ˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.net ์ƒํƒœ๊ณ„์— ํ•„์š”ํ•œ ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ง๋ ฌํ™” ํ˜•์‹(Javascript ์„ธ๊ณ„์˜ JSON๊ณผ ๊ฐ™์€)์ž…๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ dot ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๊ณ  POCO๋ฅผ ์Šคํ‚ค๋งˆ๋กœ ์ง์ ‘ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ POCO ๊ฐœ์ฒด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค๋ช…์€ ๊ฐ•๋ ฅํ•˜๊ณ  ์ •์ ์œผ๋กœ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค. UI ๋ ˆ์ด์•„์›ƒ, ๋Ÿฐํƒ€์ž„ ์•ฑ ๊ตฌ์„ฑ, ํ”„๋กœ์ ํŠธ/์›Œํฌํ”Œ๋กœ ์„ค๋ช… ๋˜๋Š” ๋‘ .net ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์˜ ํ†ต์‹ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์›น/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ƒํƒœ๊ณ„์™€์˜ ํ†ต์‹ ๋„ ํฌ๋งท์„ ๊ตฌํ˜„ํ•˜๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .net ์ƒํƒœ๊ณ„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด JSON/BOND/Protobuf/XML์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์—ญ์‚ฌ์ ์œผ๋กœ XAML์€ ์–ด๋Š ์ •๋„ ์ฑ…์ž„์„ ์™„์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฌธ์ œ๋Š” ์ด ์—ญํ• ์ด ์–ผ๋งˆ๋‚˜ ์ข‹์€๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด XAML์ด netstandard๋กœ ๋งŒ๋“  ๋‹ค์Œ .net์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๋Šฅํ•˜๋ฉด ๋‹ค๋ฅธ ํ˜•์‹๋„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ์ฃผ์— http://www.ammyui.com/ ์ด ๋‚˜์˜จ ๊ฒƒ ๊ฐ™์•„์š”. ๋‹จ์ˆœ์„ฑ์— ์ค‘์ ์„ ๋‘์ง€๋งŒ XAML๋กœ ๋ณ€ํ™˜๋˜๋Š” UI ์„ค๋ช… ํ˜•์‹์ž…๋‹ˆ๋‹ค. XAML์ด ์ถฉ๋ถ„ํžˆ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜ ์ž์‹ ์€ (๊ฐ์ฒด, ์ปฌ๋ ‰์…˜ ๋ฐ ์ธ๋ฑ์Šค) ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ roslyn repodotnet/roslyn#16648์—์„œ ํ•˜๋‚˜์˜ ํ˜•์‹์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ œ์•ˆ์€ ์‹ค์ œ๋กœ Entity ํ”„๋ ˆ์ž„์›Œํฌ ํŒ€์˜ @bricelam ์ด ์ž‘์„ฑํ•œ ์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ ๊ฒŒ์‹œ๋ฌผ๊ณผ ๋‚ด ์ œ์•ˆ ์Šค๋ ˆ๋“œ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์š”์ ์€ .net์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ˜•์‹์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. XAML์ด๋“  ๋ญ๋“  ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@grokys OmniXaml ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์—ˆ๊ณ  @SuperJMN ์„ ์—ฌ๊ธฐ ๋Œ€ํ™”์— ์ดˆ๋Œ€ํ–ˆ์ง€๋งŒ ๊ทธ๋Š” ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์„ค์ •์ธ์ง€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ €๋„ gitter์—์„œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค -- ๋‹น์‹ ์ด ๊ทธ์™€ ํ•จ๊ป˜ ์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ๋„ ๊ทธ๋ฅผ ์—ฌ๊ธฐ๋กœ ๋Œ์–ด์˜ค๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ํ–‰์šด์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜„ ). ๋ฌผ๋ก  OmniXaml๋„ ์ด ๋Œ€ํ™”์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

@gulshan +๐Ÿ’ฏ ๐Ÿ‘ ! ใ…‹. ์ด ๋ชจ๋“  ๊ฒƒ์˜ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ถ€๋ถ„ ์ค‘ ์ผ๋ถ€๋Š” Xaml์ด MSFT ํ˜•์‹ ๋ฐ ๊ธฐ์ˆ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MSFT์™€ ๊ธฐ์—… ๋ชจ๋‘๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์ถ•๋œ ๋ชจ๋“  ํˆฌ์ž์™€ ๋„๊ตฌ๋กœ ์ธํ•ด ๊ธฐ์กด ๋…ธ๋ ฅ๊ณผ ํˆฌ์ž๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ์†์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ๊ณต๋ฐฑ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ด์œ ๋Š” ์ฐธ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธด ํ•˜์ง€๋งŒ, ์ €๋Š” Ammy์™€ ํ•จ๊ป˜ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ์—ด๋ฆฐ ๋งˆ์Œ์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ํ•˜๋‚˜๋ฅผ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ๐Ÿ‘ผ

์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ์‹ ๊ฒฝ์„ ์“ฐ๋Š” ์ด์œ ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ˜•์‹ ์‚ฌ์šฉ์˜ ์ฃผ์š” ๊ฐ€์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ช…๋ นํ˜• ์–ธ์–ด ๋ถˆ๊ฐ€์ง€๋ก  . ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์•Œ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ๋””์ž์ด๋„ˆ/๊ณต๊ตฌ ์นœํ™”์ . _๋น„์ฃผ์–ผ ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ œํ’ˆ์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ๋””์ž์ด๋„ˆ ๊ฒฝํ—˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉด TCO ๊ฐ€ ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค _.

์ฆ‰, ๋‚˜์—๊ฒŒ ๊ฐœ์ธ์ ์œผ๋กœ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ์ž/๋””์ž์ด๋„ˆ ํ†ตํ•ฉ ์›Œํฌํ”Œ๋กœ
  • ํŒŒ์ผ์„ ์†์œผ๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์ฃผ์–ผ ๋””์ž์ด๋„ˆ ๊ฒฝํ—˜.

    • ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํŽธ์ง‘๊ธฐ API๊ฐ€ ์žˆ๋Š” PropertyGrid(์†์„ฑ ์ฐฝ).

  • ๋งˆํฌ์—… ํ™•์žฅ
  • ์ตœ๊ณ ๋ผ๋Š” ์ผ€์ดํฌ: ๊ฐœ๋ฐœ ์™ธ๋ถ€์˜ ์‹œ๋‚˜๋ฆฌ์˜ค ๋‚ด์—์„œ ์œ„์˜ ๋ชจ๋“  ๊ฒƒ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ(์œ„์˜ devops ์˜ˆ).

์ด ๋ชจ๋“  ๊ฒƒ์ด ์ถฉ์กฑ๋˜๋ฉด "๋‹ค๋ฅธ .NET ํ˜•์‹"์„ ๊ณ ๋ คํ•  ์˜ํ–ฅ์ด ์žˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ Xaml์„ ํ•ด๋‹น ํ˜•์‹์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ํ™•์žฅํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฒฐ๊ตญ MSFT ๊ธฐ์ˆ ์ด๋ฏ€๋กœ ์ง€์  ์žฌ์‚ฐ์ž…๋‹ˆ๋‹ค.

@Mike-EEE ํ˜•์‹์„ POCO๋กœ ์—ญ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. VS์˜ ์†์„ฑ ์ฐฝ์€ XAML์ด ์•„๋‹Œ ์‹œ๋‚˜๋ฆฌ์˜ค์—๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๊ฐ€์ง€ ์šฐ๋ ค๋˜๋Š” ์ ์€ ํŽธ์ง‘๊ธฐ ์ง€์› ์—†์ด๋„ ๊ฐ€๋…์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•˜๊ณ  vim๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. JSON๊ณผ ๋น„๊ตํ•  ๋•Œ XML(๋ฐ XAML)์€ IMHO์™€ ๊ด€๋ จํ•˜์—ฌ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ XAML์—๋Š” ๊ฐ„๋‹จํ•œ ์ง๋ ฌํ™” ํ˜•์‹์œผ๋กœ ๋ชจ๋ฐฉํ•˜๊ธฐ ์–ด๋ ค์šด ์—ฐ๊ฒฐ๋œ ์†์„ฑ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ(์‹ค์ œ๋กœ๋Š” XML์ด ์•„๋‹Œ ๊ธฐ๋Šฅ)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € WPF์— ํˆฌํ‘œํ•˜๊ณ (๋งˆ์นจ๋‚ด xamarin.froms์— ์ž‘๋ณ„ ์ธ์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก) xaml

VS์˜ ์†์„ฑ ์ฐฝ์€ XAML์ด ์•„๋‹Œ ์‹œ๋‚˜๋ฆฌ์˜ค์—๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์™„์ „ํžˆ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ํŽธ์ง‘ ์ปจํŠธ๋กค ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Xaml์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๊ฑฐ์˜ "๋ฐํ˜€์ง€์ง€" ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”. ๋‹จ์ˆœํžˆ ์ด๋Ÿฌํ•œ ํ˜•์‹์˜ ์†์„ฑ์— ์ปค์„œ๋ฅผ ๋†“๊ณ  ์—ด๊ฑฐํ˜• ํ•„๋“œ(์˜ˆ:)์— ๋Œ€ํ•œ ๋“œ๋กญ๋‹ค์šด ๋ Œ๋”๋ง์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝํ—˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ WinForms์˜ ๋‹ค์Œ ํ˜•์‹์ด์ž ๋ฒ„์ „์ด๋ฉฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ WinForms๊ฐ€ ์ข‹์€ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค(WinForms๋Š” ์—ฌ์ „ํžˆ ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!).

JSON๊ณผ ๋น„๊ตํ•  ๋•Œ XML(๋ฐ XAML)์€ IMHO์™€ ๊ด€๋ จํ•˜์—ฌ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ, Xaml์ด ์ •ํ™•ํžˆ ๊ฐ„๊ฒฐํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Xaml์ด ์–ผ๋งˆ๋‚˜ ์žฅํ™ฉํ•œ์ง€์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์„ ๋“ฃ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ OmniXaml์ด ์„œ์‹๊ณผ ๊ด€๋ จ๋œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ TOML ๋ฐ YAML ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ˜•์‹๊ณผ๋„ ๊ฒฝ์Ÿํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„ XML ๊ธฐ๋Šฅ) ์ฒจ๋ถ€๋œ ์†์„ฑ๊ณผ ๊ฐ™์€ ...

๊ทธ๋ฆฌ๊ณ  ๋งˆํฌ์—… ํ™•์žฅ. ๐Ÿ˜„ ๋น„์ „์˜ ํŠน์ง•์ž…๋‹ˆ๋‹ค.

@gulshan ์ด ์—ฌ๊ธฐ์—์„œ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ "๋ฐ์ดํ„ฐ AST(์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ)"์ž…๋‹ˆ๋‹ค. Xaml(๋˜๋Š” .NET ๋ฐ์ดํ„ฐ ํ˜•์‹)์„ ์‹ฌ๊ฐํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Roslyn์— ์˜ํ•ด ๊ตฌ๋™๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋‚˜๋Š” ๋ฐ”๋กœ ์ด ์•„์ด๋””์–ด์— ๋Œ€ํ•ด uservoice ํˆฌํ‘œ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค ( ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ๊ณผ ํ•จ๊ป˜). ๋ถˆํ–‰ํžˆ๋„ ๊ทธ๊ฒƒ์€ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์—๋ณ„๋กœ ์ธ๊ธฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค, ํ•˜ํ•˜. ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ํ˜•์‹์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” AST(๋ฐ์ดํ„ฐ) ํŠธ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž(๋ฐ ๋„๊ตฌ)๊ฐ€ ๊ฐ€์žฅ ์˜๋ฏธ ์žˆ๋Š” ํ˜•์‹(๋ฏธํ•™์ ์œผ๋กœ๋“  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๋“ )์— ๋”ฐ๋ผ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋งˆ์นจ๋‚ด xamarin.froms์—๊ฒŒ ์ž‘๋ณ„ ์ธ์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@groege ์ธก๋ฉด์—์„œ ๊ท€ํ•˜์™€ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Ž

@Mike-EEE ์ด์ „์— Data AST ์ œ์•ˆ์„ ํ™•์ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๊ฐœ๋…์ ์œผ๋กœ .net์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง๋ ฌํ™”/๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ• ์ œ์•ˆ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ์ถ”์ƒ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„

XAML๊ณผ ๊ด€๋ จํ•˜์—ฌ .net ๊ธฐ๋ฐ˜์˜ ๊ฐ•๋ ฅํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ˜•์‹์€ ๋งŽ์€ XAML ํƒœ๊ทธ ํ™•์žฅ์˜ ํ•„์š”์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ํ‘œํ˜„์‹(์ƒ์„ฑ์ž ์—†์ด)์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆํฌ์—… ํ™•์žฅ ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๊ฐ€ C# ์ž์ฒด์˜ ์ผ๋ถ€์˜€์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„์š” @karelz ๋กœ๋ถ€ํ„ฐ ๋‹ต์žฅ์„ ๋ฐ›์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Xaml์—์„œ ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ ํ›„ ๊ทธ๊ฐ€ ๋ชจ๋‹ˆํ„ฐ ์•ž์— ์•‰์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

(๋‚˜์œ) ๋†๋‹ด์€ ์ œ์ณ๋‘๊ณ  ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

๋˜ํ•œ This Week in .NET ์—์„œ .NET Core์—์„œ ๋งŒ๋“ค์–ด์ง€๊ณ  ์žˆ๋Š” ๊ฝค ๋ฉ‹์ง„ ์—”์ง„์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ์ฒซ ๋ฒˆ์งธ ๋Œ“๊ธ€์ด ๋ชจ๋“  ๊ฒƒ์„ ๋งํ•ด์ค๋‹ˆ๋‹ค . :)

@Mike-EEE ๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ๋‹ต์„ ๋นš์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๋‚ด ๋ฐ›์€ ํŽธ์ง€ํ•จ์— ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ‘œ์‹œ๋˜์–ด ์žˆ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค).
์ง€๊ธˆ๊นŒ์ง€ ๋‚˜๋Š” ๋‹ต์žฅ์„ ํ›‘์–ด๋ณผ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ํ†ต์ฐฐ๋ ฅ์— ๋Œ€ํ•ด ๋ชจ๋‘์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!). ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋„ˆ๋ฌด ๋งŽ์€ ํ™”์žฌ์™€ ๊ณ ์ธต ๋นŒ๋”ฉ์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์ข‹์€ @karelz! ์—ฌ๊ธฐ์—์„œ ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ๊ณผ ๋Œ€ํ™”์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์˜คํ”ˆ ์†Œ์‹ฑ WPF์— ๋Œ€ํ•œ ํˆฌํ‘œ์ž…๋‹ˆ๋‹ค. XAML์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฒ„์ „์€ ๋น„๊ตํ•˜๋ฉด ์“ฐ๋ ˆ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง„์ง€ํ•˜๊ฒŒ ์—ฌ๋Ÿฌ๋ถ„, ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ฃจํ”„๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์œ ๋‹‰์Šค ๋ฐ MacOS์šฉ .net ์ฝ”์–ด/XAML STORE ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@Mike-EEE ๋งค์šฐ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ด์•ผ๊ธฐํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค :(

์˜ค, ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. @karelz ์ง€๊ธˆ ๋ชจ๋‘๊ฐ€ ๋ฐ”์˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌด์—‡๋ณด๋‹ค ๋Œ€ํ™”๋ฅผ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ๋จธ๋ฆฌ์—์„œ ๋งŽ์€ ๊ฒƒ์„ ์–ป์—ˆ๋‹ค. ๊ทธ๊ฑธ ๋ณด๊ณ  ๋ฐ˜์„ฑํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ๊ฒŒ๋‹ค๊ฐ€, ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ด๋ฏธ 1๋…„ ์ด์ƒ์„ ๊ธฐ๋‹ค๋ ธ์Šต๋‹ˆ๋‹ค... ๋ช‡ ๊ฐœ์›” ์ •๋„ ๋” ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ? :)

๊ทธ๋“ค์€ Silverlight 5 ..๋ฅผ html5 ์ด๋™, win8 ์ด๋™/winrt...& ์ด์ œ uwp & win10 ๋ฐ xamarin ..๊ณตํ†ต์œผ๋กœ ๊ณต๊ฐœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ—๋ฆฌ์šฐ๋“œ์™€ ๊ฐ™์€ ๋ผ๋ผ ๋žœ๋“œ์—์„œ ๊ธธ์„ ์žƒ์€ ํ•œ์‹ฌํ•œ ๋‹น์‹ ์ด๋‚˜ ๋ญ...

์–ด๋–ป๊ฒŒ Silverlight 5์—์„œ ๋ชจ๋“  ์“ฐ๋ ˆ๊ธฐ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ? ์–ด์…ˆ๋ธ”๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ•ญ์ƒ ๊นจ๋œจ๋ฆด ๋•Œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ์ž๋ฅผ ์กด์ค‘ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ž์‹ ์˜ nuget ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  nuget์—์„œ ์ด์ „ ํŒจํ‚ค์ง€์—์„œ ์ƒˆ ํŒจํ‚ค์ง€๋กœ ์ž๋™ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋ฌดํ•œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋ฅผ ๋งŒ๋“ค๊ณ  ์ฝ”๋”ฉํ•˜๊ธฐ ์ „์— ๋ช…ํ™•ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋ฉ์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ ํƒ€ ํ…Œ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค.

xamarin ํ˜•์‹์˜ ios/android/uwp ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹ค์ค‘ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋Š” ํ›จ์”ฌ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ f ์•„๋ž˜๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ๋‹น์‹ ์€ ์™€์ดํ”„(wpf/silverlight ์ ์šฉ ๋ฒ”์œ„ ๋ฐ xaml ์–ธ์–ด๋ฅผ ๊ถŒ์žฅํ•˜์ง€๋งŒ xamarin์— ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์ง€๋งŒ ์Šคํƒ€์ผ/ํ…œํ”Œ๋ฆฟ์— ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? .. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ฒ˜๋Ÿผ ์ด์ƒํ•œ ๋ˆ„๋ฝ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  f. nucrapget์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ํ•œ ๋ฒˆ๋งŒ .. ๋„๋Œ€์ฒด ์™œ ๋ชจ๋“  ์ข…์† ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?์ฐธ์กฐ ๋œ dll๊ณผ ๋™์ผ ..?๋‹น์‹ ์€ ๋น„์ „์ด ์—†์Šต๋‹ˆ๋‹ค ... niet ์—†์Œ ... capout ...์ด ๋ชจ๋“  ์‹œ๊ฐ„์€ ms ์“ฐ๋ ˆ๊ธฐ์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. .. ๋‚˜๋Š” ๋‚ด ์ž์‹ ์˜ f. ์„ธ๊ณ„์ ์ธ ์ˆ˜์ค€์˜ SDK๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” MS ์—†์ด๋Š” ํ•˜๋ฃจ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†๋‹ค. ๋‚˜๋Š” ์‹ฌ๊ฐํ•˜๊ฒŒ scala-js๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ swift.. ์ง‘์„ ๋– ๋‚  ์‹œ๊ฐ„์ด๋‹ค! ๋‚œ ์ง€์ณค์–ด

๊ฑฐ์˜ 2๋…„์ด ๊ฑธ๋ ธ์ง€๋งŒ UWP๋Š” ๋งˆ์นจ๋‚ด Xaml ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋งˆํฌ์—… ํ™•์žฅ์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/7232264-add-markup-extensions-to-and-improve-winrt-xaml

์ฐธ๊ณ ๋กœ ๋…ธ์—์‹œ์Šค๋Š” ์ง€๋‚œ์ฃผ์— v2.0 ์ œํ’ˆ์„ ์ถœ์‹œํ–ˆ๋Š”๋ฐ ์ƒ๋‹นํžˆ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค. Xaml ์‹œ์Šคํ…œ์€ ์ด๋ฏธ ๋งˆํฌ์—… ํ™•์žฅ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์œผ๋ฉฐ(C++์—์„œ๋Š” C#๋„ ์ œ๊ณต ์ค‘) ์‚ฌ์–‘์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ 7๋…„์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ธ๋”” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋„ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค. AmmyUI ์ง€์› ์„ ๊ณ ๋ คํ•˜๋ฉด Xaml ๋ชจ๋ธ์ด ATM์œผ๋กœ ์ „ํ™˜๋˜๋Š” ํ•œ ์ด๊ฒƒ์ด ๋‚ด ๋ชฉ๋ก์˜ ๋งจ ์œ„์— ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

http://www.noesisengine.com/

@karelz๋‹˜, ์•„๋งˆ๋„ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” UWP Xaml "์‚ฌ์–‘"์ด ์ด ๋ฌธ์ œ์™€ ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ์ง€ ์•„์‹ญ๋‹ˆ๊นŒ? ๋ฏธ์นœ ์ƒ๊ฐ์ด์ง€๋งŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๊ฐ€๊ฒฉ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. UWP ํˆฌํ‘œ์—์„œ๋„ ๊ฑฐ๊ธฐ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋‚จ๊ฒผ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ๋„ ํ•‘์„ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@Mike-EEE UWP Xaml "์‚ฌ์–‘"์€ ๋‹ค๋ฅธ ์กฐ์ง(Windows์—์„œ ์ƒ๊ฐํ•จ)์— ์˜ํ•ด ๊ตฌ๋™๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์Œ์„ฑ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋งˆ๋„ ๊ฐ€์žฅ ์ข‹์€ ์ฑ„๋„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค, ๊ทธ๊ฒŒ ๋‘๋ ค์› ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜› ๊ฑฐ๊ธฐ์—์„œ ๋‹ต์žฅ์„ ๋ฐ›์•˜์ง€๋งŒ ์†”์งํžˆ ๋งํ•ด์„œ ๋‚˜์—๊ฒŒ๋Š” ๋ณ„๋กœ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ดด๋กœ์›Œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด, ๊ทธ๋“ค์€ ์‚ฌ์–‘ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ๊ณ„์† ๋น„๊ณต๊ฐœ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ง€๋‚œ๋ฒˆ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์•„๋ฌด๋„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ฑ„ํƒํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ API๋กœ ๋๋‚˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ ค๋ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ทธ๋“ค์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž์‹ ์˜ ์ž‘์—…์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์„ ๋น„๋ฐ€๋ฆฌ์— ์ฆ๊น๋‹ˆ๋‹ค. :)

์–ด์จŒ๋“ , ์ด ๊ธ€์„ ์ฝ๊ณ  ์žˆ๊ณ  ํˆฌ๋ช…ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ˜‘์—… ๋ฐ ๊ฐœ๋ฐœ์„ ์ง€์ง€ํ•˜๊ณ  ์ด ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ asp/.NET Core ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์˜ ์„ฑ๊ณต์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์„ ์ฆ๊ฒผ๋‹ค๋ฉด ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. WPDev UserVoice๋กœ ๋ณด๋‚ด ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋งํฌ๋Š” ์ด์ „์— ์–ธ๊ธ‰๋˜์—ˆ์ง€๋งŒ ์ด๋ฉ”์ผ์—์„œ ์ด ๊ธ€์„ ์ฝ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.
https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/7232264-add-markup-extensions-to-and-improve-winrt-xaml

๋‚˜๋Š” @birbilis ์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑธ์–ด ๊ทธ์˜ ์ด์ „ ๊ธฐ์—ฌ์— ๋Œ€ํ•ด ๊ฐ์‚ฌ๋ฅผ ํ‘œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๋ˆ„๊ตฌ๋“ ์ง€ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€๋กœ ์นœ์ ˆํ•œ ๋ง์„ ํ•ด์ฃผ์‹œ๋ฉด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

ํ•œ์ˆจ ... uservoice์ฒ˜๋Ÿผ ์‚ฌ๋žŒ๋“ค์ด ๋ฌผ๊ฑด์— ํˆฌํ‘œํ•˜๋„๋ก ํ•˜๊ณ  ๊ฒฐ๊ตญ ์ธ๊ธฐ๊ฐ€ ์žˆ๋”๋ผ๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!

์—…๋ฐ์ดํŠธ:
https://github.com/microsoft/xaml-standard

@Mike-EEE๊ฐ€ ์ด๊ฒƒ์œผ๋กœ ๋งค์šฐ ๊ธฐ๋ปํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค ;P

๋Œ€๋‹จํ•œ ์›€์ง์ž„์ž…๋‹ˆ๋‹ค. @RichiCoder1 ์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ UI ์ „์šฉ์ž…๋‹ˆ๋‹ค. Sharepoint ๋ฐ WF์™€ ๊ฐ™์€ XAML์˜ ๋‹ค๋ฅธ ์šฉ๋„๋Š” ์•„๋งˆ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ์ง€์›๋˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ XAML์„ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜ธ์ˆ˜!

๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ๋ ˆ์ด์–ด๋กœ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด UI๊ฐ€ ์•„๋‹Œ ๊ธฐ๋ณธ XAML ๋ ˆ์ด์–ด์™€๋Š” ๋ณ„๋„๋กœ XAML 3D ๋ ˆ์ด์–ด๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@galvesribeiro ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/Microsoft/xaml-standard/issues/23 +1ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ํ‘œ์ค€์ด ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์„ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@Mike-EEE๊ฐ€ ์ด๊ฒƒ์œผ๋กœ ๋งค์šฐ ๊ธฐ๋ปํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค ;P

ใ…Žใ…Ž ๊ทธ๋ฆฌ๊ณ  ๋งž์•„์š”, @RichiCoder1! ๋ชจ๋“  ๊ฒƒ์ด ์ž˜๋ชป๋˜๊ณ  ๊ณ ์žฅ๋‚ฌ๊ณ  ์žˆ์–ด์•ผ ํ•  ๊ณณ์ด ์—†์—ˆ์ง€๋งŒ ์ด์ œ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ;) ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘

๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ https://github.com/Microsoft/xaml-standard/issues/23์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ณด๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ;) ;) ;)

XAML Standard!!์— WF(Workflow Foundation) ํฌํ•จ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

@Suriman ํˆฌํ‘œ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
https://github.com/Microsoft/xaml-standard/issues/23

๊ทธ๋ž˜์„œ ์ €๋Š” ๋ฌป๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ/๋ฐœํ–‰ ์‹œ๋ฏผ์ด ๋˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๋‚ด ๋ง์€, ๊ทธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ์ด๋ฏธ ์ด ๋ฌธ์ œ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋œ 50๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ œ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด๋ฏธ ์ž์‹ ์˜ ์‚ถ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ๊ณต๊ฐœํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ์™„์ „ํžˆ ์˜คํ•ดํ•˜์ง€ ์•Š๋Š” ํ•œ(๋งค์šฐ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ) Xaml Standard๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๊ธฐ์—์„œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ค‘์‹ฌ์ด๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

@Mike-EEE ๋‘ ๋ฌธ์ œ ์‚ฌ์ด์—๋Š” ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” XAML ์ž์ฒด ๋‚ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API๋ฅผ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ฒƒ(์—„๊ฒฉํžˆ XAML ์ž์ฒด์—์„œ)์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” XAML์„ System.Xaml๊ณผ ์œ ์‚ฌํ•œ .NET Standard ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@lokitoth ๋Š” ์ด์— ๋Œ€ํ•œ ๋Œ€ํ™”๋ฅผ ํ™•์‹คํžˆ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  ์ƒˆ๋กœ์šด ๋ถ€๋ถ„์„ ์• ์“ฐ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด .NET Standard2.0์—์„œ "๋ฐ”๋กœ ์ž‘๋™ํ•˜๋Š”" ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” @terrajobst ์˜ ํ›Œ๋ฅญํ•˜๊ณ  ์œ ์ตํ•œ ๋น„๋””์˜ค ๋ฅผ ์‹œ์ฒญํ•˜๋„๋ก ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์ด System.Xaml์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์€ "๊ทธ๋ƒฅ ์ž‘๋™"ํ•ด์•ผํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๋‚˜๋Š” ์ง€๊ธˆ ์—ฌ๊ธฐ์—์„œ ์ฐฉ๊ฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค (์ •๋ง๋กœ ๋„ˆ๋ฌด ์ข‹์Šต๋‹ˆ๋‹ค).

๊ทธ๋ฆฌ๊ณ  ์†”์งํžˆ ๋งํ•ด์„œ, Xaml Standard ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ด ์Šค๋ ˆ๋“œ ์ค‘ ๋ช‡ ๊ฐœ๋ฅผ ์ฝ์€ ํ›„, ์ €๋Š” ์ด์ „ ์ œ์•ˆ์— ๋Œ€ํ•ด ์ผ์ข…์˜ ๋‚ด ์ž์‹ ์„ ๋ฐœ๋กœ ์ฐจ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(โ˜•๏ธ ์ปคํ”ผ ๋•๋ถ„์— ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค, ๋งน์„ธํ•ฉ๋‹ˆ๋‹ค! โ˜•๏ธ). ๋ณด๊ธฐ์— "Xaml Standard"๋Š” ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ฃผ๋กœ ๋…ผ์˜๋˜๊ณ  ์žˆ๋Š” "MSFT UX/UI Standard"๋กœ ๋” ์ž˜ ๋ช…๋ช…๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฐ•๋ ฅํ•œ ์ง๋ ฌํ™” ๊ธฐ์ˆ ์ธ Xaml์ด ์ „ํ˜€ ์ œ์‹œ/์ „์‹œ/๊ฐ•์กฐ๋˜์ง€ ์•Š๊ณ  ์žˆ์œผ๋ฉฐ(์—ฌ๊ธฐ์„œ ๋…ธ๋ ฅํ•œ ์†Œ์ˆ˜์˜ ์šฉ๊ฐํ•œ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๊ณ ) ์ผ๋ถ€ ์—ฐ๊ฒฐ ๋Š๊น€/ํ˜ผ๋ž€๋„ ์ดˆ๋ž˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์ด System.Xaml์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

.NET Standard 2.0 ์ปจํ…์ŠคํŠธ์—์„œ ์ข…์†์„ฑ ํŠธ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋ ค๋ฉด ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ํ•œ .NET์ธ ๊ฒฝ์šฐ ์ž‘๋™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค(.NET Core์˜ ๋„๊ตฌ ์ฒด์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ BAML, Embedded Resources ๋“ฑ๊ณผ ๊ฐ™์€ ์ „์ฒด ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ํ•ญ๋ชฉ ์ง‘ํ•ฉ์ด ์žˆ์ง€๋งŒ)

๋ณด๊ธฐ์— "Xaml Standard"๋Š” ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ฃผ๋กœ ๋…ผ์˜๋˜๊ณ  ์žˆ๋Š” "MSFT UX/UI Standard"๋กœ ๋” ์ž˜ ๋ช…๋ช…๋ฉ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” UWP/Xamarin.Forms์˜ ์ปจํ…์ŠคํŠธ์—์„œ ๋ฐœํ‘œ๋˜๋Š” ๊ธฐ๋Šฅ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์ฆ‰, "BigXaml"์— ๋…ธ์ถœ๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ๋Š” ๋‘ ํ”Œ๋žซํผ์— ์ค‘์ ์„ ๋‘” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฃผ๋กœ ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ "๋ชจ๋“  WPF XAML ์–ธ์–ด ๊ฐ€์ ธ์˜ค๊ธฐ" ๋ฌธ์ œ๊ฐ€ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค.

ํŒ€์ด ํ•ด์•ผ ํ•  ์ •๋ฆฌ ์ž‘์—…์ด ๋งŽ์ด ์žˆ๊ณ  ํ˜„์žฌ ์ƒˆ ๋ฌธ์ œ์˜ ๋น„์œจ์ด ๊ธฐ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ˆ˜์— ๋น„ํ•ด ์ƒ๋‹นํžˆ ๋†’๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ํŒ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์ข€ ๋” ์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@Mike-EEE @terrajobst @terrajobst @cwensley @mellinoe
Xaml Standard์—์„œ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Microsoft/xaml-standard/issues/57

@juepiezhongren, ๋จธ๋ฆฌ๋ฅผ ๋“ค๊ณ  ๋Œ€ํ™”์— ๊ธฐ์—ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@lokitoth https://github.com/Microsoft/xaml-standard/issues/23 ์ด ์ผ๊ด‘์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ๊ฒฐ์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹น๋ฉดํ•œ ๋ฌธ์ œ๋ฅผ ๋” ์ž˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์— ์ฐฌ์„ฑ ํˆฌํ‘œ ๋ฐ/๋˜๋Š” ๊ธฐ์—ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. https://github.com/Microsoft/xaml-standard /์ด์Šˆ/145

๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด, ๋‹น์‹ ์ด ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ _JavaScript_+HTML5+CSS3 ์ƒ์„ฑ ์•„ํ‹ฐํŒฉํŠธ์ž…๋‹ˆ๋‹ค. TypeScript๋Š” ์‹ค์ œ๋กœ JS์šฉ ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค. .NET ๋ณ€ํ™˜๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ‘œ์ค€ ํ˜ธํ™˜ JS๋ฅผ ๋งŒ๋“œ๋Š” ๋Œ€์‹ (์˜ˆ: JSIL ), MSFT๋Š” C# ์ž‘์„ฑ์ž์˜ ๊ท€์ค‘ํ•œ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ๊ณผ์ ์ด๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ์ด์™€ ๊ฒฝ์Ÿํ•  ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ์ž‘ํ•˜์ง€ ๋ง๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ๋‚˜๋Š” ๊ฒฐ์ฝ” ๋ฉˆ์ถ”์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜›

๋˜ํ•œ ๋˜ ๋‹ค๋ฅธ ์š”์ ์€ CSHTML5 ๊ฐ€ @weitzhandler ๋ฅผ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ์–ด์…ˆ๋ธ”๋ฆฌ(์˜ˆ: PCL) ๊ฐ„์— ๊ณต์œ  ์ฝ”๋“œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ์ „ํžˆ ์œ ์ง€ํ•ด์•ผ ํ•  ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๊ธฐ๋ฐ˜์ด ๋‚จ๊ฒŒ ๋˜์–ด .NET๊ณผ JS(๋˜๋Š” TypeScript ๐Ÿ˜‰) ๊ฐ„์— ๋™์ผํ•œ ๋น„์šฉ/๋น„์ฆˆ๋‹ˆ์Šค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์—„๊ฒฉํ•œ NodeJS ์†”๋ฃจ์…˜์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฟˆ์€ ๋„ํŠธ ๋„ท ์ฝ”์–ด๊ฐ€ ์žˆ๋Š” ๋ฐ์Šคํฌํƒ‘ ์•ฑ์— Android xml ui ์“ฐ๊ธฐ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๋„ค ์ง„์งœ๋กœ ์š”!!

XAML์„ .NET ์ฝ”์–ด๋กœ ์ด์‹ํ•˜๋ ค๋Š” ๋ชจ๋“  ๋…ธ๋ ฅ์€ ๊ธฐ๊บผ์ด ์ž์›ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

CoreWf (net standard 2.0์˜ WorkflowFoundation)์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ ์—์„œ Xaml ์—์„œ DynamicActivity ๋กœ๋“œ ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด System.Xaml ๋˜๋Š” ๋” ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ Portable.Xaml ๊ตฌํ˜„์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. System.Xaml์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ DynamicActivity๋ฅผ ๋กœ๋“œํ•˜๋Š” .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ CoreWf๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ Portable.Xaml์„ ์‚ฌ์šฉํ•˜๋Š” .net ์ฝ”์–ด์˜ ์ž˜๋ชป๋œ ๊ตฌ๋ฌธ ๋ถ„์„ ์ƒํƒœ๋กœ ์ธํ•ด ์—ฌ์ „ํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์€ System.Xaml์— ๋Œ€ํ•œ ์ฝ”๋“œ๊ฐ€ Mit ๋ผ์ด์„ ์Šค ์ฐธ์กฐ ์†Œ์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์€ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋ผ์ด์„ ์Šค, ํŠนํ—ˆ ๋˜๋Š” ๊ธฐํƒ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์ด ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐ ์†Œ์Šค์— ์ถ”๊ฐ€ํ•˜๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ CoreWf๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ด์‹์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ ์†Œ์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋Š” Microsoft๊ฐ€ System.Xaml์„ ์ง€์›ํ•˜๋„๋ก ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. System.Xaml์„ ์—ด๋„๋ก ์š”์ฒญํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

System.Xaml์ด ์—ด๋ ค ์žˆ์ง€ ์•Š์œผ๋ฉด WorkflowFoundation์— ๋Œ€ํ•œ Xaml ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ํ† ํฐํ™”ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํ…Œ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฌธ์„œ(Xaml ์‚ฌ์–‘ ์™ธ) ๋˜๋Š” ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” FWIW @karelz ์—ฌ๊ธฐ์— DevOps ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.
https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/31381861-innovate-the-xaml-designer-dawg

Visual Studio Xaml Designer์˜ ๋ช‡ ๊ฐ€์ง€ ๋ฉ‹์ง„ ์‚ฌ๊ฑด์„ ๊ธฐ๋ฐ˜์œผ๋กœ:
https://blogs.msdn.microsoft.com/visualstudio/2017/09/11/a-significant-update-to-the-xaml-designer/

๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์— ์žˆ๋Š” ๋™์•ˆ ์—ฌ๊ธฐ์—์„œ ์–ธ๊ธ‰ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘ ๊ฒŒ๋‹ค๊ฐ€, ์ด ์Šค๋ ˆ๋“œ๋Š” ์ถฉ๋Œ๋กœ ์ธํ•ด ๊ธฐํ•œ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜†

@weitzhandler ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. mono-wasm์ด ์•ŒํŒŒ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— js๋ฅผ ์žŠ์–ด๋ฒ„๋ฆด ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ๋‹ค ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@weitzhandler 2๋…„ ๋˜๋Š” 3๋…„์ด ํ•„์š”ํ•˜์ง€๋งŒ ์ „์ฒด ์Šคํƒ์ด ์•„๋‹ˆ๋ผ .net์šฉ ๋ฒ”์šฉ ์Šคํƒ์ž…๋‹ˆ๋‹ค.

CoreRT๋Š” https://github.com/dotnet/corert/pull/4480 ์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋…„์— ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ๋œ HTML+CSS+C# ์ฝค๋ณด๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ .net ํ˜ธํ™˜์„ฑ ํŒฉ ์—๋Š” System.Xaml ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๋ฌธ์ œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด ๋ฌธ์ œ๋Š” compat pack 2.1์— ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋ˆ„๊ตฐ๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด netfx-compat-pack์œผ๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์—ˆ์ง€๋งŒ ๋ฒ„์ „์ด ์•„๋‹Œ ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐœ์ƒํ•œ ๋ชจ๋“  ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„

์‹ค๋งํ•˜๊ธฐ๋Š” ์‹ซ์ง€๋งŒ compapt ํŒฉ์˜ ๋ฌธ์ œ๋ฅผ ์ผ๊ด„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‹ค์ˆ˜๋กœ ์ด๊ฒƒ์„ 2.1๋กœ ํ‘œ์‹œํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ œ์•ˆ์„œ์˜ ์•„๋งˆ๋„ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด Future๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

@Mike-EEE xamarin.wasm์ด ๋„์ฐฉํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/mono/mono/pull/5924#issuecomment -343551464

์—…๋ฐ์ดํŠธ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €๋ฅผ ์ƒ๊ฐํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :) @terrajobst ์ •๋ง ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์„ ๋‚ด์–ด ์ฒดํฌ์ธํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์—ฌ์ „ํžˆ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋” ์ด์ƒ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์‹ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘ผ

์šฐ๋ฆฌ๋Š” ๋ป”๋ป”ํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—(๊ณต์‹ Xaml ์ˆ˜์ •์„ ๋ฐ›๊ธฐ๊นŒ์ง€๋Š” ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค), ์ €๋Š” ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ExtendedXmlSerializer v2๋ฅผ ๋„์šฐ๋ฉฐ ์ง€๋‚œ 1๋…„์„ ๋ณด๋ƒˆ๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ถœ์‹œ๋œ ๊ฒƒ. ๋งˆํฌ์—… ํ™•์žฅ ๋ฐ ์—ฐ๊ฒฐ๋œ ์†์„ฑ (POCO์—์„œ ์ž‘๋™, DependencyObject ํ•„์š” ์—†์Œ)์— ๋Œ€ํ•œ ์‹คํ—˜์  ์ง€์›๊ณผ protobuf ์Šคํƒ€์ผ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง๋ ฌํ™” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

System.Xaml์ด ๋„์ฐฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ Xaml-ish ๊ธฐ๋Šฅ์„ ์ฐพ๊ณ  ์žˆ๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ž์œ ๋กญ๊ฒŒ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณต ํ•˜๊ฑฐ๋‚˜ (๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€) ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— PR์„ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค. ๐Ÿ‘

@danmosemsft ๋Š” 3.0 ๋ฐ์Šคํฌํ†ฑ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์˜ ์ผ๋ถ€๋กœ SDK ํ”„๋กœ์ ํŠธ์—์„œ Workflow Foundation xaml์„ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

@lokki ๋‚˜๋Š” ๊ณ„ํš์„ ๋ชจ๋ฅธ๋‹ค. @terrajobst @karelz?

@danmosemsft
".NET Core์˜ ์ผ๋ถ€๋กœ UI ํ”„๋ ˆ์ž„์›Œํฌ ์ œ๊ณต"์ด๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” UI ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ถ€์กฑ์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ์—ฌ๊ธฐ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/Microsoft/xaml-standard/issues/232 ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

@weitzhandler ์ด ๋ฌธ์ œ๋Š” ์ด์ œ ๋‚˜์—๊ฒŒ ํ›จ์”ฌ ๋” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

.NET Standard์— ํฌํ•จ๋œ System.Xaml ๊ฐ€ ํŠนํžˆ XAML Standard์™€ ํ•จ๊ป˜ ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ฐ์Šคํฌํ†ฑ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ"๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด Windows๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ•œ ๊ณผ๊ฑฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์•ฑ์ด ํ™˜๊ฒฝ์— ๋™์ ์œผ๋กœ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ ๊ธฐ๋ณธ ์•ฑ์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ [์˜ˆ: Windows OS๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์‹œ์ž‘๋˜์ง€ ์•Š์Œ] ํ”Œ๋žซํผ๋ณ„ ํ•ญ๋ชฉ์„ ํ˜ธ์ถœํ•˜๋Š” ์—ฌ๋Ÿฌ .NET Core ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์ด ์‹คํ–‰ ์ค‘์ž„์„ ๊ฐ์ง€ํ•œ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ์š”์ฒญ ์‹œ ๋กœ๋“œ)

@birbilis ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ XAML์€ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•˜๊ฒŒ ๋ Œ๋”๋ง๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์Šคํฌํ†ฑ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ๋Š” XAML์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ .NET Core๊ฐ€ ์ตœ์†Œ ๊ณตํ†ต ๋ถ„๋ชจ ์‚ฌ์ผ๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ • ํ”Œ๋žซํผ์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”(๋˜๋Š” ์ด์ƒ์ ์œผ๋กœ๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”Œ๋žซํผ์— ๋™์ ์œผ๋กœ ์ ์‘ํ•˜๋Š”) ์•ฑ์„ ํ—ˆ์šฉํ•˜๊ณ  ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ํ”Œ๋žซํผ๋ณ„ ํ†ตํ•ฉ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ ์œ„์— ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ API๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐ€์šฉ์„ฑ์„ ์ฟผ๋ฆฌํ•˜๋Š” ์•ฑ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ถ”์ƒํ™”/ํ˜ธํ™˜์„ฑ API๋Š” API ์ž‘์„ฑ์ž๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฐ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๊ตฌํ˜„์— ์—ฐ๊ฒฐํ•˜์—ฌ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” Portable.Xaml ์ด System.Xaml์— ๋งค์šฐ ๊ฐ€๊น๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ฐพ์œผ๋ฉด ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์‹ญ์‹œ์˜ค.

WPF ํŒ€(@dotnet/wpf-developers)์€ .NET Core 3.0์šฉ WPF์˜ ์˜คํ”ˆ ์†Œ์‹ฑ์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค . ๊ทธ ์ผํ™˜์œผ๋กœ .NET Core 3.0์šฉ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋นŒ๋“œ์—๋Š” ์ด์ œ System.Xaml์ด ํฌํ•จ๋˜๋ฉฐ ํ•ด๋‹น ์†Œ์Šค๋Š” https://www.github.com/dotnet/wpf์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BTW

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰