.NET Community Toolkit 8.4 ์ถœ์‹œ

.NET Community Toolkit 8.4 ๋ฆด๋ฆฌ์Šค ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

.NET Community Toolkit์˜ 8.4 ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ณต์‹ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด๋ฒˆ ๋ฒ„์ „์€ MVVM Toolkit ์ƒ์„ฑ๊ธฐ์—์„œ์˜ ๋ถ€๋ถ„ ์†์„ฑ ์ง€์›, ์ƒˆ๋กœ์šด ๋ถ„์„๊ธฐ, ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ ๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft ํŒ€๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐœ๋ฐœ์ž๋“ค๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ํ”ผ๋“œ๋ฐฑ์— ๊นŠ์ด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ

1. MVVM Toolkit์˜ ๋ถ€๋ถ„ ์†์„ฑ ์ง€์› :tada:

  • ๋ถ€๋ถ„ ์†์„ฑ ์ง€์›์€ MVVM Toolkit ์†Œ์Šค ์ƒ์„ฑ๊ธฐ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ ์ค‘ ํ•˜๋‚˜๋กœ, ์ด์ œ .NET 9 SDK์˜ ์ƒˆ๋กœ์šด C# ์–ธ์–ด ๊ธฐ๋Šฅ ๋•๋ถ„์— ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:
    • ์†์„ฑ ์„ ์–ธ์ด C# ์–ธ์–ด์™€ ์ œ๋Œ€๋กœ ํ†ตํ•ฉ๋˜์–ด, ์‚ฌ์šฉ์ž ์ •์˜ ์ ‘๊ทผ ์ˆ˜์ •์ž ๋ฐ ์†์„ฑ, ํ•„๋“œ, ์ ‘๊ทผ์ž์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์ฃผ์„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ƒˆ๋กœ์šด, ๋ด‰์ธ๋œ, ์žฌ์ •์˜๋œ, ํ•„์ˆ˜์™€ ๊ฐ™์€ ์ˆ˜์ •์ž ์ง€์›.
    • ๋„ ๊ฐ€๋Šฅ์„ฑ ์ฃผ์„์ด ๊ฐœ์„ ๋˜์–ด ์†์„ฑ ์ดˆ๊ธฐํ™”์ž ๋ฐ ์ƒ์„ฑ์ž๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • [ObservableProperty]๊ฐ€ UWP ๋ฐ WinUI 3์—์„œ ์™„์ „ํžˆ AOT ์•ˆ์ „ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • Visual Studio์˜ ์—…๋ฐ์ดํŠธ์—์„œ CTRL + ํด๋ฆญ(๋˜๋Š” F12)๋กœ ๋ถ€๋ถ„ ์†์„ฑ ์„ ์–ธ๊ณผ ๊ตฌํ˜„ ๊ฐ„์˜ ํƒ์ƒ‰์ด ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.
    • ์ƒˆ๋กœ์šด ์ฝ”๋“œ ์ˆ˜์ •๊ธฐ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด, [ObservableProperty]๋ฅผ ํ•„๋“œ์—์„œ ๋ถ€๋ถ„ ์†์„ฑ์œผ๋กœ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ƒˆ๋กœ์šด MVVM Toolkit ๋ถ„์„๊ธฐ :dart:

  • MVVM Toolkit์˜ ์ง„๋‹จ ๋ถ„์„๊ธฐ ์„ธํŠธ๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ถ„์„๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
    • MVVMTK0041: [ObservableProperty]๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ C# ์–ธ์–ด ๋ฒ„์ „์„ 'previewโ€™๋กœ ์„ค์ •ํ•ด์•ผ ํ•จ.
    • MVVMTK0042: [ObservableProperty]๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ๋ฅผ ๋ถ€๋ถ„ ์†์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋จ.
    • MVVMTK0045: [ObservableProperty]๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ๋Š” WinRT ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ AOT ํ˜ธํ™˜์„ฑ์ด ์—†์Œ.
    • MVVMTK0051: [ObservableProperty]๋ฅผ ๋ถ€๋ถ„ ์†์„ฑ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด 'LangVersionโ€™์„ 'previewโ€™๋กœ ์„ค์ •ํ•ด์•ผ ํ•จ.

3. ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ :white_check_mark:

  • Windows SDK ๋ฒ„์ „ ๊ฒ€์ฆ์„ ์œ„ํ•œ .targets ์ถ”๊ฐ€.
  • ์†์„ฑ ์ ‘๊ทผ์ž์— ๋Œ€ํ•œ ์†์„ฑ ์ „๋‹ฌ ํ—ˆ์šฉ.
  • ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ๋Œ€์ƒ์— ๋Œ€ํ•œ ์–ต์ œ ์ˆ˜์ •.
  • ํ•„๋“œ์—์„œ [ObservableProperty]๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ โ€˜requiredโ€™ ํ•„๋“œ ์ง€์›.
  • ๋ชจ๋“  ๋ถ„์„ ํ”„๋กœ์ ํŠธ์— .pdb ํŒŒ์ผ ํฌํ•จ.
  • ReadOnlySequence์— ๋Œ€ํ•œ Stream ์ถ”๊ฐ€.

์‹œ์ž‘ํ•˜๊ธฐ

  • ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, MS Learn์—์„œ ์ผ๋ถ€ ๋ฌธ์„œ์™€ .NET API ๋ธŒ๋ผ์šฐ์ € ์›น์‚ฌ์ดํŠธ์—์„œ ์™„์ „ํ•œ API ์ฐธ์กฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด ์ด์Šˆ๋ฅผ ์—ด๊ฑฐ๋‚˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”!
5๊ฐœ์˜ ์ข‹์•„์š”

CommunityToolkit.HighPerformance ๋„์›€์„ ๋ฐ›๋Š”๋ฐ ์ง€์†์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค๋‹ˆ ๋งˆ์Œ์ด ๋†“์ž…๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์ œ๋Œ€๋กœ ์•Œ์•„๋ณด์ง€๋„ ์•Š๊ณ  MVVMTK0045 ๊ฒฝ๊ณ ๋ฉ”์‹œ์ง€๋ฅผ ์—†์• ๋ ค๊ณ  [ObservableProperty]๋ฅผ ์ง€์šฐ๊ณ  ์ง์ ‘ ๊ตฌํ˜„์„ ํ–ˆ์—ˆ๋Š”๋ฐ, ์œ„ ๊ธ€๋ณด๊ณ  ์ฐพ์•„๋ณด๋‹ˆ ๋ฐ์Šคํฌํƒ‘์šฉ WinUI3 ์•ฑ์€ AOT๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , JIT๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋‚˜์˜ค๋„ค์š”. ๋ชจ๋ฐ”์ผ ๊ฐ™์€ ํ™˜๊ฒฝ ์•„๋‹ˆ๋ผ๋ฉด ๊ฒฝ๊ณ  ๋ฌด์‹œํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋„ ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋ฌธ์žฅ์„ ๋ณด๋ฉด, AOT์— ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์™œ ๊ฒฝ๊ณ ๋ฅผ ๋‚ ๋ ค์ฃผ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. partial์„ ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ๋ณ€์ˆ˜์—๋Š” ๋ชป ์จ์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€โ€ฆ

  • Using partial properties also makes [ObservableProperty] fully AOT safe for UWP and WinUI 3!
2๊ฐœ์˜ ์ข‹์•„์š”