Aspnetcore: Blazor ์šฉ ํ•ซ ๋ฆฌ๋กœ๋“œ

์— ๋งŒ๋“  2018๋…„ 01์›” 25์ผ  ยท  130์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/aspnetcore

  • [] [๋นŒ๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”] (https://github.com/dotnet/aspnetcore/issues/22566)
  • [] dotnet watch ๊ฒฝ์œ 
  • [] ๊ฐœ๋ฐœ ๋ฏธ๋“ค์›จ์–ด (์—…๋ฐ์ดํŠธ ์ˆ˜์‹ ์„์œ„ํ•œ ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ)
Components Big Rock Design affected-most area-blazor enhancement severity-major

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

์ด๊ฒƒ์€ 2020 ๋…„ 11 ์›”๋กœ ์˜ˆ์ •๋œ .NET 5 ์šฉ์œผ๋กœ ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์‹ถ์€์ง€์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์˜๋ฅผ ๊ณ„์†ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ์ž‘์—… ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋Š” https://github.com/aspnet/blazor/issues/193 ์„ ์ฐธ์กฐ

์ง€๊ธˆ์€ dotnet watch run ํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
csproj ํŒŒ์ผ์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
<Watch Include="**\*.cshtml"/>

0.2.0์˜ ์‹ค์‹œ๊ฐ„ ์žฌ ์žฅ์ „์œผ๋กœ ์ธํ•ด ๊ฑธ๋ฆผ๋Œ์ด๋˜์—ˆ์œผ๋ฏ€๋กœ ๋” ๊ฒฌ๊ณ ํ•œ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ์ž‘์—… ํ•  ์ˆ˜์žˆ์„ ๋•Œ๊นŒ์ง€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Mac์—์„œ dotnet sdk 2.2.100-preview1-009349 ๋ฐ blazor 0.5.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
"dotnet blazor serve"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ƒˆ๋กœ ๊ณ ์นจ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. cshtml ํŒŒ์ผ์—์„œ ์ผ๋ถ€ html ๋งˆํฌ ์—…์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ฑ์ด ์ž์ฒด์ ์œผ๋กœ ๋‹ค์‹œ๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ์ˆ˜๋™ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์‹œ๋กœ๋“œ ํ•œ ํ›„ ์•ฑ์— ์ด์ „ html ์ฝ˜ํ…์ธ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ danroth27 , https://github.com/aspnet/AspNetCore/issues/4056 ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹ซ์•„์•ผํ•ฉ๋‹ˆ๊นŒ?

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ!
1์ด ํŠธ๋ž™์€ ์„œ๋ฒ„ ์ธก ๋ธ”๋ ˆ์ด์ €์™€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ธ”๋ ˆ์ด์ € ๋ชจ๋‘์— ๋Œ€ํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ค์‹œ๋กœ๋“œ๋ฉ๋‹ˆ๊นŒ?

  1. ๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ๋Š” ๋ผ์ด๋ธŒ ๋ฆด๋ฆฌ์Šค (์˜ˆ : ๋„ท ์ฝ”์–ด 3.0)์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๊นŒ?
  2. ๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํŽ˜์ด์ง€ ์ƒํƒœ๋ฅผ ์žƒ๊ฑฐ๋‚˜ (์ฆ‰, f5 ์ƒˆ๋กœ ๊ณ ์นจ๊ณผ ๋™์ผ) ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๋žœ๋“œ์˜ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์ฆ‰ ๋ณ€๊ฒฝ๋œ ๊ตฌ์„ฑ ์š”์†Œ UI ๋งŒ ๋‹ค์‹œ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๊นŒ? ํ›„์ž์˜ ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ์‚ฌ์ด์— ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌ์„ฑ ์š”์†Œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŠธ๋ž™์€ ์„œ๋ฒ„ ์ธก ๋ธ”๋ ˆ์ด์ €์™€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ธ”๋ ˆ์ด์ € ๋ชจ๋‘์— ๋Œ€ํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ค์‹œ๋กœ๋“œ๋ฉ๋‹ˆ๊นŒ?

์˜ˆ

๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ๋Š” ๋ผ์ด๋ธŒ ๋ฆด๋ฆฌ์Šค (์˜ˆ : ๋„ท ์ฝ”์–ด 3.0)์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๊นŒ?

.NET Core 3.0์˜ ๊ฒฝ์šฐ ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ๋‹ค์‹œ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํŽ˜์ด์ง€ ์ƒํƒœ๋ฅผ ์žƒ๊ฑฐ๋‚˜ (์ฆ‰, f5 ์ƒˆ๋กœ ๊ณ ์นจ๊ณผ ๋™์ผ) ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๋žœ๋“œ์˜ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์ฆ‰ ๋ณ€๊ฒฝ๋œ ๊ตฌ์„ฑ ์š”์†Œ UI ๋งŒ ๋‹ค์‹œ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๊นŒ? ํ›„์ž์˜ ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ์‚ฌ์ด์— ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌ์„ฑ ์š”์†Œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฐ ๋‹ค์Œ ์–ธ๋กœ๋“œํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ์ƒํƒœ๋ฅผ ์ง๋ ฌํ™”ํ•˜๊ณ  ๋‹ค์‹œ๋กœ๋“œ ํ•  ๋•Œ ๋ณต์› ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ. ์ค€๋น„๊ฐ€๋˜๋ฉด์ด๋ฅผ ์šฉ์ดํ•˜๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„์— ์ œ๊ณต๋œ ์ ์ ˆํ•œ ํ›„ํฌ (์–ธ๋กœ๋“œ / ์žฌ๋กœ๋“œ ์ „ ๋“ฑ)๋ฅผ ๋ฌธ์„œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ํŒจํ„ด์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ / ๋„์šฐ๋ฏธ ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

dotnet watch run ๊ฐ€) ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ฐ ๊ธฐํƒ€ ์˜ต์…˜๋„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

dotnet watch --project "Portfolio.Client" run --project "Portfolio.Server"

nodemon ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์žกํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

npx nodemon --watch "Portfolio.Client" -e razor,css,html,cs --exec 'dotnet run --project "Portfolio.Server"'

๋‚˜๋Š” ๋‚ด๊ฐ€ ๋›ฐ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
dotnet watch --project BlazorTest.Client run
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์˜ค๋ฅ˜๋ฅผ ์ฃผ์—ˆ๋‹ค.

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ :
dotnet watch --project BlazorTest.Server run

ํ”„๋กœ์ ํŠธ BlazorTest.Server.csproj ํŒŒ์ผ์—์„œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

<ItemGroup>
    <Watch Include="..\**\*.razor" />
    <Watch Include="..\**\*.scss" />
    <Watch Include="..\**\*.cs" />
</ItemGroup>

BlazorTest.Client ํ”„๋กœ์ ํŠธ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ ํƒํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ ํ–ˆ์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ˆ˜๋™์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์น˜๊ธฐ ๋งŒํ•˜๋ฉด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

BlazorTest.Client ํ”„๋กœ์ ํŠธ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ ํƒํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ ํ–ˆ์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ˆ˜๋™์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์น˜๊ธฐ ๋งŒํ•˜๋ฉด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

css, html ๋ณ€๊ฒฝ์ด์žˆ์„ ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

@dazinator , ์˜ˆ :-)

.. ํ™•์ธ ๋งŒํ–ˆ๋Š”๋ฐ ๊ทธ๊ฒŒ ๋‚˜์œ ๊ฑฐ ๋งž์ฃ ? ์ฆ‰, ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ (์บ์‹œ ๋ฌดํšจํ™”)์œผ๋กœ ์ถฉ๋ถ„ํ•ด์•ผํ•˜๋ฏ€๋กœ html ๋˜๋Š” css ํŒŒ์ผ ๋ณ€๊ฒฝ์‹œ ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹น์‹  ๋ง์ด ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. <ItemGroup> ๋‚ด์—์„œ ๊ด€์‹ฌ์žˆ๋Š” ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ํ˜ผ๋ž€์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๋Œ€๋‹ต์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์ œ๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ Visual Studio์—์„œ ๋ผ์ด๋ธŒ๋กœ ๋‹ค์‹œ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ (Blazor ํด๋ผ์ด์–ธํŠธ ์ธก)? ์ง€๊ธˆ์€ wwwroot ํŒŒ์ผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œ (Ctrl Shift B)ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. VS๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๊ตฌ์ถ• ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@datvm ์„œ๋ฒ„ ์ธก Blazor ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ–ˆ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ ์ธก Blazor ํ”„๋กœ์ ํŠธ ๋ฐ Razor ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์ด ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. .NET Core 3.0 ์ถœ์‹œ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ์— ๋„๋‹ฌํ•˜๊ธฐ๊นŒ์ง€ ์กฐ๊ธˆ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„์—์„œ ๋ฌด์–ธ๊ฐ€ ๋ณ€๊ฒฝ ๋  ๋•Œ ์ „์ฒด ํŽ˜์ด์ง€ ์ƒˆ๋กœ ๊ณ ์นจ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ป”๋ป”ํ•œ ํ”Œ๋Ÿฌ๊ทธ : NetPack ํ™•์ธ-์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  / BrowserReload ์˜ˆ์ œ๋กœ ์ด๋™ : https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web/Views/Home/BrowserReload.cshtml-that ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ๊ธฐ๋‹ค๋ฆด ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„ ์ธก ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก ํŽ˜์ด์ง€ ๋‹ค์‹œ๋กœ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ๊ทธ์ € QoL ๊ฐœ์„  ์ผ๋ฟ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ œํ’ˆ๊ณผ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋…ธ๋ ฅํ•˜๋Š” ๋…ธ๋ ฅ์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. Ctrl Shift B๋ฅผ ๋” ๋ˆŒ๋Ÿฌ๋„ ์ข‹์Šต๋‹ˆ๋‹ค (ํ˜„์žฌ).

