Visual Studio 2026 ๊ณผ Aspire ๊ฐ์ƒ

๊ทธ๊ฐ„ ๋Œ“๊ธ€์€ ๋ช‡ ๋ฒˆ ๋‹ฌ์•˜๋Š”๋ฐ ๊ธ€์€ ์ฒ˜์Œ ์ ์–ด๋ณด๋„ค์š”!

์ด์ง์„ ํ•˜๊ณ  ๋‚˜์„œ ์ƒˆ๋กœ์šด ํšŒ์‚ฌ์—์„œ๋Š” ๋…ธ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋˜์–ด ์žˆ์–ด์„œ ๋‹ท๋„ท์„ ๊ทผ 1๋…„๊ฐ„ ์•ˆ ๋ถ™์žก๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์š”์ฆ˜ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ์ค€๋น„ํ•˜๋˜ ์ค‘ ์ „๋ถ€ํ„ฐ ํŒŒ๋ณด๊ณ  ์‹ถ์—ˆ๋˜ Aspire๋ฅผ ์จ๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  MS์—์„œ ์ ์ ˆํžˆ VS 2026์„ ์ถœ์‹œ ํ•œ ์ฐธ์— 1๋…„๋งŒ์— VS๋ฅผ ๋‹ค์‹œ ์จ๋ณธ ๊ฐ์ƒ๋„ ๋‚จ๊ฒจ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ๊ทธ 1์ผ์ฐจ์ž…๋‹ˆ๋‹ค.

์ง‘ ์ปดํ“จํ„ฐ์— VS 2026์„ ์„ค์น˜ํ•˜๊ณ  ASP.NET๋„ ์„ค์น˜ํ•˜๊ณ  ์˜์–ดํŒฉ๋„ ์„ค์น˜ํ•˜๊ณ  ๋‹ค ์ง„ํ–‰ ํ–ˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ธ€์„ ์ ๊ธฐ ์ „ ์„ค์น˜๋ฅผ ํ•ด๋ฒ„๋ ค์„œ ์Šค์ƒท์€ ์—†์Šต๋‹ˆ๋‹ค..)

Aspire Starter Project ๋ฅผ ๋งŒ๋“œ๋‹ˆ๊นŒ ๋ฌด๋ ค ํ”„๋กœ์ ํŠธ๊ฐ€ 4๊ฐœ๊ฐ€ ์ƒ๊ฒจ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ApiService - ๋Œ€์ถฉ ๋ณด๋‹ˆ ์ƒˆ๋กœ ๋‚˜์˜จ File based App ๊ธฐ๋ฐ˜์œผ๋กœ ์›๋ž˜ ASP.NET Core ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๋ฉด ์žˆ๋˜ WeatherForecast ์„œ๋น„์Šค ์˜ˆ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ ApiController ์—†์ด ํŒŒ์ผ ํ•˜๋‚˜๋กœ ํ‰์นœ๊ฒŒ ๋‹ท๋„ท์˜ ๋ฐœ์ „์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

AppHost
์—ฌ๊ธฐ๊ฐ€ Main ์ธ ๊ฒƒ ๊ฐ™์€๋ฐ Blazor Server (ํ”„๋ก ํŠธ) ApiService ๋ฅผ ํ•œ ๋ฐ ๋ชจ์•„๋†“๊ณ  ๋Œ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ASP NET Core ๊ธฐ์กด์ฒ˜๋Ÿผ WebHost ์ด๋ ‡๊ฒŒ ์‹œ์ž‘ํ•ด์„œ ๋ณต์žกํ•˜๊ฒŒ ์˜์กด์„ฑ ์ฃผ์ž…ํ•ด์ฃผ๋Š”๊ฒŒ ์‚ฌ๋ผ์ ธ์„œ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๋งˆ์Œ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

ServiceDefaults

์ด๊ฒŒ Aspire ์— ํ•ต์‹ฌ์ธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. Extensions.cs ์— ์ต์ˆ™ํ•œ ์˜์กด์„ฑ ์ฃผ์ž… ์ฝ”๋“œ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ Extensions static class ์ธ๊ฑฐ ๋ณด๋‹ˆ๊นŒ ์ด๊ฑธ Aspire ์–ด๋”˜๊ฐ€์„œ ๋ถˆ๋Ÿฌ์™€์„œ ๋•ก๊ฒจ์„œ ์“ธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. (์›๋ฆฌ๋Š” ์•Œ์•„๋ด์•ผ ํ•จ)

Web - Blazor Server ํ”„๋กœ์ ํŠธ๋กœ ๋ณด์ž„

์•ž์œผ๋กœ ๊ฐ๊ฐ์„ ๋” ํŒŒํ—ค์ณ๋ณผ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹น๋‹นํ•˜๊ฒŒ https ์žฌ์ƒ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด๋‹ˆ ์•Œ์•„์„œ ๋กœ์ปฌํ˜ธ์ŠคํŠธ 17223 ๋กœ ๋ฐ๋ ค๋‹ค์ฃผ๋”๋‹ˆ