๋‚ด ์†”๋ฃจ์…˜์€ ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆด ํฌํŠธ ๋ฐ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ๋งค๊ฐœ ๋ณ€์ˆ˜ํ™” ๋œ launchsettings.json์— ์˜ํ•ด ์‹œ์ž‘๋˜๋Š” ๋ณ„๋„์˜ exe BlazorDebugLauncher๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋•Œ

  • Visual Studio๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ณ„๋„์˜ ์ž‘์€ exe DebugAttacher๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ dotnet watch run์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ ๋˜ ์ž๋งˆ์ž ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ ๊ณ ์นฉ๋‹ˆ๋‹ค (MS Edge์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :-))

๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์–ด๋”˜๊ฐ€์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

@AdmiralSnyder ๊ณต์œ ํ•˜๊ณ 

์ฒดํฌ ์•„์›ƒ ํ•  ๊ฐ€์น˜๊ฐ€์žˆ๋Š” ๊ณณ : https://github.com/RickStrahl/Westwind.AspnetCore.LiveReload

์ด๊ฒƒ์ด ๋‚ด ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ํ•ดํ‚คํ•˜์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค : https://github.com/AdmiralSnyder/BlazorAutoRebuildDemo
(๋‹ค์Œ ์ฃผ์— ์ •๋ฆฌํ•˜๊ณ  readme๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹คโ€ฆ)

@dazinator ๋‹น์‹ ์€ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@AdmiralSnyder ์ €๋Š”๋ณด๊ณ  ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ฑฐ๋ฅผ ์—ฐ๊ฒฐํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€ / ์–ด๋–ป๊ฒŒ๋ณด๊ณ 
๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์žฌ๋กœ๋“œ์— ๋Œ€ํ•ด์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค (๋†€๋ž์ง€ ์•Š๊ฒŒ ๋‚ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค) https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web.Blazor.Host/Startup.cs- ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์•ฑ ์ž์ฒด ๋‚ด์—์„œ ๊ฐ์‹œ์ž (IFileProvider ์‚ฌ์šฉ)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ์‹ ํ˜ธ r ๋ฐ blazor ๋ ˆ์ด์•„์›ƒ์— ์ถ”๊ฐ€ํ•˜๋Š” blazor ํด๋ผ์ด์–ธํŠธ ์ธก ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ๋กœ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ preview6์—์„œ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ณง preview7๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ๊ณ„์† ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. :-)

ํ”„๋กœ์ ํŠธ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์—†์ด detach-rebuild-restart-reattach ๊ฐ„๊ฒฉ์„ ์–ด๋–ป๊ฒŒ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์—„๊ฒฉํ•œ ์˜๋ฏธ๋กœ ํ”„๋กœ์ ํŠธ์— ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปดํŒŒ์ผ ๊ธฐํ˜ธ (์ฆ‰, debug = true)์— ์กฐ๊ฑด์ด์žˆ๋Š” ํŒจํ‚ค์ง€ ์ฐธ์กฐ๋ฅผ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๊ณ  ์‹œ์ž‘ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ์ง€์‹œ๋ฌธ (#if debug)์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฆด๋ฆฌ์Šค ๋ชจ๋“œ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ ๋””์ž์ธ ํƒ€์ž„ ํŒจํ‚ค์ง€ ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์—†์ด detach-rebuild-restart-reattach ๊ฐ„๊ฒฉ์„ ์–ด๋–ป๊ฒŒ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

VS์—์„œ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ ๋„ ํ•„์š”์— ๋”ฐ๋ผ ์ฐธ์กฐ ๋œ blazor ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (netpack์€ blazor ํ”„๋กœ์ ํŠธ IFileProvider๋ฅผ ๊ฐ์‹œ). "๊ฒฉ์ฐจ"๊ฐ€์žˆ๋Š” ์œ ์ผํ•œ ๊ฒฝ์šฐ๋Š” ํ˜ธ์ŠคํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด (blazor ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„๋‹˜)์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ-์ด ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ๊ฒƒ์ด๋ฏ€๋กœ ์–ธ์  ๊ฐ€ "ํŽธ์ง‘ํ•˜๊ณ  ๊ณ„์†ํ•˜๊ธฐ"๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ ์—†์ด๋Š” ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. VS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ง๊ณ  dotnet run watch ๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค์Œ ๋””๋ฒ„๊ฑฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์—ฐ๊ฒฐ (๊ณ ํ†ต)
  2. VS๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ํ˜ธ์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝ ํ•œ ๋‹ค์Œ Vs๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ด๊ฐ€ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค).
    @AdmiralSnyder ๋Š” ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์„ ๋” ์ž˜ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

dotnet watch ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ~ 10 ์ดˆ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฆ๋ถ„ ๋นŒ๋“œ ์†๋„๋ฅผ ๋†’์ผ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณต ํ•  ๋•Œ ์ƒ๋‹นํžˆ ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋ฉด๋„๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ตฌ์ถ• ์‹œ๊ฐ„์ด ์„ ํ˜• ์ ์œผ๋กœ ํ™•์žฅ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? (๋” ๋ณต์žกํ•œ ์•ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ 30 ์ดˆ ์ด์ƒ ๊ฑธ๋ฆฌ๋‚˜์š”?)

์ฆ๋ถ„ ๋นŒ๋“œ ์†๋„๋ฅผ ๋†’์ผ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณต ํ•  ๋•Œ ์ƒ๋‹นํžˆ ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก Blazor ์ธ ๊ฒฝ์šฐ ๋””๋ฒ„๊ทธ ๋นŒ๋“œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
  </PropertyGroup>

๋‚˜๋Š” ์ž๋™ ์žฌ ๊ตฌ์ถ•๊ณผ ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์— ๋Œ€ํ•ด ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋‹ค.
์ด๋Š” ์ฃผ๋กœ Visual Studio์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž๋™ ๋‹ค์‹œ ๋นŒ๋“œ ๊ธฐ๋Šฅ์ด ์‹œ์ž‘๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ "๋ฌด์–ธ๊ฐ€"๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ข…์ข… ๋ผ์ด๋ธŒ ์žฌ ์žฅ์ „ ์‹œ๋„๋กœ ์˜ค์ธ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ (signal-r ์—ฐ๊ฒฐ์ด ์ด์ „ ์ƒํƒœ์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—) "์„œ๋ฒ„์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜. ๊ทธ๋Ÿฌ๋‚˜ Blazor๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์‹œ์Šคํ…œ์ด ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์„ ์‹œ๋„ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ๊ฒฝํ—˜์ž…๋‹ˆ๋‹ค.

Live Reload ๊ธฐ๋Šฅ์— ETA๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๋กœ ์ธํ•ด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ์ž๋™ ์žฌ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ ์–ด๋„ "์„œ๋ฒ„์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค"๋Œ€์‹  "๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ"๊ณผ ๊ฐ™์€ ๋” ๋‚˜์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

@chucker ๋น„ํ™œ์„ฑํ™” ๋ง์ปค ํŒ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์ดํ›„ ๋ธŒ๋ผ์šฐ์ € ์žฌ๋กœ๋“œ๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ์ฑ„ํ”„๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ๋„์›€์ด๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์•Œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
blazor ํด๋ผ์ด์–ธํŠธ / wasm ํ”„๋กœ์ ํŠธ์—์„œ blazor ๋‹ค์‹œ๋กœ๋“œ๋ฅผ๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์—์„œ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋‚ด ์˜๋ฏธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/dazinator/NetPack/blob/develop/src/NetPack .Web.Blazor.Host / Startup.cs

@Postlagerkarte ์šฐ๋ฆฌ๋Š” ์žฌ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌํ™œ์šฉ ๋  ๋•Œ ์„œ๋ฒ„ ์ƒํƒœ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์žฌ ์—ฐ๊ฒฐ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์ด ๊ณต๊ฐ„์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Preview 8 ๊ณต์ง€ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ์—์„œ "Blazor ์„œ๋ฒ„ ์•ฑ์— ๋Œ€ํ•œ ํ–ฅ์ƒ๋œ ์žฌ ์—ฐ๊ฒฐ ๋…ผ๋ฆฌ"์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

@Postlagerkarte ๋Š” preview8์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ์˜ ์ง€ํ‰์„  / ํƒ€์ž„ ๋ผ์ธ์— ๋”ฐ๋ผ ์ปดํŒŒ์ผ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ MVC / cshtml์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•œ ์บ์‹ฑ ์ „๋žต์„ ํ†ตํ•ด (๋ณ€๊ฒฝ๋œ ๋ทฐ๋งŒ ๋‹ค์‹œ ์ปดํŒŒ์ผ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค)? ์—ฌ๊ธฐ์— ์ž ์žฌ์ ์œผ๋กœ ๋งค๋‹ฌ๋ ค์žˆ๋Š” ๊ณผ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” 10 ์ดˆ์˜์ฃผ๊ธฐ๋Š” ์ •๋ง ํฐ ๋ฌธ์ œ ์ผ ๋ฟ์ด๋ฉฐ ์œ ์‚ฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ์˜ ์›นํŒฉ ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ๋ณด๋‹ค ํ›จ์”ฌ ํฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ์—ฌ๊ธฐ์„œ๋Š” ์„œ๋ฒ„ ์ธก ๋ธ”๋ ˆ์ด์ €์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋นŒ๋“œ ์‹œ๊ฐ„์ด ๋Š๋ ค์ง€๋Š” ๊ฒฝ์šฐ ๋นŒ๋“œ ํ™˜๊ฒฝ์˜ ์„ธ๋ถ€ ์ •๋ณด์™€ ํ•จ๊ป˜ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์‚ฌ์†Œํ•œ "html ์ „์šฉ"๋ณ€๊ฒฝ (์˜ˆ : ์ผ๋ถ€ ์ •์  html ์ฝ˜ํ…์ธ  ๋ณ€๊ฒฝ)์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ ์ „์ฒด blazor ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ๋กœ๋“œ (๋ชจ๋“  dll์„ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ)ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์ตœ์ ์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํŒ€์—์„œ ํ•ด๋‹น ๊ฒฝํ—˜์˜ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ถ”์  ํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผํ•ฉ๋‹ˆ๊นŒ?

@dazinator ์ด์Šˆ ์ œ๋ชฉ์—์„œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ๋Š”์ด ์ด์Šˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด ๋ฐ ๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š”์ด ๋ถ„์•ผ์˜ .NET 5 ๊ธฐ๊ฐ„์— ๋งŽ์€ ํˆฌ์ž๋ฅผ ๊ณ„ํšํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” F5 ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ตœ๊ณ ์˜ ํ”„๋ฆฌ ์˜ค ๊ธฐ๋Šฅ์„ ํ•ซ ๋ฆฌ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํ๋ฆ„์— ๋“ค์–ด๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š”
์ฝ”๋“œ ๋ณ€๊ฒฝ, f5, ์ฝ”๋“œ ๋ณ€๊ฒฝ, f5, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์›Œํฌ ํ”Œ๋กœ๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋จผ์ € ์ž‘์—…ํ•˜์‹ญ์‹œ์˜ค :)

์„œ๋ฒ„ ์ธก Blazor ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ–ˆ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ ์ธก Blazor ํ”„๋กœ์ ํŠธ ๋ฐ Razor ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์ด ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. .NET Core 3.0 ์ถœ์‹œ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ์— ๋„๋‹ฌํ•˜๊ธฐ๊นŒ์ง€ ์กฐ๊ธˆ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ GitHub ๋ฌธ์ œ์—์„œ ์ˆ˜์ง‘ ํ•œ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด ๋ผ์ด๋ธŒ ๋‹ค์‹œ๋กœ๋“œ๋Š” ๋””๋ฒ„๊น…์—†์ด ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„ ์ธก Blazor์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (๊ฐœ๋ฐœ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๊ฐ•์ œ๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์•ผ ํ•จ). ๊ทธ ๋งž์Šต๋‹ˆ๊นŒ? ์ฃผ์ œ์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒƒ์€ ASP.NET Core ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์‹ค์ œ๋กœ ์ž๋™ ๋‹ค์‹œ ๋นŒ๋“œ ์ง€์›์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ VS๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์‹œ ํ•œ ๋‹ค์Œ ์ž๋™์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ฑฐ๊ฐ€ ์—ฐ๊ฒฐ ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์™€ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (์ข…์† ํ”„๋กœ์ ํŠธ๋Š” ๊ฐ์‹œ๋˜์ง€ ์•Š์Œ).

์—ฐ๊ฒฐ ์†์‹ค์˜ ์›์ธ์ด ๋นŒ๋“œ ์ธ ๊ฒฝ์šฐ ์ž๋™ ์žฌ ์—ฐ๊ฒฐ ์‹œ๋„๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ฐœ๋ฐœ ์ค‘์— ์ž๋™ ์žฌ ์—ฐ๊ฒฐ์„ ์ „ํ˜€ ๋น„ํ™œ์„ฑํ™” ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋‚˜๋ฅผ ๊ดด๋กญ ํžˆ๊ณ  ์–ด์จŒ๋“  F5๋ฅผ ๋ˆ„๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ•œ ์žฌ ์—ฐ๊ฒฐ ์‹œ๋„๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :)

๋”ฐ๋ผ์„œ VS๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ„๋ฆฌ๋˜๊ณ  ๋‹ค์‹œ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์ด ๋‹ค์†Œ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋””๋ฒ„๊น…์„ ํ†ตํ•ด Blazor ์„œ๋ฒ„ ์•ฑ์˜ ๋ผ์ด๋ธŒ ๋‹ค์‹œ๋กœ๋“œ์— ๋Œ€ํ•œ ์ตœ์ข… ์†”๋ฃจ์…˜์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ bansalankit2601 .NET 5.0์—์„œ ๊ตฌํ˜„ ์˜ˆ์ •

๊ฐ์‹œ์ž๋ฅผ dotnet watch run ๋กœ ์‹คํ–‰ํ•˜๊ณ  VS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋‹ค์‹œ ์ปดํŒŒ์ผ๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž ๊ธฐ๊ณ  ๋‹ค์‹œ๋กœ๋“œํ•ด์•ผํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

๋‚˜๋Š” F5๋ฅผ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์— ์ง€ ์ณค๊ณ  ์ƒํ™ฉ์„ ์กฐ์ •ํ•˜๋Š” ๋™์•ˆ VS์— โ€‹โ€‹๋จธ๋ฌด๋ฅด๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋ฏ€๋กœ TamperMonkey ๋ฅผ ๊ตฌ์ถœํ•˜์‹ญ์‹œ์˜ค.

```// == ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ==
// @name ํŽ˜์ด์ง€ ๋‹ค์‹œ๋กœ๋“œ
// @ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค http://tampermonkey.net/
// @ ๋ฒ„์ „ 0.1
// @description ์„ธ๊ณ„๋ฅผ
// @author ๋‹น์‹ 
// @match http : // localhost : 5000 / *
// @ ์—†์Œ
// == / UserScript ==

const reloader = () => {
    if (document.body.innerText.indexOf("Reload the page") >= 0) document.location = document.location;
    else setTimeout(reloader, 300);
}
console.log('Blazor reloader installed');
setTimeout(reloader, 300);

```
์Šคํฌ๋ฆฝํŠธ๊ฐ€ http : // localhost : 5000 / *์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ—ˆ์šฉ

์ด๊ฒƒ์€ ์„œ๋ฒ„ ์ธก์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค : https://github.com/martasp/BlazorLiveReload

ํด๋ผ์ด์–ธํŠธ๋Š” 200ms๋งˆ๋‹ค ์„œ๋ฒ„๋ฅผ pingํ•ฉ๋‹ˆ๋‹ค. dotnet watch run ์—์„œ ๋‹ค์‹œ ์ปดํŒŒ์ผ๋˜์–ด ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ† ๊ธ€๋˜๊ณ  ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ ๋Œ์•„ ์˜ค๋ฉด ์ž๋™์œผ๋กœ F5๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ๊ฐ€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ž‘๋™ํ•˜๋Š” ์ผ๋ถ€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค (์ ์–ด๋„ 3.0์—์„œ ๋‚˜๋ฅผ ์œ„ํ•ด)

ํ˜„์žฌ "Live reload"์ƒํƒœ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ง€์›๋ฉ๋‹ˆ๊นŒ (๋ธŒ๋ผ์šฐ์ €์—์„œ F5์—†์ด)?
๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด์ด ๊ธฐ๋Šฅ์„ ์ถœ์‹œ ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ตœ์‹  ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ ์—… ๋ฐ์ด๋น„๋“œ ํŒŒ์šธ๋Ÿฌ (David Fowler)์˜ @moemar ๋Š” ๋‹ค์Œ ๋ฒ„์ „์— ๋Œ€ํ•œ ๊ณ„ํš์ด ์žˆ์ง€๋งŒ ์•„์ง ๋ฐฐ์น˜ ๋œ ๊ฒƒ์€ ์—†๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. https://youtu.be/bBc_NTUVtbE?list=PL1rZQsJPBU2St9-Mz1Kaa7rofciyrwWVx&t=5010

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ตœ์‹  ์ •๋ณด๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ ์ดํ›„ 2.5 ๊ฐœ์›” ...

๋‚˜๋Š” ๋˜ํ•œ ๊ฐ™์€ ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 2020 ๋…„ 11 ์›”๋กœ ์˜ˆ์ •๋œ .NET 5 ์šฉ์œผ๋กœ ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์‹ถ์€์ง€์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์˜๋ฅผ ๊ณ„์†ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Blazor ์„œ๋ฒ„ ์ธก์˜ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ํ•ด์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@dharmaturtle ์€ 200ms๋งˆ๋‹ค ์„œ๋ฒ„๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ์†”๋ฃจ์…˜์„ ์ œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋  ๋•Œ์—๋„ ์ง€์†์ ์œผ๋กœ ์š”์ฒญ์„ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๊ฐ€์‹œ๋‹ค.

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ blazor ํด๋ผ์ด์–ธํŠธ์—์„œ Blazor.defaultReconnectionHandler._reconnectionDisplay ๋ฅผ ์žฌ์ •์˜ํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง„ ๊ฒƒ์„ ํฌ์ฐฉํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ๊ฐ€์ ธ ์™€์„œ ๋‹ค์‹œ ํ™œ์„ฑํ™” ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ ์€ ์„œ๋ฒ„ ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์„ ๋•Œ๋งŒ ์š”์ฒญ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹จ์ ์€ '_reconnectionDisplay'๊ฐ€ ๋น„๊ณต๊ฐœ ๋ฉค๋ฒ„์ด๊ณ  ์•„์‹œ๋‹ค์‹œํ”ผ ... ์ด๊ฒƒ์€ ์•…ํ•ฉ๋‹ˆ๋‹ค.

์™„ํ™” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ <environment include="Development"> ๋ฌถ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„์—์„œ๋Š” ๋ธ”๋ฆฌ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์ „์ฒด ์ €์žฅ์†Œ.

๋ช‡ ๋ถ„ ์ „์—์ด ์†”๋ฃจ์…˜์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. https://remibou.github.io/Make-your-Blazor-development-faster/

์ง€์†์ ์œผ๋กœ ์„œ๋ฒ„๋ฅผ pingํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด .html, .css ๋˜๋Š” .js ํŒŒ์ผ์—์žˆ๋Š” ๊ฒฝ์šฐ ์ „์ฒด .sln์„ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจ ํ• ๋ฟ์ž…๋‹ˆ๋‹ค.