๋ญ”๊ฐ€ ์•„๊นŒ Extensions ์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์‹ค์ปท ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ Aspire ๊ธฐ๋ณธ ์–ด๋“œ๋ฏผ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๊ฒŒ ๋ฐ˜๊ฒจ ์ค๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฆฌ์†Œ์Šค๋ณ„๋กœ ์ผœ๊ณ  ๋„๊ฑฐ๋‚˜๋„ ๊ฐ€๋Šฅํ•˜๊ณ  ์ฝ˜์†”์—์„œ ๋กœ๊ทธ๋„ ๋ฐ”๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๊ณ 

image

์•„๊นŒ ๋ณด๋‹ˆ OpenTelemetry ๋„ ๋‹ฌ๋ ค์žˆ์–ด์„œ ์•Œ์•„์„œ ๋‹ค ์ง‘๊ณ„๋„ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ข‹์•„๋ณด์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋Š” DB (์›๋ž˜ ์„œ๋น„์Šค์—์„œ ์“ฐ๋˜ Postgresql DB) ์—ฐ๊ฒฐํŽธ์œผ๋กœ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค.
VS 2026์€ ์ „๋ฐ˜์ ์œผ๋กœ ์ข€ ๊น”๋”ํ•ด์ง„ ๊ฒƒ ๊ฐ™๊ณ  ์•„์ง๊นŒ์ง€๋Š” ํฐ ๋ณ€ํ™”๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ์จ๋ด์•ผ ์•Œ ๊ฒƒ ๊ฐ™๊ธด ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ํ•˜๋Š” ๊ณณ์— ๊ฒ€์ƒ‰์ด ์ƒ๊ฒผ๊ธด ํ–ˆ๋Š”๋ฐ ์•„์ง ์œˆ๋„์šฐ ์ œ์–ดํŒ ๊ฐ™์ด ๋ ˆ๊ฑฐ์‹œ ์„ค์ •๊ณผ ๊ณต์กดํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค (๊ธ€๊ผด ๋ฐ”๊พธ๋Š” ๊ฑฐ๋Š” ๋ ˆ๊ฑฐ์‹œ ์„ค์ •์ธ๋“ฏ)

๋ถ€์กฑํ•œ ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

10 Likes

PostgreSQL integration | Aspire

๊ธฐ์กด ์ €ํฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ์–ด์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋˜๋‚˜ ์ฐพ์•„๋ณด๋‹ˆ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์„œ๊ฐ€ ์žˆ์–ด์„œ.. ์ข€ ๋” ์ฝ์–ด๋ณด๋‹ˆ ๋ญ”๊ฐ€ Postgresql DB๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ์ด ๋“ค์–ด์„œ ์•Œ์•„๋ณด๋Š” ์ค‘์ž…๋‹ˆ๋‹ค (์ถ”๊ฐ€ํ•˜๋ฉด ์œ„์— Aspire ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€?์— ์ƒ๊ธฐ๋Š”๊ฒŒ ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค)

๊ทธ๋ƒฅ ๊ธฐ์กด DB ์—ฐ๊ฒฐ์€ ์•Œ์•„์„œ ํ•˜๋ฉด ๋˜๋Š” ๊ฑด์ง€๋Š” ์ข€ ๋” ์•Œ์•„๋ณด๊ณ  ๋ณด์ถฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1 Like

๋ณ„๋„๋กœ Blazor ๋„ ๊ฒ‰ํ•ฅ๊ธฐ ์‹์œผ๋กœ ๊ณต๋ถ€ํ•ด์„œ ์ด๋ฒˆ์— ์ผ๋‹จ ํ˜ผ์ž ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๊ณผ์—ฐ ์ฝ”ํŒŒ์ผ๋Ÿฟ์ด ์•„๋‹Œ Cursor ๋Š” C# ์ด๋ž‘ ASP.net Core๋„ ์ž˜ ์งœ์ค„ ๊ฒƒ์ธ๊ฐ€.. ๋„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฒ€์ฆํ•ด๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ์—์„œ๋Š” ๋งฅ๋ถ + Cursor ์กฐํ•ฉ์œผ๋กœ ๊ฐˆ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2 Likes

aspire CLI๊ฐ€ ์•ˆ ๋˜๋Š” ์ด์œ ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์„ค์น˜๋ฅผ ์•ˆํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋ณด๊ณ  ์„ค์น˜ํ•˜์‹œ๋ฉด ๋˜๊ตฌ์š”.

๊ทธ๋Ÿฌ๋ฉด ์•„๊นŒ ๋ง์”€๋“œ๋ฆฐ aspire add ๋ช…๋ น์–ด๋ฅผ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ  ๊ทธ๋Ÿฌ๋ฉด ์•Œ์•„์„œ ๋ง์”€๋“œ๋ฆฐ AppHost ๋ฅผ ์ฐพ์•„์„œ ์•Œ์•„์„œ csporj ํŒŒ์ผ์— ์„ค์น˜๋˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ๊ฑธ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ ์•ฝ๊ฐ„ ์ •์ฒด๊ฐ€ ๊ถ๊ธˆํ•œ๋ฐ.. ๋” ํ•ด๋ณด๊ณ  ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