์œ„์˜ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๋‹ค๋ฅธ ์˜ˆ๋ฅผ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ wasm ํ”„๋กœ์ ํŠธ์—์„œ dotnet watch๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ wasm์˜ wwwroot ํด๋”์—์„œ css, html ๋˜๋Š” js ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ฆ‰์‹œ ๋‹ค์‹œ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋ฉด๋„๊ธฐ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ wasm ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์‹œ ๋นŒ๋“œ ํ•œ ๋‹ค์Œ ๋‹ค์‹œ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. startup.cs์—์„œ์ด๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ์†”๋ฃจ์…˜๊ณผ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์ด์œ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ๊ธฐํƒ€ ์ •์  ํŒŒ์ผ๋„ ๊ณ„์† ์‚ฌ์šฉ์ค‘์ธ ๊ฒฝ์šฐ SystemJS HMR, ๋กค์—… ๋“ฑ๊ณผ ๊ฐ™์ด ์œ ์šฉ ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ์˜ˆ์ œ๋ฅผ ๋™์ผํ•œ ์ €์žฅ์†Œ์—์„œ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/dazinator/NetPack/blob/develop/src/NetPack.Web.Blazor.Host/Startup.cs

๋Ÿฐํƒ€์ž„์— ๋ฉด๋„๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

LivePreview

์ด์— ๋Œ€์‘ํ•˜์—ฌ ์šฐ๋ฆฌ๋Š” ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฆ‰์‹œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Roslyn ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ blazor์—์„œ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์—์„œ razor ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ํŒŒ์ผ ๊ฐ์‹œ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด WebSocket์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ์›๋ฆฌ

Razor ์—”์ง„ ๋ฒ„์ „ 3์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ C # ํด๋ž˜์Šค๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Roslyn ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์ปดํŒŒ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ app.razor ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ๋กœ๋“œํ•˜๊ณ  Steve Sanderson Test ํ˜ธ์ŠคํŠธ ์ˆ˜์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ผ๋ฐ˜ HTML๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ HTML ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด WebSocket์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ด์ค‘ ํ†ต์‹ ์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋” ์ข‹์„ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•

/ preview๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๊ฒฝ๋กœ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด WebSocket ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ชจ๋“  HTTP ์š”์ฒญ ์ปจํ…์ŠคํŠธ์— ์‚ฝ์ž…ํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Blazor ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ๋กœ๋“œ ๋ฐ ์–ธ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋น ๋ฅธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์œ„ํ•ด ํ•˜๋‚˜๋Š” ๋‘ ๊ฐœ์˜ ๋นŒ๋“œ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ค์ œ ์‹ค์ œ ๋” ๊ธด ๋นŒ๋“œ์—๋Š” dotnet watch ๋นŒ๋“œ๊ฐ€์žˆ๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Blazor ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ๋กœ๋“œ ๋ฐ ์–ธ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ถœ์ฒ˜ : https://github.com/martasp/BlazorLiveReload

@martasp

Blazor ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ๋กœ๋“œ ๋ฐ ์–ธ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

blazor wasm ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋…ธ ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „์ด์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ์ƒˆ AppDomain์„ ๋งŒ๋“ค ์ˆ˜์—†๊ณ  ๊ธฐ๋ณธ AppDomain์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์–ธ๋กœ๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

์–ธ์  ๊ฐ€ AssemblyLoadContexts ๋ฐ Assembly.Unload ()๋ฅผ ์ง€์›ํ•˜๋Š” ๋Œ€์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ .net ์ฝ”์–ด ๋Ÿฐํƒ€์ž„์ด ์‹คํ–‰๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @ danroth27 ,
https://www.livesharp.net/ ๋ณด์…จ๋‚˜์š”?
์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ฝ”๋“œ .

Blazor๋ฅผ ์ฆ‰์„์—์„œ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ์‡ผ์ผ€์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (๋‹จ, ํ˜„์žฌ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋Œ์•„ ๊ฐ€์•ผ ํ•จ).
๋˜ํ•œ ๋ฃจํ”„์˜ ์ฝ˜์†” ์ถœ๋ ฅ ํ…์ŠคํŠธ๋„ _ ์‹คํ–‰ ์ค‘ _ !

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ฐ”๋ผ๋Š” ๊ฒฝํ—˜์— ๋งค์šฐ ๊ฐ€๊น์Šต๋‹ˆ๋‹ค!

@warappa ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค! ๋ฉ”์„œ๋“œ๋ฅผ ๋™์  ํ”„๋ก์‹œ๋กœ ๋Œ€์ฒด ํ•  ์ˆ˜์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ฐฌ์‚ฌ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์ด์™€ ๊ฐ™์€ ๊ฒฝํ—˜์„ ์›ํ•˜์ง€๋งŒ ๋ณ„๋„์˜ ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์—†์œผ๋ฉด VS์—์„œ ์žฌ์ƒ์„ ํด๋ฆญํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

@dazinator LiveSharp Server๋Š” ์—…๋ฐ์ดํŠธ ๋œ ์ฝ”๋“œ๋ฅผ ์ง๋ ฌํ™”ํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€์ด๋ฅผ ์‹ ํŠธ๋ฆฌ๋กœ ์—ญ ์ง๋ ฌํ™”ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ๋œ ๋ฉ”์„œ๋“œ์— ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์—์„œ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ผ์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๊ฒŒ ์š”์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ LiveSharp Server๋Š” ํ•œ ๋ฒˆ๋งŒ ์‹œ์ž‘ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„์— ํ‰์†Œ์ฒ˜๋Ÿผ ์•ฑ์„ ์‹œ์ž‘ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ LiveSharp๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํƒœ ์ €์žฅ Blazor ํ•ซ ๋ฆฌ๋กœ๋“œ ๋ฐ๋ชจ์ž…๋‹ˆ๋‹ค. https://www.youtube.com/watch?v=MCh5-44UBpM

๋ฉด์ฑ… ์กฐํ•ญ : ์ €๋Š” LiveSharp์˜ ์ž‘์„ฑ์ž์ž…๋‹ˆ๋‹ค.

@ionoy ์นญ์ฐฌ ๊ทธ๊ฒŒ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค!

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

์ด๊ฒƒ์„ ๋””์ž์ธ ํ•  ๋•Œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ Visual Studio๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ

@wocar LiveSharp ๋Š” ์ด๋ฏธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด๋ฉฐ IDE์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ก ์ ์œผ๋กœ notepad.exe์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@wocar VS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ dotnet watch : https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch

@SteveSandersonMS- ์˜์‹ฌ ํ•  ์—ฌ์ง€์—†์ด ์•Œ๋‹ค์‹œํ”ผ dotnet watch ๋Š” ์ฃผ๋ฅผ ์ฃฝ์ž…๋‹ˆ๋‹ค. LiveSharp๋Š” ์‹ค์ œ๋กœ ๋‹ค์‹œ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘ธ์‹œํ•˜๋ฏ€๋กœ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋กœ UI๋ฅผ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋„ˆํฌ๋“ค์ด ๊ณง ๋™๋“ฑํ•œ ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž€๋‹ค. ๊ทธ๊ฒƒ์€ ์ ˆ์‹คํžˆ ํ•„์š”ํ•˜๋‹ค.

๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. LiveSharp์™€ ๋™์ผํ•˜๋‹ค๊ณ  ์ œ์•ˆํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. @wocar ๊ฐ€ ์˜ต์…˜์„ ์ธ์‹ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌ. ์ด๋ฏธ Livesharp๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์œผ๋ฉฐ ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•˜๋ฉฐ ๊ตฌํ˜„ ๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @wocar! ํ•ซ ๋ฆฌ๋กœ๋“œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ .NET 5๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (์ ์–ด๋„ Rider์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ)

์ด๋ฏธ ์•Œ๊ณ ์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ .NET ๋””๋ฒ„๊ฑฐ๋กœ ์‚ฌ์šฉํ•˜์—ฌ IDE์— ๋…๋ฆฝ์  ์ธ ๋ฐฉ์‹์œผ๋กœ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://docs.microsoft.com/en-us/aspnet/core /blazor/debug?view=aspnetcore-3.1#debug -in-the-browser

์ด๋ฏธ ์•Œ๊ณ ์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ .NET ๋””๋ฒ„๊ฑฐ๋กœ ์‚ฌ์šฉํ•˜์—ฌ IDE์— ๋…๋ฆฝ์  ์ธ ๋ฐฉ์‹์œผ๋กœ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://docs.microsoft.com/en-us/aspnet/core /blazor/debug?view=aspnetcore-3.1#debug -in-the-browser

๋ชฐ๋ž๋˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€ (.cshtml)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  HTML์„ ์ˆ˜์ •ํ•˜๊ณ  F5 ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ตœ์†Œํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Razor ๊ตฌ์„ฑ ์š”์†Œ (.razor)์—์„œ ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ด์œ 

๋” ๋น ๋ฅธ ๊ฐœ๋ฐœ์ฃผ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. Vue์—์„œ hot-reload๊ฐ€ ์ž‘๋™ํ•˜๋ฉด 1.0-2.0 ์ดˆ ํ›„์— ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ณผ ์ˆ˜์žˆ์–ด์„œ ์ •๋ง ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—ฌ๊ธฐ์—์„œ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

dotnet watch run ์€ ์šฐ๋ฆฌ๋ฅผ ์—ฌ๊ธฐ์— ๋ฐ๋ ค๋‹ค์ค๋‹ˆ๋‹ค. .razor ํŒŒ์ผ ๋งŒ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๋” ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋นŒ๋“œ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์ค‘๊ฐ„ ๋‹ต๋ณ€์ด ์žˆ์Šต๋‹ˆ๊นŒ? dbulic์ด ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ์›น ํ˜ธ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œ ํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด 20 ์ดˆ๊ฐ€ ์•„๋‹Œ 1 ์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ๊ฒƒ์€ ํด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” .cshtml ํŒŒ์ผ์˜ ๋Ÿฐํƒ€์ž„ ์ปดํŒŒ์ผ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” .razor ํŒŒ์ผ์— ๋Œ€ํ•œ ์ผ์ข…์˜ "๋Ÿฐํƒ€์ž„ ์ปดํŒŒ์ผ"์„ ํ†ตํ•ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด .razor ํŒŒ์ผ ์ž์ฒด๊ฐ€ (๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ๋Œ€์‹ ) ๋ธŒ๋ผ์šฐ์ €์— ์ง์ ‘๋กœ๋“œ ๋œ ๋‹ค์Œ ๊ฑฐ๊ธฐ์—์„œ ์ปดํŒŒ์ผ ๋œ ๋‹ค์Œ ์„œ๋ฒ„์—์„œ ํŽธ์ง‘๋˜๋ฉด ๋ณ€๊ฒฝ๋œ .razor ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์— ๋‹ค์‹œ๋กœ๋“œํ•˜๊ณ  ๊ทธ๊ณณ์—์„œ ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์—ฌ๊ธฐ cshtml๊ณผ์˜ ์œ ์‚ฌ์ ์„ ์ข‹์•„ํ•˜๊ณ  ์ด๊ฒƒ์ด ๊ณ ๋ ค๋˜๋Š” ๊ฒฝ๋กœ์ธ์ง€ ๊ถ๊ธˆํ•œ๊ฐ€์š”?