2 Likes

๋‹น์—ฐํ•˜์ง€๋งŒ ์ง‘ ์œˆ๋„์šฐ ์ปด์—์„œ ๋งŒ๋“  Aspire ํ”„๋กœ์ ํŠธ๋ฅผ ๊นƒ์œผ๋กœ ์˜ฌ๋ ค์„œ ํšŒ์‚ฌ ๋งฅ๋ถ ํ”„๋กœ์— ๋‹ท๋„ท 10์„ ์„ค์น˜ํ•˜๊ณ  aspire CLI๋ฅผ ์ด์šฉํ•ด์„œ ๋˜‘๊ฐ™์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ญ์‹œ ๋‹ท๋„ท์€ ํฌ๋กœ์Šคํ”Œ๋žซํผ์ด ๋งž์Šต๋‹ˆ๋‹ค

4 Likes

์•„์ฃผ ์‚ฌ์•Œ์ง ๋ฏธ๋ฌ˜ํ•ด์งˆ ์ˆ˜ ์žˆ๋Š”๊ฒŒ, ๋งฅ์€ ์š”์ฆˆ์Œ arm64์ธ์ง€๋ผ aspire์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์“ฐ๋ ค๊ณ  ํ•˜๋ฉด ์œˆ๋„์šฐ๊ฐ€, ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด amd64์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€์ง€๋ผ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฌ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ใ… ใ… 

๋ฌผ๋ก  Rosetta 2๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ ์™„์ „ํ•˜์ง€ ์•Š๊ณ , ๊ฒฐ๊ตญ ์—†์–ด์งˆ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ์Šคํƒ์ธ์ง€๋ผ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์€ ํ•ญ์ƒ ๋ฏธ๋ฌ˜ํ•œ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

1 Like

๋„ค ๋งž์Šต๋‹ˆ๋‹ค. ํฌ๋กœ์Šค์ปดํŒŒ์ผ์„ ํ•ด์•ผ ๋˜๊ธด ํ•˜๋”๋ผ๊ตฌ์š”. ใ… ใ… 

1 Like

์–ด๋А ์ •๋„ ๊ฐœ๋ฐœ์„ ํ•ด์„œ ๊ฐ์ƒ์„ ๋ง์”€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

Cursor๋Š” ์ผ๋‹จ ๋‹ท๋„ท๋„ ์ž˜ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์•˜๊ตฌ์š”.

Aspire๋กœ ๋งŒ๋“ ๊ฑธ AWS ์— EC2 ํ•˜๋‚˜ ํŒŒ์„œ docker-compose๋กœ ๋„์›Œ๋ดค์Šต๋‹ˆ๋‹ค. Aspire.Hosting.Docker๋ผ๋Š” ๊ฑธ ํ†ตํ•ด์„œ docker-compose.yml์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฝ‘์•„์ค˜์„œ ์ผ๋‹จ ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค (์•„์ง ๋‹ท๋„ท10์€ ํ”„๋ฆฌ๋ทฐ๋ผ ๊ทธ๋Ÿฐ์ง€ ๋ฒ„๊ทธ๊ฐ€ ์ข€ ์žˆ๊ธดํ•ด์„œ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ธด ํ•จ)

AWS ECS๊นŒ์ง€ ๊ฐ€๋ณด๊ณ  ์‹ถ์—ˆ์œผ๋‚˜ ์ธํ”„๋ผ ์„ธํŒ…ํ•˜๋Š”๊ฒŒ ๋„˜ ํž˜๋“ค์–ด์„œ ์ผ๋‹จ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค (Azure๋กœ ๋„์šด๋‹ค๊ณ  ํ•˜๋ฉด ๋ฐ”๋กœ ๋ ์ง€๋„?)

Aspire ์— ๋Œ€ํ•œ ๊ฐ์ƒ์€ docker-compose๋ฅผ ํ•œ ๋ฒˆ ๋” ์ถ”์ƒํ™”ํ•ด์„œ ๋‹ท๋„ท์œผ๋กœ ๊ฐ€์ ธ๋‹ค๋†“์€ ๋А๋‚Œ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ์›๋ž˜ ์„œ๋น„์Šค DB๋ฅผ ์—ฐ๊ฒฐ๋งŒ ํ•ด๋†“์€ ์ƒํƒœ๋ผ Redis๊ฐ™์€ ๊ฑธ ๋„์›Œ๋ณด์ง€๋Š” ๋ชปํ–ˆ๋Š”๋ฐ์š”. Aspire.Hosting.Redis๋ฅผ ์‹œ๋„ํ•ด๋ณด๋Š” ๊ฒŒ ๋‹ค์Œ ๊ณผ์ œ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์€ ์—ฌ๊ธฐ์„œ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ์ด๋ฏธ ๋ฐฐํฌ๋Š” ํ•ด๋†“๊ธด ํ–ˆ๋Š”๋ฐ ์ข€ ๋” ๋‹ค๋“ฌ์–ด์„œ ํ™๋ณด๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๋Š”๋•Œ์— ๋‹ค์‹œ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค!

6 Likes