์ด๊ฒƒ์€ 2020 ๋…„ 11 ์›”๋กœ ์˜ˆ์ •๋œ .NET 5 ์šฉ์œผ๋กœ ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜๊ณ  ์‹ถ์€์ง€์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์˜๋ฅผ ๊ณ„์†ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@ danroth27 ์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐฉํ–ฅ์„ ์žก์•˜๋‚˜์š”? ์•„์ง ๊ณต์œ  ํ•  ๊ฒƒ์ด ์—†๋‹ค๋ฉด Build 2020์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„๊นŒ์š”?

์•ˆ๋…•ํ•˜์„ธ์š” @mrlife. ์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ BUILD์˜ Blazor WebAssembly ๋ฆด๋ฆฌ์Šค์— ์ง‘์ค‘ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ซ ๋ฆฌ๋กœ๋“œ์— ๋Œ€ํ•œ ์ง€์›์€ .NET 5์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‹ฌ์„ฑ ๋  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋ฐฉํ–ฅ์€ ์•„์ง ๊ฒฐ์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋งŽ์ด ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งค์ผ ์ €๋Š” ํŒจํ„ด 1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒจํ„ด 2๋Š” ์‹ค์ œ๋กœ ํŒจํ„ด 1๊ณผ ๋น„๊ตํ•˜์—ฌ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŒจํ„ด 1์„ ์ง์ ‘ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์— ๋น„ํ•ด ์ฑ„ํƒํ•˜๊ธฐ๊ฐ€ ๋œ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํŒจํ„ด 3์ด ๋‹ฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์— ๊ฐ€๊น๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์œ„์˜ ์„ค๋ช…์— ๋”ฐ๋ฅด๋ฉด ํŒจํ„ด 4๋Š” ์—ด๋ง ๋งŒ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ MAUI์—์„œ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•œ ํ›„์—๋Š” ํŒจํ„ด 6์ด ์ •๋ง ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

ํŒจํ„ด 1 (ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) :

  1. ์›ํ•˜๋Š” ์ˆ˜์˜ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ
  2. ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ ๋ช…๋ น์„ ๋ˆŒ๋Ÿฌ ์ปดํŒŒ์ผํ•˜์‹ญ์‹œ์˜ค.
  3. ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ

ํŒจํ„ด 2 ( dotnet watch run ) :

  1. ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ
  2. ์ž๋™ ์žฌ ์ปดํŒŒ์ผ
  3. ํ•„์š”ํ•œ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ์ถ”๊ฐ€ ์žฌ ์ปดํŒŒ์ผ์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
  4. ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ

ํŒจํ„ด 3 :

  1. ์›ํ•˜๋Š” ์ˆ˜์˜ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ
  2. ๋ถ€๋ถ„์  ๋˜๋Š” ์žฌ ์ปดํŒŒ์ผ ํ•„์š” ์—†์Œ
  3. ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ

ํŒจํ„ด 4 :

  1. ์›ํ•˜๋Š” ์ˆ˜์˜ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ
  2. ๋ธŒ๋ผ์šฐ์ €๋Š” ํ˜„์žฌ ์ƒํƒœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ„ด 5 (์˜ˆ : MAUI hot reload ) :

  1. ํŒŒ์ผ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
  2. ๋ธŒ๋ผ์šฐ์ €๋Š” ํ˜„์žฌ ์ƒํƒœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹ฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

dotnet watch run ํ˜„์žฌ ํŒจํ„ด :

  1. Ctrl Shift S๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ €์žฅ
  2. ์ž๋™ ์žฌ ์ปดํŒŒ์ผ
  3. ์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ ์ž๋™ ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ ๊ณ ์นจ.

์ด ๋ฌธ์ œ๊ฐ€ Blazer ์„œ๋ฒ„์™€ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ๋ชจ๋‘์— ๋Œ€ํ•ด ํ•ซ ๋นŒ๋“œ / ๋‹ค์‹œ๋กœ๋“œ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ˜„์žฌ https://github.com/OYIon/LiveSharp ์‚ฌ์šฉ

์ด๊ฒƒ์€ ๋ชจ๋‘ ๋งค์šฐ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ .dcproj ์ผ๋ช… docker-compose ํ”„๋กœ์ ํŠธ ์—์„œ .๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ๋ญ”๊ฐ€ ์ผ์–ด๋‚˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฒƒ์ด * *

ํ›Œ๋ฅญํ•œ ๊ธฐ์ˆ ์—๋Š” ํ›Œ๋ฅญํ•œ ๋„๊ตฌ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

์‚ฌ๋ฌผ์€ ์ง€์†์ ์œผ๋กœ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜๊ณ  intellisense๋Š” ๋งค์šฐ ๊ฒธ์†ํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • devenv.exe ์ฃฝ์ด๊ธฐ
  • .vs \ ํด๋” ์ œ๊ฑฐ
  • ํ”„๋กœ์ ํŠธ ๋‹ค์‹œ ์‹œ์ž‘

ํˆด๋ง์ด ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ํ•˜๋ฃจ์— ๋‘ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค. ๋ฆฌํŒฉํ† ๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ์‹œ๊ฐ„์— ๋‘ ๋ฒˆ. ์ปคํ”ผ ๋จธ์‹ ์œผ๋กœ์˜ ์—ฌํ–‰๊ณผ ๊ฒฐํ•ฉ ํ•ด๋ณด์„ธ์š”

์‚ฌ๋ฌผ์€ ์ง€์†์ ์œผ๋กœ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜๊ณ  intellisense๋Š” ๋งค์šฐ ๊ฒธ์†ํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ์ด๋ฅผ์œ„ํ•œ ์žฌํ˜„ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๋ฒ„์ „์˜ VS ๋˜๋Š” VS Code์—์„œ ์ž˜๋ชป๋œ ์ •๋ณด ๋˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ๊ทธ๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

cc @NTaylorMullen- ์ด ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ์ง„๋‹จ ๋‹จ๊ณ„๋ฅผ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”.

์‰ฌ์šด:

  • ๊ธฐ์กด ๋ฉด๋„๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ ํŒŒ์ผ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ

image
(๋™์ผํ•œ ์ ‘๋‘์‚ฌ๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ๋„ ์ด๋ฆ„์ด ๋ฐ”๋€๋‹ˆ๋‹ค)

image

  • ๋ถ€๋ถ„ ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ์ด๋ฆ„ ์—…๋ฐ์ดํŠธ

  • ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ฐธ์กฐ ์—…๋ฐ์ดํŠธ / ์ด๋ฆ„ ๋ณ€๊ฒฝ (์ˆ˜๋™, ๋งŽ์ด ๋†“์นœ ํˆด๋ง ๊ธฐ๋Šฅ)

  • ์ž‘ํ’ˆ ๊ตฌ์ถ•

  • ๊ณต๊ตฌ ํŒŒ์†

image

  • .\vs ํด๋” ์‚ญ์ œ ํ›„ ๋ณต๊ตฌ

์‚ฌ๋ฌผ์€ ์ง€์†์ ์œผ๋กœ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜๊ณ  intellisense๋Š” ๋งค์šฐ ๊ฒธ์†ํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ์ด๋ฅผ์œ„ํ•œ ์žฌํ˜„ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ๋ฒ„์ „์˜ VS ๋˜๋Š” VS Code์—์„œ ์ž˜๋ชป๋œ ์ •๋ณด ๋˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ๊ทธ๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

cc @NTaylorMullen- ์ด ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ์ง„๋‹จ ๋‹จ๊ณ„๋ฅผ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

์‘๋‹ต ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์† ์ฃผ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. JvanderStad๊ฐ€ ์ด๋ฏธ ์˜ˆ์ œ๋กœ ์ œ์‹œ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฆฌํŒฉํ† ๋ง์€ ํ™•์‹คํžˆ ๋ฌธ์ œ๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์–ด๋–ค ํŒจํ„ด๋„ ๋ณผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฉ๊ธˆ 219 ์ค„ ํŒŒ์ผ์„ ์—ด๊ณ  167 ๊ฐœ์˜ ์ธํ…”๋ฆฌ ์„ผ์Šค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™ : CS0121 CS0229 CS1503

์ธํ…”๋ฆฌ ์„ผ์Šค ๋ฌธ์ œ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ github ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์œ ์šฉํ• ๊นŒ์š”? ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋Š” ํ™•์‹คํžˆ ์ž˜๋ชป๋œ ๊ณณ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‘๋‹ต ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์† ์ฃผ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. JvanderStad๊ฐ€ ์ด๋ฏธ ์˜ˆ์ œ๋กœ ์ œ์‹œ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฆฌํŒฉํ† ๋ง์€ ํ™•์‹คํžˆ ๋ฌธ์ œ๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์–ด๋–ค ํŒจํ„ด๋„ ๋ณผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฉ๊ธˆ 219 ์ค„ ํŒŒ์ผ์„ ์—ด๊ณ  167 ๊ฐœ์˜ ์ธํ…”๋ฆฌ ์„ผ์Šค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™ : CS0121 CS0229 CS1503

์ธํ…”๋ฆฌ ์„ผ์Šค ๋ฌธ์ œ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ github ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์œ ์šฉํ• ๊นŒ์š”? ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋Š” ํ™•์‹คํžˆ ์ž˜๋ชป๋œ ๊ณณ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

intellisense db๊ฐ€ ์†์ƒ๋˜๊ฑฐ๋‚˜ ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ, VS ์žฌ์‹œ์ž‘ ํ›„์—๋„ ์ง€์†๋ฉ๋‹ˆ๋‹ค.

  <entry>
    <record>1268</record>
    <time>2020/07/08 14:35:36.779</time>
    <type>Error</type>
    <source>Editor or Editor Extension</source>
    <description>System.TimeoutException: The operation has timed out.&#x000D;&#x000A;   at Microsoft.WebTools.Languages.Html.VS.ContainedLanguage.Server.DotNetCoreServerContainedLanguageSupport.OnIdle(Object sender, EventArgs e)</description>
  </entry>

๋‚˜๋Š” vs ๋Œ€์‹  ๋ผ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚˜๋Š” livesharp๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š”์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š๊ฑฐ๋‚˜ ๊ทธ๋‹ค์ง€ ์‹ ๋ขฐํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ ๋„ UI ์—…๋ฐ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ cubed-it์ด PowerShell์€ Visual Studio๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  .vs \ ํด๋”๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์†”๋ฃจ์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ ์€ ์ปคํ”ผ ์—ฌํ–‰์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

$start = New-Object Collections.Generic.List[string]

Write-Host "Looking for Visual Studio"  -BackgroundColor DarkGreen
$devenvs = Get-CimInstance Win32_Process -Filter "name = 'devenv.exe'" | Select-Object CommandLine, ProcessId

foreach ($devenv in $devenvs) {

    Write-Host $devenv

    $index = $devenv.CommandLine.IndexOf("devenv.exe`" `"")
    if ($index -eq -1)
    {
        Write-Host "No params"  -BackgroundColor DarkRed
        continue
    }

    $param = $devenv.CommandLine.Substring($index + 12).Trim()
    $project = $param.Trim('"')
    if ($project.Length -eq 0)
    {
        continue
    }

    #allowed project files
    $slnTypes = New-Object System.Collections.Generic.HashSet[string]
    [void]$slnTypes.Add(".sln")
    [void]$slnTypes.Add(".slnf")

    #
    Write-Host "Project: $project"

    $extension = [System.IO.Path]::GetExtension($project)
    if (-not $slnTypes.Contains($extension))
    {
        Write-Host "No solution" -BackgroundColor DarkRed
        continue;
    }


    $vsFolder = [System.IO.Path]::GetDirectoryName($project)
    $vsFolder = "$vsFolder\.vs\"

    if ([System.IO.Directory]::Exists($vsFolder) -eq $false)
    {
        Write-Host ".vs\ folder does not exist" -BackgroundColor DarkRed
        continue
    }

    #we will restart later
    [void]$start.Add($devenv.CommandLine)

    #kill visual studio
    Write-Host "Kill: $devenv" -BackgroundColor DarkGreen
    Stop-Process -id $devenv.ProcessId -Force

    #remove devenv folder
    Write-Host "Removing: $vsFolder" -BackgroundColor DarkGreen
    Remove-Item -Recurse -Force $vsFolder
}


foreach ($devenv in $start) {

    $program =  $devenv.Substring(0, $index + 11)
    $arguments =  $devenv.Substring($index + 12)

    Write-Host "Starting: '$program'"  -BackgroundColor DarkGreen
    Write-Host "Arguments: '$arguments'"  -BackgroundColor DarkGreen

    Start-Process -FilePath $program -ArgumentList $arguments
}

VS๋ฅผ ๊ณ ์ˆ˜ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ €์žฅ์‹œ ์ž๋™์œผ๋กœ ๋นŒ๋“œ๋˜๊ณ  ์‹œ์ž‘ ํ”„๋กœ์ ํŠธ์—๋งŒ ํ™œ์„ฑํ™” ๋  ์ˆ˜์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ( https://marketplace.visualstudio.com/items?itemName=pragmatrix.BuildOnSave )์„ ์œ„ํ•ด์ด ํ™•์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฒฝ์šฐ ๊ท€ํ•˜์˜ blazor ํ”„๋กœ์ ํŠธ). ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ์œ„ํ•ด VS์—์„œ "Lunch Browser"๋ฅผ ๋„๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ซํžˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ F5 ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์•ผํ•ฉ๋‹ˆ๋‹ค :-(

Razor ๋„๊ตฌ์™€ ๊ด€๋ จํ•˜์—ฌ ๋ชจ๋“  ๊ณ ํ†ต์„ ์™„์ „ํžˆ ๋Š๋ผ์‹ญ์‹œ์˜ค. ๊ณ ๋ง™๊ฒŒ๋„ ์ด๋Š” .NET 5 ์‹œ๊ฐ„๋Œ€์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์žํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด (ํ˜„์žฌ ๋งค์šฐ ์‹คํ—˜์ ์ด๋ผ๊ณ  ๊ฒฝ๊ณ ) ์ตœ์‹  VS ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋‹ค์Œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ ํ™•์ธ๋ž€ (๋„๊ตฌ-> ์˜ต์…˜-> ํ™˜๊ฒฝ-> ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ)์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์ด ๋ฌธ์ œ์— ์–ธ๊ธ‰ ๋œ ๋งŽ์€ Razor ํŽธ์ง‘๊ธฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ ํŽธ์ง‘๊ธฐ์—๋Š” ๊ธฐ์กด ํŽธ์ง‘๊ธฐ์™€ ๋น„๊ตํ•  ๋•Œ ๋ช‡ ๊ฐ€์ง€ ๊ณต๋ฐฑ๊ณผ ๋ช‡ ๊ฐ€์ง€ ๋‚˜์œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ „์ฒด์ ์œผ๋กœ ๋” ๋‚˜์€ ๊ฒฝํ—˜์ธ์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  VS ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฆด๋ฆฌ์Šค ๋‹ค์šด๋กœ๋“œ
https://visualstudio.microsoft.com/vs/preview/

@NTaylorMullen Razor ๋„๊ตฌ์™€ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๋ฅผ ๊ธฐ๋ก ํ•  ์ˆ˜์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ์‹  ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

image

@JvanderStad ๊ตฌ๋ฌธ์ด "@(row => ... ์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@JvanderStad ๊ตฌ๋ฌธ์ด "@(row => ... ์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ฒ„์ „์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

image

@JvanderStad ์•„, ์ƒ‰์ƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜„์žฌ ๊นจ์ง„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

https://devblogs.microsoft.com/aspnet/new-experimental-razor-editor-for-visual-studio/

Daniels์˜ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ๋ฅผ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด์ œ ๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•ด์•ผํ•˜๋Š”์ง€ ์•ˆ๋‹ค. Thnx

@NTaylorMullen Razor ๋„๊ตฌ์™€ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๋ฅผ ๊ธฐ๋ก ํ•  ์ˆ˜์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ์‹  ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Ya C # ์‹œ๋งจํ‹ฑ ์ƒ‰์ƒ ํ™”๋Š” ์ƒˆ ํŽธ์ง‘๊ธฐ์—์„œ ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜„

@ danroth27 blazor wasm์— ๋Œ€ํ•œ hot reload๊ฐ€ ์•„ํ‚คํ…์ฒ˜ ๋•Œ๋ฌธ์— ๊นŒ๋‹ค ๋กญ๋‹ค๋ฉด blazor ์„œ๋ฒ„์— ๋Œ€ํ•œ hot-reload๊ฐ€ ํŠธ๋ฆญ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ์•„์ด๋””์–ด๋Š” ๊ฐœ๋ฐœ ์ค‘์— ์„œ๋ฒ„ ๋ Œ๋”๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋ฉด๋„๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ (blazor wasm ํ”„๋กœ์ ํŠธ์—์„œ)๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๋ Œ๋”๋งํ•˜์—ฌ blazor wasm ๋ฐฐํฌ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์‹ค์ œ wasm ๋ชจ๋ธ์—์„œ ์ตœ์ข… ๋‹จ๊ณ„ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ํ˜ธํ™˜์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ซ ๋ฆฌ๋กœ๋”ฉ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? .net5์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

@ qin-guan ํ•ซ ๋ฆฌ๋กœ๋“œ๋Š” ํ•ด๋‹น ๋ฆด๋ฆฌ์Šค์— ๋‚จ์€ ์‹œ๊ฐ„ ์ œํ•œ์œผ๋กœ ์ธํ•ด .NET 5์— ๋Œ€ํ•ด ๊ณ„ํš๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. .NET 6์— ๋Œ€ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

ํŽธ๊ฒฌ ์ด ๋งŽ๊ณ  ๋”์ฐํ•  ์ •๋„๋กœ ๋ฌด์ง€ํ•œ ์˜๊ฒฌ์„ ์šฉ์„œํ•ด์ฃผ์‹ญ์‹œ์˜ค.ํ•˜์ง€๋งŒ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋’ท์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋Š”

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

ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ๋ชจ์Šต์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. .NET 6์ด .NET 5๋ณด๋‹ค ๋ฉ€์ง€ ์•Š๊ณ  Blazor์˜ ์ƒ์‚ฐ์„ฑ์ด ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋”ฐ๋ผ ์žก๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@ qin-guan ํ•ซ ๋ฆฌ๋กœ๋“œ๋Š” ํ•ด๋‹น ๋ฆด๋ฆฌ์Šค์— ๋‚จ์€ ์‹œ๊ฐ„ ์ œํ•œ์œผ๋กœ ์ธํ•ด .NET 5์— ๋Œ€ํ•ด ๊ณ„ํš๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. .NET 6์— ๋Œ€ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋„ˆ๋ฌด ์Šฌํ”„๋‹ค.์ด ๊ธฐ๋Šฅ์„ .net5์—์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ

@dazinator @ buster95 ์‹ค๋ง์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค! ํ•ซ ๋ฆฌ๋กœ๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ .NET 5์—์„œํ•˜๊ณ  ์‹ถ์€ ์ผ ๋ชฉ๋ก์˜ ๋งจ ์œ„์— ์žˆ์—ˆ๊ณ  ์—ฌ์ „ํžˆ ๋ฐฑ ๋กœ๊ทธ์˜ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜๋Š” .NET ์ „๋ฐ˜์— ๊ฑธ์นœ ๋” ๊ด‘๋ฒ”์œ„ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ์˜ˆ์ƒ๋˜์—ˆ์ง€๋งŒ ๋ชจ๋‘ .NET 6์œผ๋กœ ํ‘ธ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰์ค‘์ธ ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ์•ˆ์ •์ ์ธ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๊ณ  ์ถฉ์‹ค๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. .NET 5์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” Blazor ๊ฐœ๋ฐœ์„์œ„ํ•œ ์ „์ฒด ์ƒ์‚ฐ์„ฑ ๊ธฐ๋Šฅ (๋ฆฌํŒฉํ„ฐ๋ง, def / impl๋กœ ์ด๋™, ์ฝ”๋“œ ์ž‘์—… ๋“ฑ)์„ ํ™œ์„ฑํ™”ํ•ด์•ผํ•˜๋Š” Razor ํŽธ์ง‘๊ธฐ๋ฅผ ์™„์ „ํžˆ ๊ฐœ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋‹ฌ ์ดˆ์— ์ฒ˜์Œ์œผ๋กœ ์ƒˆ ํŽธ์ง‘๊ธฐ๋ฅผ ์„ ํƒ์  ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๊ฒŒ ํ–ˆ์œผ๋ฉฐ ๋‚ด๋…„ ์ดˆ์— ๊ธฐ๋ณธ Razor ํŽธ์ง‘๊ธฐ๋กœ ๋งŒ๋“ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ CSS ๊ฒฉ๋ฆฌ, ์ง€์—ฐ๋กœ๋“œ, UI ํฌ์ปค์Šค ์„ค์ •, HTML ํ—ค๋“œ ์ˆ˜์ •, ํŒŒ์ผ ์—…๋กœ๋“œ, ๋ณดํ˜ธ ๋œ ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ, ๊ฐ€์ƒํ™” ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ .NET 5์—์„œ ์ œ๊ณต๋˜๋Š” ๋‹ค๋ฅธ Blazor ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ธฐ๋Šฅ๋„ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@dazinator @ buster95 ์‹ค๋ง์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค! ํ•ซ ๋ฆฌ๋กœ๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ .NET 5์—์„œํ•˜๊ณ  ์‹ถ์€ ์ผ ๋ชฉ๋ก์˜ ๋งจ ์œ„์— ์žˆ์—ˆ๊ณ  ์—ฌ์ „ํžˆ ๋ฐฑ ๋กœ๊ทธ์˜ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜๋Š” .NET ์ „๋ฐ˜์— ๊ฑธ์นœ ๋” ๊ด‘๋ฒ”์œ„ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ์˜ˆ์ƒ๋˜์—ˆ์ง€๋งŒ ๋ชจ๋‘ .NET 6์œผ๋กœ ํ‘ธ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰์ค‘์ธ ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ์•ˆ์ •์ ์ธ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๊ณ  ์ถฉ์‹ค๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. .NET 5์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” Blazor ๊ฐœ๋ฐœ์„์œ„ํ•œ ์ „์ฒด ์ƒ์‚ฐ์„ฑ ๊ธฐ๋Šฅ (๋ฆฌํŒฉํ„ฐ๋ง, def / impl๋กœ ์ด๋™, ์ฝ”๋“œ ์ž‘์—… ๋“ฑ)์„ ํ™œ์„ฑํ™”ํ•ด์•ผํ•˜๋Š” Razor ํŽธ์ง‘๊ธฐ๋ฅผ ์™„์ „ํžˆ ๊ฐœ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋‹ฌ ์ดˆ์— ์ฒ˜์Œ์œผ๋กœ ์ƒˆ ํŽธ์ง‘๊ธฐ๋ฅผ ์„ ํƒ์  ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๊ฒŒ ํ–ˆ์œผ๋ฉฐ ๋‚ด๋…„ ์ดˆ์— ๊ธฐ๋ณธ Razor ํŽธ์ง‘๊ธฐ๋กœ ๋งŒ๋“ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ CSS ๊ฒฉ๋ฆฌ, ์ง€์—ฐ๋กœ๋“œ, UI ํฌ์ปค์Šค ์„ค์ •, HTML ํ—ค๋“œ ์ˆ˜์ •, ํŒŒ์ผ ์—…๋กœ๋“œ, ๋ณดํ˜ธ ๋œ ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ, ๊ฐ€์ƒํ™” ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ .NET 5์—์„œ ์ œ๊ณต๋˜๋Š” ๋‹ค๋ฅธ Blazor ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ธฐ๋Šฅ๋„ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.livesharp.net ๊ณผ ๊ฐ™์€ ๋ฌด๋ฃŒ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ๋ชจ๋‘์—๊ฒŒ ๋ฌด๋ฃŒ ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
image
์ด ํ™•์žฅ์€ ๊ตฌ์„ฑ์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ 15 ์ผ ํ‰๊ฐ€ํŒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ข

์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ณ„ํš๋œ๋Œ€๋กœ MacOS์—์„œ ํ•ซ ๋ฆฌ๋กœ๋“œ๊ฐ€ ์ž‘๋™ํ• ๊นŒ์š”? ์ง€๊ธˆ์€ ํŽธ์ง‘ํ•˜๊ณ  ๊ณ„์†ํ•˜๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

https://github.com/dotnet/runtime/issues/12409

@wocar ์˜ˆ, ์šฐ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์†”๋ฃจ์…˜์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด๋ฉฐ macOS์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@ danroth27 ๋‹น์‹ ์€ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š” ์†”๋ฃจ์…˜์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜ํ•œ ์‰ฝ๊ฒŒ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์˜ˆ๋ฅผ ๋“ค์–ด ๋Š๋ฆฐ ์ „์ฒด ์žฌ ๋นŒ๋“œ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด์žˆ๋Š” ๊ฐœ๋ฐœ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@ danroth27 ๋‹น์‹ ์€ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š” ์†”๋ฃจ์…˜์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜ํ•œ ์‰ฝ๊ฒŒ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์˜ˆ๋ฅผ ๋“ค์–ด ๋Š๋ฆฐ ์ „์ฒด ์žฌ ๋นŒ๋“œ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด์žˆ๋Š” ๊ฐœ๋ฐœ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@xrkolovos VS๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ctrl-shift-b , ctrl-alt-enter (๋นŒ๋“œ ํ›„ ์ˆ˜๋™์œผ๋กœ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BrowserLink ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด https://docs.microsoft.com/en- us / aspnet / core / client-side / using-browserlink? view = aspnetcore-3.1

์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๊ณ  ์ž‘์—…ํ•˜๊ธฐ ์‰ฌ์šด ์†”๋ฃจ์…˜์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์˜ˆ๋ฅผ ๋“ค์–ด ๋Š๋ฆฐ ์ „์ฒด ์žฌ ๋นŒ๋“œ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด์žˆ๋Š” ๊ฐœ๋ฐœ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

.NET 5์˜ ๊ฒฝ์šฐ dotnet watch ๋กœ ์ •ํ™•ํžˆ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/aspnetcore/pull/24574

@dazinator @ buster95 ์‹ค๋ง์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค! ํ•ซ ๋ฆฌ๋กœ๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ .NET 5์—์„œํ•˜๊ณ  ์‹ถ์€ ์ผ ๋ชฉ๋ก์˜ ๋งจ ์œ„์— ์žˆ์—ˆ๊ณ  ์—ฌ์ „ํžˆ ๋ฐฑ ๋กœ๊ทธ์˜ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜๋Š” .NET ์ „๋ฐ˜์— ๊ฑธ์นœ ๋” ๊ด‘๋ฒ”์œ„ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ์˜ˆ์ƒ๋˜์—ˆ์ง€๋งŒ ๋ชจ๋‘ .NET 6์œผ๋กœ ํ‘ธ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰์ค‘์ธ ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜์žˆ๋Š” ์•ˆ์ •์ ์ธ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๊ณ  ์ถฉ์‹ค๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. .NET 5์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@ danroth27 .NET์˜ "๋” ๊ด‘๋ฒ”์œ„ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ"๊ฐ€ ์›น์ด ์•„๋‹Œ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ž‘๋™ํ•˜๋„๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ถ”์  ํ•  ์ˆ˜์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋ฅผ ๋ฐฑ ๋กœ๊ทธ ๋งˆ์ผ์Šคํ†ค์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์ž‘์—…ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฆด๋ฆฌ์Šค ์ดํ›„ ๋ฐฑ ๋กœ๊ทธ๋ฅผ ์žฌํ‰๊ฐ€ํ•˜๊ณ ์ด ํ•ญ๋ชฉ์„ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€์น˜๋ฅผ ๋†’์ด๋ ค๋ฉด Triage Process๋ฅผ ์ฝ์–ด๋ณด์‹ญ์‹œ์˜ค.

์—ฐ๋ฝ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
ํ–ฅํ›„ ํ‰๊ฐ€ / ๊ณ ๋ ค๋ฅผ ์œ„ํ•ด์ด ๋ฌธ์ œ๋ฅผ Next sprint planning ๋งˆ์ผ์Šคํ†ค์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋งˆ์ผ์Šคํ†ค์— ๋Œ€ํ•œ ์ž‘์—…์„ ๊ณ„ํš ํ•  ๋•Œ ์š”์ฒญ์„ ํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์— ์˜ˆ์ƒ๋˜๋Š” ์‚ฌํ•ญ๊ณผ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์‹ฌ์‚ฌ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ฝ์–ด๋ณด์‹ญ์‹œ์˜ค.

์ด์ œ .NET5์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์ด์ œ .NET5์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Dudeee๋Š” ์œ„์˜ ๋Œ“๊ธ€์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ .net 6-preview๋ฅผ ๊ณ„ํš ์ค‘์ด์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ขScreenshot_20201112-071336__01.jpg

@ buster95 ๊ทธ๋Ÿฐ ๋‹ค์Œ .NET Conf 2020 1 ์ผ์ฐจ 2h38mm36ss์—์„œ ํŽ˜์ด์ง€ ์ž๋™์„ ์ƒˆ๋กœ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด ๋„๋Œ€์ฒด ์Šคํ‹ฐ๋ธŒ
๋™์˜์ƒ ๋งํฌ : https://www.youtube.com/watch?v=mS6ykjdOVRg

2h38mm36ss์—์„œ

@yasserss , ๋‹น์‹œ Safia Abdalla๋Š” <Virtualize> ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. YouTube์˜ ๊ณต์œ  ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ง€์ •๋œ ์‹œ๊ฐ„์— ์ ์ ˆํ•œ ๋™์˜์ƒ ๋งํฌ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@BrunoBlanes ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค : https://youtu.be/mS6ykjdOVRg?t=8917

๊ทธ๊ฐ€ dotnet watch. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค

2h : 25m : 40s ํ›„์— ๋™์˜์ƒ์„ ํ™•์ธํ•˜๋ฉด dotnet watch run ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ์‹คํ–‰ํ•˜๊ณ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dotnet watch run ์ด (๊ฐ€) ๊ฐœ์„ ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ dotnet ์‹œ๊ณ„ ์„ฑ๋Šฅ์„ ์‚ฌ์šฉํ–ˆ๋˜ ๋•Œ๊ฐ€ ๋‚˜๋นด๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ชฐ๋ผ

์˜ˆ, dotnet watch ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด .NET 5์—์„œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ œ ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค dotnet restore ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋” ํ˜„๋ช…ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์‹œ๋กœ๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ•ซ ๋ฆฌ๋กœ๋“œ์˜ ๊ถ๊ทน์  ์ธ ๋น„์ „์ด ์•„๋‹™๋‹ˆ๋‹ค . ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ .NET 6์—์„œ ์ง„์ •ํ•œ ํ•ซ ๋ฆฌ๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๊ณ„ํš์ด์ง€๋งŒ, .NET 5์˜ dotnet watch ์„ฑ๋Šฅ ํ–ฅ์ƒ์€ ๊ทธ ๋™์•ˆ ํ•œ ๋‹จ๊ณ„ ๋ฐœ์ „ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ dotnet watch ๋ฐ VS์—์„œ ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์— ๋Œ€ํ•œ ์ง€์›์„ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. VS์—์„œ์ด ๊ธฐ๋Šฅ์„ ์ผœ๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜์„ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

vs-auto-refresh

์ด๋Š” ์•ฑ์ด ์—ฌ์ „ํžˆ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์•ฑ์ด ๋‹ค์‹œ๋กœ๋“œ๋œ๋‹ค๋Š” ์ ์—์„œ ํ•ซ ๋ฆฌ๋กœ๋“œ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํˆด๋ง์ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ๋™์•ˆ ์ฝ”๋“œ ํŽธ์ง‘์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ danroth27 Mac ์šฉ Visual Studio์˜ ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@mrlife ์šฐ๋ฆฌ๊ฐ€ ๊ณง ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ฐพ๊ณ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€์ž…๋‹ˆ๋‹ค. FYI @jongalloway

๋ฟก๋ฟก

๋˜ํ•œ dotnet watch ๋ฐ VS์—์„œ ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์— ๋Œ€ํ•œ ์ง€์›์„ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. VS์—์„œ์ด ๊ธฐ๋Šฅ์„ ์ผœ๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜์„ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

vs-auto-refresh

์ด๋Š” ์•ฑ์ด ์—ฌ์ „ํžˆ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์•ฑ์ด ๋‹ค์‹œ๋กœ๋“œ๋œ๋‹ค๋Š” ์ ์—์„œ ํ•ซ ๋ฆฌ๋กœ๋“œ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํˆด๋ง์ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ์ƒˆ๋กœ ๊ณ ์น˜๋Š” ๋™์•ˆ ์ฝ”๋“œ ํŽธ์ง‘์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด VS2019์—์„œ ์ €์žฅํ•  ๋•Œ ๋””๋ฒ„๊น… ๋ฐ ๋‹ค์‹œ๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ง์”€ํ•˜์‹  ์˜ต์…˜์œผ๋กœ์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ–ˆ์œผ๋ฉฐ F5 ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์‹œ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†”์—์„œ dotnet watch๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…ํ•˜๋Š” ๋™์•ˆ F5๋ฅผ ๋ˆ„๋ฅด๊ธฐ ๋งŒํ•˜๋ฉด์ด ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ASP.NET Core 5 ๋ฆด๋ฆฌ์Šค ์ •๋ณด์˜ dotnet watch๋ฅผ ์‚ฌ์šฉํ•œ ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ ์„น์…˜์— ๋”ฐ๋ฅด๋ฉด ์•„์ง Visual Studio ๋‚ด์—์„œ dotnet watch ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•ž์œผ๋กœ Visual Studio์— ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ ๊ธฐ๋Šฅ์„ ์ œ๊ณต ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

@BrunoBlanes ์ด์ œ 16.8 ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด Visual Studio์—์„œ ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ ์ง€์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์ง€์ ํ•œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผœ๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฃผ์„์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์—…๋ฐ์ดํŠธ ๋œ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@porkopek ์ž๋™ ์žฌ ๊ตฌ์ถ• ๋ฐ ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์€ ๋””๋ฒ„๊ฑฐ๋กœ ์‹คํ–‰ ํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Visual Studio 2019 16.8์—์„œ ์˜ต์…˜์„ ์„ ํƒํ•ด๋„ ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ / ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅ ํ•œ ํ›„ ์ž๋™ ๋นŒ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋ฉด Visual Studio ํŒ์—…์—์„œ null ์ฐธ์กฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Visual Studio 2019 16.8์—์„œ ์ž‘๋™ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋‹ค๋ฅธ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฟก๋ฟก

.NET 6์—์„œ ์™„์ „ํ•œ ๊ฒฝํ—˜์ด ๋  ๊ฒƒ์ž„์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ .NET 5 ๋ฐ Blazor Webassembly๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด ์˜ต์…˜ "์ž๋™ ๋นŒ๋“œ ๋ฐ ์ƒˆ๋กœ ๊ณ ์นจ ์˜ต์…˜"์ด Blazor Webassemblies์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์ด ์˜ต์…˜์„ "์ž๋™ ๋นŒ๋“œ ๋ฐ ์ƒˆ๋กœ ๊ณ ์นจ ..."์œผ๋กœ ์„ค์ •ํ•˜๊ณ  Filename.razor ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  CTRL + S? :) ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

๋ธŒ๋ผ์šฐ์ € ๋งํฌ์™€ ์–ด๋–ป๊ฒŒ (๋˜๋Š”) ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@MussaratAziz ์ด ํ•ซ ๋ฆฌ๋กœ๋“œ ์ •๋ณด์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋ถˆ์™„์ „ํ•˜๊ฑฐ๋‚˜ msdn ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ œ ๊ฒฝ์šฐ์—๋Š” IIS Express ํ”„๋กœํ•„์„ ๊ณ ์ˆ˜ํ•˜๊ณ  ๋””๋ฒ„๊ฑฐ์—†์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด๋กœ ์ธํ•ด Hot-reload ๋˜๋Š” Hot-restart๊ฐ€ ์ง„ํ–‰๋˜์—ˆ์ง€๋งŒ Blazor ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. WASM ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Hotreload์—†์ด UI๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ณ ํ†ต์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ASP Core Dev Team (You are awesome !!)์ด ์ด๊ฒƒ์„ ํฌํ•จํ•˜๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค :)

๋ผ์ด๋ธŒ ์ƒคํ”„ ์‚ฌ์šฉ ... ์ง€ํ•˜์‹ค์—์žˆ๋Š” ์•„์ด๊ฐ€ ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๊ฐ€ ํ•  ์ˆ˜์—†๋Š” ์ผ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฏฟ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋ฏธ์•ˆํ•˜์ง€๋งŒ ์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. Microsoft๋Š” ํ›Œ๋ฅญํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ์ด ๊ธฐ๋Šฅ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. DIV ๋˜๋Š” ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ตœ์†Œ 45 ์ดˆ์ž…๋‹ˆ๋‹ค.

BTW : ๋‹น๋ถ„๊ฐ„์€ LiveSharp๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์• ํ˜ธ๊ฐ€๋“ค์—๊ฒŒ๋Š” ๋น„์šฉ์ด ๋งŽ์ด๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ Redmond์—์žˆ๋Š” ํŒ€์˜ ๊ณต์‹ ์ง€์›๋„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ œํ’ˆ์€ ํ›Œ๋ฅญํ•˜๊ณ  ์ง€์›์€ ๋งค์šฐ ํ›Œ๋ฅญํ•˜๋ฉฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
https://www.livesharp.net/blazor/

๊ฑด๋ฐฐ!

@wocar @ChristianWeyer ์—ฌ๋Ÿฌ๋ถ„์˜ ์ง€์›์— ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ MS ๋…ธ๋ ฅ์„ ๊ฒฝ์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ์ฑ…์ž„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ œ 3์ž๊ฐ€ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์†”๋ฃจ์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ํ•ญ์ƒ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์œ„ํ—˜์„ ๊ฐ์ˆ˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , ๋” ๋งŽ์€ ํ˜‘๋ ฅ, ๋œ ์ ๋Œ€์ ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์˜ค, ๋‚˜๋Š” ๊ฒฝ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค-au contraire :-) ๊ฒฐ๊ตญ, ๊ทธ๊ฒƒ์€ ํ”„๋ฆฌ ์˜ค์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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