Aspnetcore: [ํ† ๋ก ] project.json ๋‹จ๊ณ„์  ํ์ง€ ํ›„ ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ

์— ๋งŒ๋“  2016๋…„ 05์›” 11์ผ  ยท  338์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/aspnetcore

๋งˆ์ง€๋ง‰ ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ์—… ์ดํ›„ project.json ๋‹จ๊ณ„์  ํ์ง€์— ๋Œ€ํ•œ ๋ฐœํ‘œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ์„ค๋ช…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • [x] NuGet์ด ์•„๋‹Œ ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์€ csproj์— ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. project.json (nuget.json?) ๊ฐ€ ์—†์œผ๋ฉด NuGet ํ•ญ๋ชฉ์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?
  • [x] ์ข…์†์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด IntelliSense๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ project.json ์— ๋Œ€ํ•œ ์ตœ๊ณ ์˜ ๋ฐ๋ชจ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • [x] ์ข…์†์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด JSON ํ˜•์‹์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? XML์€ ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์— ๋”์ฐํ•ฉ๋‹ˆ๋‹ค(Maven ์ฐธ์กฐ). JSON์€ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

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

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

์ด๋ฒˆ์ฃผ ์ตœ์•…์˜ ๋‰ด์Šค์— +1. ์ด์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” ์–ด๋””์—์„œ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉฐ ์ผ๋ฐฉ์  ์ธ ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๊ฒฐ์ •์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ๋ณด์ง€ ๋ชปํ–ˆ๊ณ  ๋ฐ˜๋Œ€๋„ ๋งŽ์ด ํ–ˆ์Šต๋‹ˆ๋‹ค(๋งˆ์ง€๋ง‰ ๊ณ„์‚ฐ์—์„œ 85%์—์„œ 15%). ์–ด๋–ค ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ˆ„๊ฐ€ ๊ฒฐ์ •์„ ๋‚ด๋ ธ๋Š”์ง€ ํ† ๋ก ์€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋๋‚˜์š”?

์ด๊ฒƒ์ด .NET Core์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๊นŒ? ๋น„๊ณต๊ฐœ ๋ ˆ๊ฑฐ์‹œ ๊ธฐ์ˆ  ๋ชฉ๋ก์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋น„๊ณต๊ฐœ๋กœ ํ’ˆ์งˆ์„ ์ €ํ•˜์‹œํ‚ค์‹ญ๋‹ˆ๊นŒ?

๋ถ€๋”” ์˜ˆ์ „ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” project.json์—์„œ .csproj๋ฅผ ๋งŒ๋“œ๋Š” VS ํ™•์žฅ์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

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

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

์Šคํƒ ๋“œ์—…์—์„œ Damian์€ Nuget ๊ด€๋ จ ํ•ญ๋ชฉ์ด ํ˜„์žฌ packages.config๋ฅผ ๋Œ€์ฒดํ•  ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์€ ๊ณต์ •ํ•œ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ์œผ๋ฉฐ ์ด ์‹œ์ ์—์„œ ๊ตฌ์ฒด์ ์ธ ๋‹ต๋ณ€์„ ์–ป์„ ์ˆ˜ ์žˆ์„์ง€๋Š” ์˜๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” "JSON์ด ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•˜๋‹ค"๋Š” ๋ฐ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://gist.github.com/darrelmiller/07fed784d2c20de9f5d3719977167181์„ ์ฐธ์กฐ

_if_๊ฐ€ nuget.json์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  dev ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ project.Json์˜ ์œ ์ผํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

@darrelmiller Yaml์€ ์•„๋งˆ๋„ ์žฅํ™ฉํ•œ ์ธก๋ฉด์—์„œ ๋” ๋‚˜์€ ๋Œ€์•ˆ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด ๋Œ€์‹  ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด๋กœ ์†์ž„์ˆ˜ ;).

@sandorfr ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” .net ์ƒํƒœ๊ณ„์˜ XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ธฐ์กด์˜ ์ค‘์š”ํ•œ ๋„๊ตฌ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์˜๊ฒฌ์€ XML์ด ๋ณธ์งˆ์ ์œผ๋กœ ๋‚˜์˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ์ง€์ ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์ƒ์˜ ํ˜•์‹์„ ์‹๋ณ„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์‹๋ณ„ํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋„ค, ์ด๋ฒˆ ์ฃผ ์ตœ์•…์˜ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค... :(์‹ค์ œ๋กœ Xml์€ ๋‚˜์˜์ง€ ์•Š์ง€๋งŒ msbuild๋Š”... ๊ทธ๋ฆฌ๊ณ  msbuild xml ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๊ท€ํ•˜๊ฐ€ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋งค๋„๋Ÿฝ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” .net ์ƒํƒœ๊ณ„์˜ XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ธฐ์กด์˜ ์ค‘์š”ํ•œ ๋„๊ตฌ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์˜๋„๊ฐ€ msbuild์™€ ๊ฐ™์ด ์ˆ˜ํ•˜๋ฌผ์„ ์•ž์œผ๋กœ ์šด๋ฐ˜ํ•˜๋ ค๋Š” ์˜๋„๋ผ๋ฉด ๊ทธ๊ฒƒ์ด ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์— " core " ์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์ธ ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

XML ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ๊ณ„๋Š” ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ƒˆ๋กœ ์„ค๊ณ„๋œ ๋ชจ๋“  ์ƒํƒœ๊ณ„๋Š” ๋‹ค๋ฅธ ํ˜•์‹(YAML, JSON ๋“ฑ)์„ ์ˆ˜์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์…œ ๋ฏธ๋””์–ด์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์˜ ๋ฐ˜์‘์„ ๋ณด์„ธ์š”. ์ด ๋ณ€ํ™”๋ฅผ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ์ธ์ ์œผ๋กœ ์ œ๊ณต๋œ ํ”ผ๋“œ๋ฐฑ์ด ํŒ€์— ๋” ์ค‘์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด์œ ๋ฅผ ์ดํ•ดํ•˜์ง€๋งŒ ์ด ์ƒํƒœ๊ณ„์—์„œ ๊ฒฐ์ •์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ์ฃผ ์ตœ์•…์˜ ๋‰ด์Šค์— +1. ์ด์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” ์–ด๋””์—์„œ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉฐ ์ผ๋ฐฉ์  ์ธ ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๊ฒฐ์ •์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ๋ณด์ง€ ๋ชปํ–ˆ๊ณ  ๋ฐ˜๋Œ€๋„ ๋งŽ์ด ํ–ˆ์Šต๋‹ˆ๋‹ค(๋งˆ์ง€๋ง‰ ๊ณ„์‚ฐ์—์„œ 85%์—์„œ 15%). ์–ด๋–ค ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ˆ„๊ฐ€ ๊ฒฐ์ •์„ ๋‚ด๋ ธ๋Š”์ง€ ํ† ๋ก ์€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋๋‚˜์š”?

์ด๊ฒƒ์ด .NET Core์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๊นŒ? ๋น„๊ณต๊ฐœ ๋ ˆ๊ฑฐ์‹œ ๊ธฐ์ˆ  ๋ชฉ๋ก์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋น„๊ณต๊ฐœ๋กœ ํ’ˆ์งˆ์„ ์ €ํ•˜์‹œํ‚ค์‹ญ๋‹ˆ๊นŒ?

๋ถ€๋”” ์˜ˆ์ „ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” project.json์—์„œ .csproj๋ฅผ ๋งŒ๋“œ๋Š” VS ํ™•์žฅ์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

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

๋‚˜๋Š” ๋‹น์‹ ์ด ๋„ˆ๋ฌด ๋น„๊ด€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ฃผ๋กœ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์ด๊ฒƒ์— ๋†€๋ž๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๊ทธ๋“ค์˜ ๊ณ„ํš์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. @DamianEdwards ๋Š” project.json ๋ชจ๋ธ์˜ ์ข‹์€ ๋ถ€๋ถ„์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋ถ„๋ช…ํžˆ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ cs ํŒŒ์ผ์„ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ๋ฅผ ์–ธ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ
  • ํŒŒ์ผ์—์„œ ์ง์ ‘ ๋„ˆ๊ฒŸ ์ข…์†์„ฑ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ(IntelliSense ์‚ฌ์šฉ)
  • global.json์„ ํ†ตํ•ด nuget ํŒจํ‚ค์ง€๋ฅผ ๋กœ์ปฌ ์†Œ์Šค๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Œ

์ปดํŒŒ์ผ ๋ฉด์—์„œ๋Š” Visual Studio๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ ์ปดํŒŒ์ผ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์‹ค์ œ ๋ช…๋ น์ด "dotnet build"์ธ์ง€ "msbuild"์ธ์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ „์ฒด ์†”๋ฃจ์…˜์„ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  - ์•„์ง "dotnet cli"์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ ์–ด๋„ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ).

์ด๊ฒƒ์ด ๋‹ฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋‚˜๋Š” ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ๋ฌธ์ด ๋ฌด์—‡์ด๋“  ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. XML์€ ํ›Œ๋ฅญํ•˜์ง€ ์•Š์ง€๋งŒ JSON์—๋Š” ๋ถ„๋ช…ํžˆ ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์ด๊ฒƒ์ด .NET Core ๋“ฑ์˜ ๊ธฐ๋ณธ (๊ทธ๋ฆฌ๊ณ  ํ›Œ๋ฅญํ•œ) ์•„์ด๋””์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

IMHO, ์ฃผ์š” ๋ฌธ์ œ๋Š” RTM ์ง์ „์˜ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๊ฐ€ ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ ํƒ€ ์‹œ๊ฐ„์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ฐœ๋ฐœ์ž/ํŒ€์ด ๊ทธ๋‹ค์ง€ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์ง€๋‚œ 2๋…„ ๋™์•ˆ ํ•˜๊ณ  ์žˆ๋Š” project.json ์‹œ์Šคํ…œ ์— ๋”ฐ๋ผ ํ˜„์žฌ ์ œํ’ˆ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. Asp.Net์€ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ/์•ŒํŒŒ/๋ฒ ํƒ€๊ฐ€ ์•„๋‹Œ RC์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ณ€๊ฒฝ์€ ๊ฐœ๋ฐœ์ž/ํŒ€์˜ ์‹ ๋ขฐ๋ฅผ ๊นจ๋œจ๋ฆฝ๋‹ˆ๋‹ค.

IMHO, ์ฃผ์š” ๋ฌธ์ œ๋Š” RTM ์ง์ „์˜ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๊ฐ€ ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋„ ์ฒ˜์Œ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” project.json/xproj/csproj ํŒŒ์ผ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ ๋ณ€๊ฒฝ์ด ์ž๋™์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Š” Visual Studio๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ ์ด๋ฏธ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•œ ์ด์ „ ํ”„๋กœ์ ํŠธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋‹จ๊ณ„์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

BTW ์ €๋Š” ํ•ญ์ƒ project.json ๋ฐ xproj ํŒŒ์ผ(Visual Studio ํ…œํ”Œ๋ฆฟ์˜ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์ผ๋ถ€ ์ถœ๋ ฅ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋•Œ๋•Œ๋กœ ํŽธ์ง‘ํ•ด์•ผ ํ•จ)์ด ์ด์ƒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

BTW ์ €๋Š” ํ•ญ์ƒ project.json ๋ฐ xproj ํŒŒ์ผ(Visual Studio ํ…œํ”Œ๋ฆฟ์˜ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์ผ๋ถ€ ์ถœ๋ ฅ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋•Œ๋•Œ๋กœ ํŽธ์ง‘ํ•ด์•ผ ํ•จ)์ด ์ด์ƒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด์ฉŒ๋ฉด ์ด์ƒํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ๋“ค์€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ๋Œ€๋‹ตํ•ฉ๋‹ˆ๋‹ค. project.json์€ .net ํ•ต์‹ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์œ ์ผํ•œ ํŒŒ์ผ์ด๊ณ  xproj๋Š” Visual Studio๋ผ๋Š” ๋…์  ๋„๊ตฌ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. webstorm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ package.json ๋ฐ .idea์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. Visual Studio๋Š” ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์†์„ฑ ์•„๋ž˜์—์„œ project.json์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ํ•จ๊ป˜ ํ˜ผํ•ฉํ•˜์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ‘ํ•ฉ๋œ ํ๋ ˆ์ดํŠธ GUI ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” xproj์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์žŠ์–ด ๋ฒ„๋ฆฐ ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ VS Code์˜ Mac์—์„œ์ด ๋ฌผ๊ฑด์„ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค. OTOH, Visual Studio์—์„œ ๋””๋ฒ„๊น…๊ณผ ํ›จ์”ฌ ๋” ๋งŽ์€ ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” ๋‹น์‹ ์ด ๋„ˆ๋ฌด ๋น„๊ด€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ฃผ๋กœ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์ด๊ฒƒ์— ๋†€๋ž๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

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

http://c2.com/cgi/wiki?XmlSucks
http://www.ibm.com/developerworks/xml/library/x-sbxml/index.html
http://nothing-more.blogspot.co.za/2004/10/where-xml-goes-astray.html

์ด์ œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด JSON์ด ๋ชจ๋“  ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ๋•Œ .NET Core๊ฐ€ ๊ตฌ์ถ•๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” JSON์ด XML๋ณด๋‹ค ๋” ์žฅ๊ธฐ์ ์ธ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ, XML ์ถฉ๋Œ๋ณด๋‹ค JSON ์ถฉ๋Œ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ XML ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ์‹ ์„ ํ•œ ๊ณต๊ธฐ๋ฅผ ์ฐพ์•˜๊ณ  JSON ํŒŒ์ผ์„ ์ฝ๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  JSON ํŒŒ์ผ์„ Visual Studio ์™ธ๋ถ€์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. XML/MSBuild๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„ค, ์ด๊ฒƒ๋“ค์€ ์ œ ๊ฐœ์ธ์ ์ธ ๋Š๋‚Œ์ด๊ณ  ๋„ค ์ฃผ๊ด€์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠธ์œ„ํ„ฐ์™€ ๋‹ค๋ฅธ ๊ณณ์˜ ๋Œ“๊ธ€์— ๋”ฐ๋ฅด๋ฉด ์ €๋Š” ๊ทธ๊ฒƒ๋“ค์ด ๊ณ ๋ฆฝ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ, ์ด ๊ฒฐ์ •์€ .NET Core์˜ ์ „์ฒด ๋ฐฉํ–ฅ, ํŠนํžˆ ์ด์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ๊ฒฐ์ •์ด ๋‚ด๋ ค์ง€๋Š” ๋ฐฉ์‹์„ ์™„์ „ํžˆ ์˜์‹ฌํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

@DamianEdwards ๋Š” project.json ๋ชจ๋ธ์˜ ์ข‹์€ ๋ถ€๋ถ„์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋ถ„๋ช…ํžˆ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ด€์ ์—์„œ ๋ณผ ๋•Œ project.json ๋ชจ๋ธ์˜ ๊ฐ€์žฅ ์ข‹์€ ๋ถ€๋ถ„์€ csproj๋„, MSBuild๋„, XML๋„ ์•„๋‹ˆ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ "์ข‹์€" ๋ถ€ํ’ˆ์ด ์œ ์ง€๋ฉ๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋“ค์ด ๋งˆ์นจ๋‚ด ์ž”๋””๋ฅผ ๊นŽ๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ๊ฒŒ ๋œ ํ›„, ๊ทธ๊ฒƒ์€ ๋ชจ๋‘ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์ด์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ, Gulp ๋ฐ project.json ๋ฐ ์ƒํ™ฉ์ด ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š”์ง€์— ๋Œ€ํ•ด ๋“ค์—ˆ๊ณ , ๊ทธ ๋‹ค์Œ์—๋Š” ๋ชจ๋‘ ๊ฐ€์งœ์˜€์œผ๋ฉฐ ๋‹ค์‹œ ๊ตฌ์‹ MSBuild์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

JSON ๋ฐ XML ํ˜•์‹์€ ๋ณ‘ํ•ฉ ์ธก๋ฉด์—์„œ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋‹ซ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(JSON์—์„œ๋Š” ์ค‘๊ด„ํ˜ธ์ผ ๋ฟ์ž„). ์ด๋Š” ๋นˆ/ํ•˜๋‚˜/๋‹ค ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋นˆ JSON ๋ฐฐ์—ด์„ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. JSON์€ ๋ชฉ๋ก์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‘ ์ค„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ ์‰ผํ‘œ์˜ ์ถ”๊ฐ€ ๋‹จ์ ์ด ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ํ”ผํ•˜๋ ค๋ฉด YAML ๋“ฑ์œผ๋กœ ์ด๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

csproj์˜ IMO ๋ฌธ์ œ๋Š” XML์ด ์•„๋‹ˆ๋ผ Visual Studio๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋ชจ๋“  cs ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ๋„๊ตฌ๊ฐ€ ํŒŒ์ผ์˜ ํ•ญ๋ชฉ์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ‘ํ•ฉ์ด ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๋…์„ฑ ์ธก๋ฉด์—์„œ๋„ JSON์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ project.json์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ csproj๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(csproj์—๋Š” ์ž„์˜์˜ ProjectGuid ๋“ฑ์ด ํ•„์š”ํ•จ). ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์œ„ํ•œ ๋„๊ตฌ/๋ช…๋ น์ค„ ์ง€์›์ด ํ™•์‹คํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งŽ์ด ๋“ฃ์ง€ ๋ชปํ•œ ์ด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๋Š” .csproj ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋ณด๋‹ค ์ฐธ์กฐ์— ๊ด€ํ•ด์„œ project.json ๊ฐ€ ํ›จ์”ฌ ๋” ์„ ์–ธ์ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. project.json ํŒŒ์ผ์— ์žˆ๋Š” ์ข…์†์„ฑ์˜ ์žฅ์ ๊ณผ ๋‚ด๊ฐ€ ์šฐ๋ฆฌ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ด ํŒŒ์ผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ๋ฅผ ๊ณ ๋Œ€ํ–ˆ๋˜ ์ด์œ ๋Š” "์ด ์ข…์†์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉด ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ๋“  NuGet ํŒจํ‚ค์ง€. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งŽ์€ ์œ ์—ฐ์„ฑ๊ณผ ๋ฉ‹์ง„ ์ƒˆ๋กœ์šด ์˜ต์…˜์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์กฐ์ ์œผ๋กœ, ํ˜„์žฌ .csproj ํŒŒ์ผ์˜ ์ฐธ์กฐ๋Š” ๋””์Šคํฌ์˜ .dll ํŒŒ์ผ์— ๋Œ€ํ•œ ํ•˜๋“œ ์ƒ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ packages.config์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•ด๋„ ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ํŠน์ • .dll ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋„ .csproj ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. . ์ด๋Š” Visual Studio ๋‚ด์˜ NuGet ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜์ง€๋งŒ project.json ํŒŒ์ผ์— ํ•œ ์ค„์˜ ํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ํŒ€์ด project.json ํŒŒ์ผ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•˜๊ณ  .csproj ํ˜•์‹์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ project.json ๋ฅผ ํŒŒ์ผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ NuGet ํŒจํ‚ค์ง€๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ์™€ ํ•จ๊ป˜ ํ˜„์žฌ์˜ ์ƒํ™ฉ๊ณผ ๋น„๊ตํ•˜์—ฌ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ๋ฌด์—‡์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค packages.config ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์— ๋‹จ์ง€์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .dll .csproj ์—๋„ .csproj ํŒŒ์ผ์ด ๋ฏธ๋ž˜๊ฐ€ ๋œ๋‹ค๋ฉด Core ํŒ€์ด ๋๊นŒ์ง€ ๊ฐ€์„œ project.json ๋˜๋Š” nuget.json์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ _์™„์ „ํžˆ_ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. .csproj ํ˜•์‹์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ณด๋‹ค ์„ ์–ธ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. JSON ํŒŒ์ผ ๋Œ€์‹  XML ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ์ž˜ ์‚ด ์ˆ˜ ์žˆ์ง€๋งŒ(์ €๋Š” ํ™•์‹คํžˆ JSON์„ ์„ ํ˜ธํ•˜์ง€๋งŒ) project.json ์˜ ์„ ์–ธ์  ํŠน์„ฑ์„ ์žƒ๋Š” ๊ฒƒ์€ ์ •๋ง ๋ถ€๋„๋Ÿฌ์šด

https://www.surveymonkey.com/r/H6Q88PP ์—์„œ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์„ธ์š”.

๋ถ„๋ช…ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด Standup ๋…ธํŠธ๋ฅผ ์ฝ์„ ๋•Œ ํ•œ ๊ฐ€์ง€ ์˜ต์…˜์€ nuget install --save ์ผ์ข…์˜ ์˜ต์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(https://blogs.msdn.microsoft.com/webdev/2016/05/11/ ์ฐธ์กฐ). Notes-from-the-asp-net-community-standup-may-10-2016/). ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ 'intellisense๋กœ .json ํŒŒ์ผ ํŽธ์ง‘'์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์„ ์…ธ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€์—๊ฒŒ๋Š” ํŽธ์ง‘๊ธฐ์— ๋จธ๋ฌด๋ฅด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ œ ์ทจํ–ฅ์€ ๊ฐœ์ธ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๊ฒฝํ—˜์„ ๋ชจ๋‘ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ค„ + UI๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ฝ”๋”์ž…๋‹ˆ๋‹ค. ์—๋””ํ„ฐ๋ฅผ ๋– ๋‚˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋”์ฐํ•œ ๊ฒฐ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ .NET Core๋ฅผ ์ง„์ •์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ ์ด ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด MSBuild์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฆฝ์Šคํ‹ฑ์„ ๋ฐ”๋ฅด๋“  ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹MSBuild๊ฐ€ ๋  ๊ฒƒ์ด๊ณ  ์™ธ๋ถ€์ธ์€ ๊ทธ๊ฒƒ์„ ๋ณด๊ณ  ์ฆ‰์‹œ ๊บผ๋ฒ„๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†์œผ๋กœ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์€ ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค. ์–ด๋ ค์šด ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์„ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ•œ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๋ ค๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋นŒ๋“œ์—์„œ ๋” ๋ณต์žกํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ msbuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. project.json์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ ์ง€๊ธˆ์€ ์ •๋ง ๋ถ€๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค.

MSBUILD ํŒŒ์ผ์—์„œ ๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ธ์šฉ๋ฌธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ตœ๊ทผ์— csproj ํŒŒ์ผ๋กœ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋‚ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Ant/Maven๊ณผ ์ƒ๋‹นํžˆ ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ด๊ณ  ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ๋“ค์—๊ฒŒ ์œ ๋ฆฌํ•œ ์ ์ด ์•„๋‹™๋‹ˆ๋‹ค.
Ant/Maven์€ ๋งŽ์€ ์‚ฌ๋ž‘์„ ๋ฐ›์•˜๊ณ  ์ดํ›„ ๋งŽ์€ Java ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋ฏธ์›€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. XML์€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋งค์šฐ ์žฅํ™ฉํ•œ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ง„์งœ ์‚ด์ธ์ž๋Š” ๋ฝ์ธ(lockin)์ด๋‹ค. ์˜ˆ, msbuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตฌ๋ฌธ์€ ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ๊ธฐ/ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ IDE์—์„œ ์ƒํƒœ๋ฅผ ์ง๋ ฌํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์ค„ ์‹คํ–‰๊ธฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ํ˜•์‹์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์นœ์ˆ™ํ•˜๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. VS์— ๋จธ๋ฌด๋ฅด๋Š” ํ•œ ์‹ค์ œ๋กœ ๋ˆˆ์น˜ ์ฑ„์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋– ๋‚˜ ์ž๋งˆ์ž ๋” ์ด์ƒ ํŽธ์•ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. csproj ํŒŒ์ผ์€ .Net์ด Java์—์„œ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉด ํ•˜๋Š” ํ•œ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์›์ฒœ

MSBuild์™€ Visual Studio๊ฐ€ ํ˜„์žฌ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ˆ˜๋…„๊ฐ„ MSBuild ํŒŒ์ผ์„ ์ง์ ‘ ํŽธ์ง‘ํ•ด ์™”์œผ๋ฉฐ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: https://github.com/tavis-software/Tavis.home/blob/master/build/Build.proj

Visual Studio๊ฐ€ ์ƒ์„ฑํ•˜๋Š” csproj ํŒŒ์ผ์€ ๊ฝค ๋ถˆ์พŒํ•˜์ง€๋งŒ MSBuild์—์„œ ์ด๋ฅผ ๋น„๋‚œํ•˜๋Š” ๊ฒƒ์€ ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๊ฐ€ ๊ทธ๊ฒƒ์œผ๋กœ ๋ชป์ƒ๊ธด ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜๊ธฐ ๋•Œ๋ฌธ์— C#์ด ์“ฐ๋ ˆ๊ธฐ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@darrelmiller ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„์„ 6๊ฐœ์›” ์•ž์œผ๋กœ ์ด๋™ํ•˜์—ฌ "๊ทธ๋ ‡๊ฒŒ ๋งํ•œ" ์ˆœ๊ฐ„์ธ์ง€ ๋˜๋Š” "์ด์•Œ์„ ํ”ผํ•œ" ์ˆœ๊ฐ„์ธ์ง€ ๋ด…์‹œ๋‹ค.

๊ทธ์˜ ๋ธ”๋กœ๊ทธ์—์„œ @shawnwildermuth ํ˜ธ์ถœ์— ๋”ฐ๋ผ ๋‚˜๋Š” ๋‚ด ์ž์‹ ์˜ 2์„ผํŠธ๋ฅผ ๋˜์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

์ด๊ฒŒ ์™œ ๊ทธ๋ ‡๊ฒŒ ํฐ์ผ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ XML ๊ธฐ๋ฐ˜ csproj๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

  • JSON์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์€ XML๋ณด๋‹ค ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ฑฐ๋‚˜ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋ฐ˜๋Œ€ IMHO์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์–ด๋ฆฌ์„์€ ํŽธ์ง‘๊ธฐ๋Š” XML ํƒœ๊ทธ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ˆ˜๋™์œผ๋กœ ํ˜•์‹ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. JSON์€ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜๋ฉด 2๋ฒˆ ํ•ญ๋ชฉ์œผ๋กœ ๊ฐ‘๋‹ˆ๋‹ค...
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ํŽธ์ง‘๊ธฐ๋กœ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ์†Œ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๊นŒ? ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ํŽธ์ง‘์€ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์‹ถ์€ ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ผํšŒ์„ฑ์ด์–ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ ์ดํ›„์—๋Š” IMHO์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. JSON, XML, YAML, TOML ๋˜๋Š” ๊ทธ ๋‹น์‹œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ƒ์ƒํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์œผ๋กœ ํŽธ์ง‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‚˜์™€๋Š” ์ „ํ˜€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๊ฐ€ ํ”ผํ•˜๊ณ  ์‹ถ์€ ํ•œ ๊ฐ€์ง€๋Š” NuGet์„ ASP.NET๊ณผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. NuGet์€ ํ›Œ๋ฅญํ•˜๊ณ  ๋งˆ์Œ์— ๋“ค๊ณ  ๋‚ด ASP.NET์ด ์ž˜ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ASP.NET์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ, MVC ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์–ป์œผ๋ ค๋ฉด NuGet ํ”ผ๋“œ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ณต์‹ NuGet ํ”ผ๋“œ๋ฅผ ํ†ตํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋“  ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ ๋กœ์ปฌ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ๋ณต์‚ฌํ•˜์—ฌ ํด๋”๋Š” ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ASP.NET, csproj ๋˜๋Š” ๊ธฐํƒ€ "์ง€์›" ํƒ€์‚ฌ ์‹œ์Šคํ…œ์— ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ํ›Œ๋ฅญํ•œ ํ†ตํ•ฉ์„ ํ—ˆ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ์œ„ํ•ด ๋ฌธ์„ ์—ด์–ด ๋‘์‹ญ์‹œ์˜ค ! ๋”ฐ๋ผ์„œ NuGet ํŒจํ‚ค์ง€๊ฐ€ .csproj ํŒŒ์ผ์—์„œ ์„ ์–ธ๋˜์ง€ ์•Š๊ณ  nuget.json์ด MSBuild์— ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
    ์ž˜ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค ๋’ค์— ๊ธด๋ฐ€ํ•œ ํ†ตํ•ฉ == GREAT.
    ์ด๊ฒƒ์ด ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ํ‘œ์ค€์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ธด๋ฐ€ํ•œ ๊ฒฐํ•ฉ == BAD.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ project.json์€ .NET Core ๋ฐ ASP.NET Core์™€ ๊ฑฐ์˜ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Core๋Š” project.json ํŒŒ์ผ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Project.json์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ์กด์žฌํ•˜๋˜ ๊ฒƒ์„ ๋‹ค์‹œ ๋””์ž์ธํ•˜๋ ค๋Š” ์‹œ๋„์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ๋ฐœ์ž๋กœ์„œ ํด๋ผ์šฐ๋“œ์—์„œ ํ›Œ๋ฅญํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋” ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ง€๋ฃจํ•œ ๊ตฌ์„ฑ ๋Œ€์‹  .NET Core๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๊ฐ€๋Šฅ์„ฑ์— ์ง‘์ค‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์ƒˆ๋กœ์šด ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋Ÿฐํƒ€์ž„์„ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€์‹  Mono๋ฅผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค๊ณ  ๊ฒฉ์ฐจ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‹ค๋ฅธ ๋…ผ์˜์ž…๋‹ˆ๋‹ค.

์ตœ์ข… ์„ค๋ฌธ ์กฐ์‚ฌ ๊ฒฐ๊ณผ: 95% ์‹ ๋ขฐ๋„์—์„œ ยฑ10%์ธ 9๋ฐฑ๋งŒ .NET ๊ฐœ๋ฐœ์ž ์ธ๊ตฌ์— ๋Œ€ํ•ด 100๊ฐœ์˜ ์‘๋‹ต.

project.json์œผ๋กœ์˜ ์ด๋™์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”?
๋„ค, ๊ฐ€์žฅ ๊ธฐ๋Œ€ํ–ˆ๋˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค. 19.19%
์˜ˆ 39.39%
์•„๋‹ˆ์˜ค 13.13%
์•„๋‹ˆ, 16.16%๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์€ ๋”์ฐํ•œ ๋ฐฉํ–ฅ์ด์—ˆ๋‹ค.

MSBuild๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋งŒ์กฑํ•˜์‹ญ๋‹ˆ๊นŒ?
์˜ˆ, ์ด์ œ ์ฑ„ํƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 9.09%
์˜ˆ 16.16%
์•„๋‹ˆ์˜ค 30.30%
์•„๋‹ˆ์š”, ์ด๊ฒƒ์€ .NET Core๊ฐ€ 29.29%๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์˜๋ฌธ์„ ๊ฐ–๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
์ƒ๊ด€์—†์–ด 15.15%

MSBuild๊ฐ€ ๊ฐœ์„ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๊นŒ?
ํ–ฅ์ƒ? ์ด๋ฏธ ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. 1.01%
์˜ˆ 63.64%
์•„๋‹ˆ์˜ค 12.12%
๊ทผ๋ณธ์ ์œผ๋กœ ๋ง๊ฐ€์กŒ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? 20.20%
์ƒ๊ด€์—†์–ด 3.03%

์ด๋ฒˆ ๊ฒฐ์ •์ด ์˜ณ์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
์˜ˆ, ํŒ€์—์„œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•„ 20.41%๋กœ ํ•ด์•ผ ํ•  ๋•Œ ๋ฐฉํ–ฅ์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ 6.12%
์•„๋‹ˆ์˜ค 24.49%
์•„๋‹ˆ์š”, ํŒ€์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ณ  ์ฑ…์ž„๊ฐ ์—†๋Š” ๋น„๊ณต๊ฐœ ๊ฒฐ์ •์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค. 39.80%
์ƒ๊ด€์—†์–ด 9.18%

์ด ๊ฒฐ์ •์€ .NET Core์— ๋Œ€ํ•œ ์ธ์‹์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ?
๊ฐœ์„ , ๋งˆ์นจ๋‚ด ์ •์‹ ๋ ฅ 13.00%์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
11.00% ํ–ฅ์ƒ
42.00% ์•…ํ™”
๊ทธ๊ฒƒ์„ ์•…ํ™”์‹œํ‚ค๊ณ , ๋ชจ๋“  ๊ฒƒ์„ ์˜์‹ฌํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. 18.00%
์‹ ๊ฒฝ์“ฐ์ง€๋งˆ 16%

100๋ช…์ด ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ๋ฒˆํ˜ธ๊ฐ€ ์žˆ์„ ๋•Œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ด…์‹œ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ 100๋ช…์ด๋ผ๋Š” ๋ง์ด ์šฐ์Šค๊ฝ์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ‘œ์‹œ๋œ ๋Œ€๋กœ 100๋ช…์ด 95% ์‹ ๋ขฐ๋กœ ยฑ10%์˜ ์˜ค์ฐจ ๋ฒ”์œ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ง„์ •ํ•œ ๋ฐ˜์˜์„ ๋ณด๋ ค๋ฉด ์–ด๋Š ์ •๋„์˜ ์ž์‹ ๊ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? 900๋งŒ ๊ฐœ๋ฐœ์ž ๋ชจ๋‘๋ฅผ ์กฐ์‚ฌํ•ด์•ผ ํ•˜๋‚˜์š”?

Project.json์„ VS์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์œผ๋กœ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด UserVoice์— ๋Œ€ํ•œ 800ํ‘œ๋„ ์ถ”์„ธ๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ง„์ •์œผ๋กœ ๋Œ€ํ‘œ์ ์ธ ์ƒ˜ํ”Œ์„ ๋งŒ๋“ค๋ ค๋ฉด Microsoft๊ฐ€ ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด ๊ฒฐ์ •์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ๋„ ์˜๊ฒฌ์„ ๊ตฌํ•˜์ง€ ํ•œ ํ›„์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๊ฐœ์ธ ์„ค๋ฌธ ์กฐ์‚ฌ๋ฅผ ํ•˜๋Š” ๋‚˜๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์€ ๋„๋‹ฌ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 100๊ฐœ ์ด์ƒ์˜ ๊ฒฐ๊ณผ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ๋‚ด SurveyMonkey ๊ณ„ํš์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Microsoft ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ˆ˜ํ–‰

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

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

์‚ฌ์‹ค ์ €๋Š” Twitter ํŒ”๋กœ์–ด๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ œ๊ฐ€ Twitter ์ŠคํŠธ๋ฆผ์„ ๊ฒŒ์‹œํ•œ .NET Core ๊ฐœ๋ฐœ์ž์˜ ํŒ”๋กœ์–ด์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๊ทธ๋Ÿฌํ•œ ์„ค๋ฌธ ์กฐ์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ๋žŒ์€ ํ™•์‹คํžˆ Microsoft์ž…๋‹ˆ๊นŒ? ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๋ฌป๋Š” ์ผ์ด ์™œ ๋‚˜์—๊ฒŒ๋งŒ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๊นŒ?

์™œ MS๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๊ฐ์„ ๋ฌด์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

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

๊ทธ๋“ค์ด ์ˆ™์ œ๋ฅผ ํ–ˆ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž์˜ 60%๊ฐ€ ์ด ์›€์ง์ž„์— ๋ฐ˜๋Œ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์„ ๊ฒƒ์ด๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์˜์‚ฌ ์†Œํ†ตํ•˜๊ณ  ์ฐธ์—ฌํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ฐ˜์‘์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฐธ์—ฌํ•˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” VS์šฉ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ผ์ด์„ ์Šค์— ๋Œ€ํ•œ ์œ ๋ฃŒ ๊ณ ๊ฐ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ์ €๋Š” 4๊ฐœ์˜ ์šฐ๋Ÿ‰ ํ•€ ์„œ๋น„์Šค ํšŒ์‚ฌ์—์„œ ์ผํ•˜๋ฉฐ ๊ธฐ์—… ๊ณ ๊ฐ์—๊ฒŒ๋„ ๋น„์šฉ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋“ค์€ ์ •ํ™•ํžˆ ๋ˆ„๊ตฌ์™€ ๊ต์ œ ํ–ˆ ์Šต๋‹ˆ๊นŒ? ์–ด์ ฏ๋ฐค๋ถ€ํ„ฐ ๊ทธ ์งˆ๋ฌธ์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋‹ต๋ณ€์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ .NET Core ์ด์•ผ๊ธฐ์˜ ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋Œ€๊ทœ๋ชจ์˜ ๋Šฆ์€ ์ฃผ์š” ๋ณ€๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ •์ ์ธ ๊ฒƒ์œผ๋กœ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋ฏธ๋ž˜์˜ ํ•ต์‹ฌ์œผ๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ์ „๋‹ฌ๋˜์—ˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” (์•„๋งˆ๋„ ์–ด๋ฆฌ์„๊ฒŒ๋„) ์ด๋ฅผ ์ด ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ CD/CI ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ์ด์ œ๋Š” ์™„์ „ํžˆ ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ๋ถ€์ •์ ์œผ๋กœ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋ฃจ ์ข…์ผ ์˜์‚ฌ ๊ฒฐ์ •์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์š”๊ตฌํ•˜๋Š” ๋™์•ˆ ์™„์ „ํ•œ ๋ผ๋””์˜ค ์นจ๋ฌต์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋“ค์€ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด ๋„๊ตฌ ์ œ์ž‘์ž๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋ฅผ ๋ฒ„์Šค ์•„๋ž˜๋กœ ๋ชฐ์•„๋„ฃ์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋“ค์ด ๋‚ด๊ฐ€ ์•„๋‹Œ ๋„๊ตฌ ์ œ์กฐ์—…์ฒด๋กœ๋ถ€ํ„ฐ VS ๋ผ์ด์„ผ์Šค ๋น„์šฉ์„ ์ง•์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@shederman ๊ท€ํ•˜์˜ ์„ค๋ฌธ ์กฐ์‚ฌ ๊ฒฐ๊ณผ์— ๋™์˜ํ•˜์ง€๋งŒ, ์งˆ๋ฌธ์€ ๋ถ„๋ช…ํžˆ w/ json ํ˜•์‹์„ ์œ ์ง€ํ•˜๋Š” ์„ ํ˜ธํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ธฐ์šธ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ์ข‹์€ ์„ค๋ฌธ์กฐ์‚ฌ๊ฐ€ ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์žฌ๋ฏธ๋กœ ๋ฐ›์•„๋“ค์˜€์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค). ๋‚˜๋Š” ์™œ ์šฐ๋ฆฌ๊ฐ€ ๋‘˜ ๋‹ค ๊ฐ€์งˆ ์ˆ˜ ์—†๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” msbuild๋‚˜ ๊ทธ ๋ฐ–์˜ ๊ฒƒ๋“ค์„ ์ข‹์•„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ์ €๋Š” json์„ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ œ ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค.

์ด์ƒ์ ์ธ ์„ค๋ฌธ์กฐ์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. 5๋ถ„ ๋งŒ์— ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์š”์  ์€: ๋‚ด๊ฐ€ ์™œ ๊ทธ๊ฒƒ์„ ๋งŒ๋“œ๋Š”๊ฐ€?

Microsoft๊ฐ€ ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๊ฐ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

ํ˜„์žฌ 138๊ฐœ์˜ ์‘๋‹ต์ด ์žˆ์ง€๋งŒ Microsoft์˜ ๊ฒฐ์ •์ด ์ž˜๋ชป๋œ ๊ฒฐ์ •์ด์—ˆ์„ ์ˆ˜๋„ ์žˆ์Œ์„ ๊ณ ๋ คํ•˜๋”๋ผ๋„ ์—ฌ์ „ํžˆ Microsoft์˜ ์ง•ํ›„๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค์— ๊ทผ๊ฑฐํ•˜์ง€ ์•Š์€ ์„ค๋ช…์„ ํ”๋“œ๋Š” ์•„์ฃผ ๋ชจํ˜ธํ•œ ์†.

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

์˜ค, ์–˜๋“ค์•„. Microsoft๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ๊ทธ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž ์‹œ ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์‚ฌ๋žŒ๋“ค์€ 2014๋…„ 3์›”-4์›”๋ถ€ํ„ฐ ์ด ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ถœ์‹œ 1๊ฐœ์›” ์ „์— ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ทน์ ์ธ ๋ณ€ํ™”๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์šฐ์Šค๊ฝ์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ์‹ ๋ขฐ๋ฅผ ๋ฌด๋„ˆ๋œจ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์˜ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋‘์šด ๋ฐฉ์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์•„๋ฌด๋„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์ฆ‰์‹œ ์†Œ์Šค๋ฅผ ๋‹ซ์œผ์‹ญ์‹œ์˜ค.

์ด ์‹œ๊ฐ„์— Microsoft์˜ ๋ณ€๋ช…์„ ์š”์ฒญํ•˜๊ณ  ๊ณต๊ฐํ•˜๋Š”(MVP ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์›) ํ˜„์‹ค์ ์ž…๋‹ˆ๋‹ค.

@shederman

๊ทธ๋“ค์ด ์ˆ™์ œ๋ฅผ ํ–ˆ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž์˜ 60%๊ฐ€ ์ด ์›€์ง์ž„์— ๋ฐ˜๋Œ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.net ์ƒํƒœ๊ณ„์˜ ๊ฐœ๋ฐœ์ž ์ค‘ 20% ์ด์ƒ์ด project.json์˜ ์กด์žฌ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ €๋ฅผ ๋†€๋ผ๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ๊ฐœ๋ฐœ์˜ ์ตœ์ „์„ ์— ์„œ์„œ ์•ฝ๊ฐ„์˜ ๊ฐœ๋ฐœ์ž ๊ฑฐํ’ˆ ์†์— ์‚ด๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ์Šต๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ project.json์ด ๋ช‡ ๊ฐ€์ง€ ๋ฉ‹์ง„ ์ƒˆ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ, ํ”„๋กœ์ ํŠธ ํ˜•์‹์„ ์‚ฌ๋žŒ์ด ๋” ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์žฅ์ ์„ MSBuild์— ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋” ๋‹ฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ณ  project.json์„ ๋ชจ๋“  ๊ณณ์—์„œ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ˜œํƒ์„ ์ค„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

.net ์ƒํƒœ๊ณ„์˜ ๊ฐœ๋ฐœ์ž ์ค‘ 20% ์ด์ƒ์ด project.json์˜ ์กด์žฌ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ €๋ฅผ ๋†€๋ผ๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.net eco์˜ 20% ๋ฏธ๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ MVC ๋ฐ Web Api์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 70๋ช… ์ด์ƒ์˜ ์‚ฌ๋žŒ๋“ค์ด WebForms, WCF, WebService๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ Microsoft์˜ ๋ณ€๋ช…์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ํ˜„์‹ค์ ์ผ ์ˆ˜ ์žˆ๋„๋ก ๋™์ •ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

@shederman ์„ค๋ฌธ ์กฐ์‚ฌ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๋ณด๊ณ ์„œ๋Š” .NET ๊ฐœ๋ฐœ์ž ์ง‘๋‹จ์— ๋Œ€ํ•ด ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ... "๊ทธ๋“ค์€ .NET Core ๊ฐœ๋ฐœ์ž์˜ ๋Œ€๋ถ€๋ถ„์„ ์ถ”์ข…ํ•˜๋Š” ์ข‹์€ ๋Œ€ํ‘œ ์ƒ˜ํ”Œ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์˜ฌ๋ฆฐ ํŠธ์œ„ํ„ฐ ์ŠคํŠธ๋ฆผ." ํ‘œ๋ณธ์€ ๋ชจ์ง‘๋‹จ ์ „์ฒด์— ๋Œ€ํ•ด ์•”์‹œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์‹ ๋ขฐ ๊ตฌ๊ฐ„์„ ๋ช…์‹œํ•˜๋Š” ๋ฐ ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฌด์ž‘์œ„ ํ‘œ๋ณธ์ด

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

๊ทธ๋ ‡๋‹ค๋ฉด ์‹œ์žฅ ๊ธฐ๋ฐ˜์˜ 70% ์ด์ƒ์„ ๊ท€์ฐฎ๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด๋“  ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์š”์ ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ณณ์— ๊ทธ๋Œ€๋กœ ๋จธ๋ฌผ๋ฉด์„œ ์ ์ง„์ ์ธ ์ง„ํ™”๋ฅผ ๊ณ„์†ํ•ฉ์‹œ๋‹ค. ๊ณ ์žฅ๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ณ ์น˜์ง€ ๋งˆ์„ธ์š”, ๊ทธ๋ ‡์ฃ ?

๋‚˜๋Š” project.json์ด ๋ณต์žก์„ฑ์„ ์ถ•์ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์ ์— 100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. csproj์— ๋‹ค์‹œ ๋ณ‘ํ•ฉํ•˜๋Š” ์†”๋ฃจ์…˜์ด์—ˆ๋‚˜? ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์„œ๋‘๋ฅด์ง€ ์•Š๊ณ  ์ผ์„ ๋ฐ”๋กœ์žก๋Š” ๋ฐ ๋Œ€ํ•ด ์™„์ „ํžˆ Microsoft ๋’ค์— ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. csproj๋กœ์˜ ์ด๋™์ด ๊ธ‰ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

RC2 ์ดํ›„์— ์ด๊ฒƒ์„ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์–ด๋””์—์„œ ์™”์Šต๋‹ˆ๊นŒ? Xamarin ์ธ์ˆ˜๊ฐ€ ์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? dotnet-cli ํ†ตํ•ฉ์ด์—ˆ๋‚˜? ๋น… ํด๋ผ์ด์–ธํŠธ์˜€๋‚˜? ๋ˆ„๊ฐ€ ์•Œ์•„...

๋‚˜๋Š” ๋Œ€์ค‘์—๊ฒŒ RC1 -> RC2๊ฐ€ ์ตœ์„ ์ด๋ผ๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. dotnet cli์™€ ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ project.json ๋ณ€๊ฒฝ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ•  ๋ง์ด ์—†๋‹ค. ๋‹ค๋งŒ ๋‚ด๊ฐ€ ๋ชจ๋ฅธ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๊ณ  ๋‚˜๋Š” ๊ทธ๋“ค์— ๋Œ€ํ•œ ์„ค๋“๋ ฅ ์žˆ๋Š” ๋…ผ๊ฑฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

RC2 ์ดํ›„์— ์ด๊ฒƒ์„ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์–ด๋””์—์„œ ์™”์Šต๋‹ˆ๊นŒ? Xamarin ์ธ์ˆ˜๊ฐ€ ์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? dotnet-cli ํ†ตํ•ฉ์ด์—ˆ๋‚˜? ๋น… ํด๋ผ์ด์–ธํŠธ์˜€๋‚˜? ๋ˆ„๊ฐ€ ์•Œ์•„...

์ด๊ฒƒ์ด ํฌ์ธํŠธ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” csproj๋กœ์˜ ์ด์ „์— ๋Œ€ํ•œ ์ „์ฒด ์ด์•ผ๊ธฐ๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ด์ œ ๋’ค๋กœ ๊ธฐ๋Œ€๊ณ  ํœด์‹์„ ์ทจํ•˜๊ณ  ์™œ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์ง€์ผœ๋ณด๊ณ  ์ดํ•ดํ•˜๋Š” ๋Œ€์‹  ๋ชจ๋‘๊ฐ€ Microsoft๋ฅผ ์ €์ฃผํ•˜๊ณ  ์ตœ์•…์˜ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ๋žŒ๋“ค์€ ์šฐ๋ฆฌ์™€ ์šฐ๋ฆฌ๋งŒ์„ ์œ„ํ•ด ์ด ๋ฌผ๊ฑด์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ•œ ๋ช…์˜ ํฐ ๊ณ ๊ฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฐ ๋ณ€๊ฒฝ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํ•œ ๋ช…์˜ ํฐ ๊ณ ๊ฐ์€ ์ „์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์žƒ์„ ์œ„ํ—˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์น˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Microsoft .NET ์—์ฝ” ์‹œ์Šคํ…œ์€ HUUUUUUGE์ด๋ฉฐ .NET Core๋ฅผ ์ด ์‹œ์Šคํ…œ์— ์ž˜ ๋งž์ถ”๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋ณต์žกํ•œ ์ž‘์—…์ด๋ฏ€๋กœ ๋ชจ๋‘๊ฐ€ ์กฐ๊ธˆ ์ง„์ •ํ•˜๊ณ  ์ด ์‚ฌ๋žŒ๋“ค ๋’ค์— ํ˜„๋ช…ํ•œ ์‚ฌ๋žŒ๋“ค์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋„๋ก ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ ๊ฐ€์žฅ ํฐ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๋ถ€์ •์ ์ธ ์„ฑ๊ธ‰ํ•œ ์ถ”์ธก์ด ๋‚˜๋ฅผ ์ง€๋ฃจ

@darrelmiller ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. 60%๋ผ๊ณ  ํ•˜๋ฉด ์„ค๋ฌธ์กฐ์‚ฌ์— ์‘๋‹ตํ•œ ์‚ฌ๋žŒ๋“ค์˜ 60%๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@GuardRex ๋‹น์‹ ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ์˜ณ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ์ ์ ˆํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์กฐ์ง์€ MS์ด๊ณ  ๊ทธ๋“ค์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. MS๊ฐ€ ์‹ค์ˆ˜๋ฅผ ์ €์งˆ๋ €๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜๋ ค๋ฉด ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ํ•„์š”ํ• ๊นŒ์š”? ๊ทธ๋“ค์ด ํ† ๋ก ์„ ์žฌ๊ฐœํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ• ๊นŒ์š”? ํ˜„ ์‹œ์ ์—์„œ ๋‹ต์€ "์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๊ด€์ ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ , ์šฐ๋ฆฌ์˜ ๊ฒฐ์ •์ด ์œ ํšจํ•˜๋ฉฐ, ๊ทธ ์ด์œ ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค"์ธ ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ชจ๋‘๊ฐ€ ์กฐ๊ธˆ ์ง„์ •ํ•˜๊ณ  ์ด ์‚ฌ๋žŒ๋“ค ๋’ค์— ํ˜„๋ช…ํ•œ ์‚ฌ๋žŒ๋“ค์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ์ •์„ ๋‚ด๋ ค ์žฅ๊ธฐ์ ์œผ๋กœ ์ตœ๋Œ€์˜ ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์€ ๊ทธ ๋’ค์— ์žˆ๋Š” ์˜๋ฆฌํ•œ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ทธ๋“ค์ด ํ•ญ์ƒ ์˜ณ๊ณ  ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋ฐ”๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์„ ํด๋กœ์ฆˆ ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@shederman "ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•œ ์ƒ˜ํ”Œ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ" ... ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„ค๋ฌธ์กฐ์‚ฌ๊ฐ€ ๊ทธ ์ž์ฒด๋กœ ์žฅ์ ์ด ๋˜๋„๋ก ํ•˜๊ณ  ์ด ์ค„์„ ์ œ๊ฑฐํ•ด ์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค...

์ตœ์ข… ์„ค๋ฌธ ์กฐ์‚ฌ ๊ฒฐ๊ณผ: 95% ์‹ ๋ขฐ๋„์—์„œ ยฑ10%์ธ 9๋ฐฑ๋งŒ .NET ๊ฐœ๋ฐœ์ž ์ธ๊ตฌ์— ๋Œ€ํ•ด 100๊ฐœ์˜ ์‘๋‹ต.

์ •๋ง ๊ณจ์น˜์•„ํ”ˆ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. .NET ๊ฐœ๋ฐœ์ž์˜ 60%๊ฐ€ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ซ์–ดํ•˜๊ฑฐ๋‚˜ ์‹ซ์–ดํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ •ํ™•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ์ƒ˜ํ”Œ์—์„œ๋Š” ํ‘œ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ๋Œ€ํ•ด ํฌ๊ฒŒ ์šฐ๋ คํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

@abcplex : ์˜คํ”ˆ์†Œ์Šค๋ผ๊ณ  ํ•ด์„œ 16๋ช…์ด GitHub์—์„œ ์ด์Šˆ๋ฅผ ์—ด๊ณ  ์Šคํฌ๋ฆผ ์ ํ”„ํ•  ๋•Œ๋งˆ๋‹ค ์ ํ”„ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

@MaximRuiller Standup Notes ๋Š” ๋ณ€๊ฒฝ ๋™๊ธฐ๋ฅผ ์ž˜ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ฝ์—ˆ์„ ๋•Œ ํ˜„์‹ค์€ xproj๊ฐ€ csproj๋กœ ๋Œ€์ฒด๋˜๊ณ  ์žˆ๊ณ  project.json์ด nuget.json์œผ๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€Œ๊ณ  _some_ ํ•ญ๋ชฉ์ด project.json์—์„œ ์˜ฎ๊ฒจ์งˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šคํƒ ๋“œ์—…์—์„œ ๋‚˜์˜จ ์ฝ”๋ฉ˜ํŠธ์—์„œ ์ด๊ฒƒ์€ ๊ฝค ์ตœ๊ทผ์˜ ๊ฒฐ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ฑฐ์˜ ์ฆ‰์‹œ RTM ์ดํ›„๊นŒ์ง€ project.json์ด ์•„๋ฌด ๋ฐ๋„ ๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ๋ณ€๊ฒฝ์ด ๋‹ค์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฌ๊ด„์ ์ด๊ณ  ํˆฌ๋ช…ํ•œ ๊ณผ์ •์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

@darrelmiller ๊ทธ๊ฑด, ๋‹น์‹ ์—๊ฒŒ ๋™์˜ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฝค ํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

์ด์ œ ์‹œ๊ฐ„๋งŒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋งํ•ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋ˆ„๊ตฌ๋ณด๋‹ค ์–ผ๋ฆฌ ์–ด๋‹ตํ„ฐ์—๊ฒŒ ๋” ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

JSON์€ ์ฝ๊ธฐ๊ฐ€ ์ข‹์ง€๋งŒ ๋‹จ์ˆœํ•  ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. </system> ๊ฐ€ ]} ๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ธ ์˜๊ฒฌ์€ XML ๊ณ ์œ ์˜ ์žฅํ™ฉํ•จ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ ๋ฐ ์ข…์†์„ฑ ๊ด€๋ฆฌ์˜ ์–ธ๋กœ๋“œ/๋กœ๋“œ์— ๋Œ€ํ•œ ์ œ ์ƒ๊ฐ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

JSON ๋Œ€ XML์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์ •๋ง ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? IMHO๋Š” ์ •๋ง ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
(๋ฌผ๋ก , ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ XML๋ณด๋‹ค JSON์„ ๋” ์ข‹์•„ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

๋‚ด๊ฐ€ ASP.NET Core์— ๋Œ€ํ•ด ์ •๋ง ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€ Visual Studio ๋ฐ ๊ธฐํƒ€ IDE์—์„œ ๋งค์šฐ ๊ฐœ๋ฐฉ์ ์ด๊ณ  ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ฃผ์–ด์ง„๋‹ค๋ฉด ๋‚˜๋Š” ์ด ๊ฒฐ์ •์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์ด "๋’ค๋กœ๊ฐ€๋Š” ๋‹จ๊ณ„"๋ผ๊ณ  ๋งํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์€ "csproj"๋กœ ๋Œ์•„๊ฐ€์ง€๋งŒ ๋ช‡ ๋…„ ๋™์•ˆ ์‚ฌ์šฉํ–ˆ๋˜ csproj ํŒŒ์ผ๊ณผ _๋™์ผํ•˜์ง€_ ์•Š์„ ๊ฒƒ์ž„์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ํ•˜๋‚˜๋Š” "์ƒˆ" csproj ํ˜•์‹ ์˜ ํŒŒ์ผ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ถ„๋ช…ํžˆ ๋ฐํ˜”์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด project.json ํ˜•์‹์„ ์ข‹์•„ํ•˜๋Š” ์ฃผ๋œ ์ด์ ์ด์ž ์ฃผ๋œ ์ด์œ ๋Š” ์ด ํŒŒ์ผ ๋ชฉ๋ก์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์ฆ‰๊ฐ์ ์ธ ์ฐจ์ด์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ xproj๋ฅผ ์‚ดํŽด๋ณด๋ฉด "์ƒˆ๋กœ์šด" csproj์—์„œ ๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋Œ€๋žต ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์กฐ๊ธˆ ๋” ์ปค์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ project.json์—์„œ ๊ฐ€์ ธ์˜จ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์†์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ํ† ๋ก ์€ "MSBuild๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€"๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒˆ csproj์—์„œ ๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ๊ณผ .json ํŒŒ์ผ์— ๋‚จ๊ธฐ๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ง์ ‘ ํŽธ์ง‘ํ•˜๊ณ  project.json ์ „์— ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. Msbuild๋Š” ๋ถ€์กฑ ์ง€์‹์— ๊ด€ํ•œ ๊ฒƒ์ด๋ฉฐ ๊ทธ๊ฒƒ์„ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ๊ฐ€ ์กฐ๊ธˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ".net 4.5์—์„œ .net ์ฝ”์–ด๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ๊ฒƒ"์ด๋ผ๋Š” ๋ง์€ ๋‹ค์†Œ ์ •์งํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๊ณจ์นซ๊ฑฐ๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค...

๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜๋…„๊ฐ„ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ csproj ํŒŒ์ผ๊ณผ ๊ฐ™์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

XML์ด ๋ ๊นŒ์š”? ๋„ค, ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด project.json ํ˜•์‹์„ ์ข‹์•„ํ•˜๋Š” ์ฃผ๋œ ์ด์ ์ด์ž ์ฃผ๋œ ์ด์œ ๋Š” ์ด ํŒŒ์ผ ๋ชฉ๋ก์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์ •๋ณด์— ๊ทผ๊ฑฐํ•˜์—ฌ ์ด๊ฒƒ์„ ๋งํ•˜๋Š”๊ฐ€? ๋‚ด ๋ง์€, ํŒŒ์ผ ๋ชฉ๋ก์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ด์ง€๋งŒ ๊ฒฐ์ฝ” ์ €์—๊ฒŒ๋งŒ ์œ ์ผํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์˜ค๋Š˜ xproj๋ฅผ ์‚ดํŽด๋ณด๋ฉด "์ƒˆ๋กœ์šด" csproj์—์„œ ๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋Œ€๋žต ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ xproj๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ ๊ฒƒ์ด ํ•„์š”ํ• ๊นŒ์š”?

์‹ค์ œ ํ† ๋ก ์€ "MSBuild๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€"์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

ํ† ๋ก ์ด _ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š”_ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ„ฐํ•‘ MSBuild๋Š” .NET Core ์ฑ„ํƒ์˜ ์ฃผ์š” ์žฅ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด (๋ถ„๋ช…ํžˆ) ๋น„๊ณผํ•™์ , ๋ฐ˜ํ–ฅ์‹ค, ํŽธํ–ฅ๋œ ์„ค๋ฌธ์กฐ์‚ฌ์— ๋Œ€ํ•œ ์‘๋‹ต์ž์˜ 20%๋Š” ์ด๊ฒƒ์ด ๊ทผ๋ณธ์ ์œผ๋กœ ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@shederman ๊ท€ํ•˜์˜ ์‘๋‹ต์€ ์ œ๊ฐ€ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์œ ๋…ํ•œ ํ† ๋ก ์ž…๋‹ˆ๋‹ค. "MSBuild๊ฐ€ ๋‚˜์˜๋‹ค!"์™€ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์ฃผ์žฅ์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ฑด์„ค์ ์ธ ํ† ๋ก ์„ ํ†ตํ•ด ์ด๋ฅผ ๋’ท๋ฐ›์นจํ•˜๊ณ  ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

XML์ด ๋ ๊นŒ์š”? ๋„ค, ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ. ๊ทธ๋ฆฌ๊ณ ? ๋ฌธ์ œ๊ฐ€ _XML_์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. JSON์ด XML๋ณด๋‹ค ์šฐ์ˆ˜ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๊ทธ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  _project ๊ตฌ์กฐ_์™€ ๊ตฌ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ XML๊ณผ JSON์€ ๋ชจ๋‘ ์„ธ๊ณ„์—์„œ ๊ฐ์ž์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์ฐจ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‘˜ ๋‹ค์— ๋šœ๋ ทํ•œ ์žฅ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ ์–ด๋Š ๊ฒƒ์ด ๋” ๋‚˜์€์ง€์— ๋Œ€ํ•œ ๊ฒฐ์ •์ ์ธ "์ •๋‹ต"์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚ด๊ฐ€ ๋‹น์‹ ์ด๋ผ๋ฉด _ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ_์˜ ์ฐจ์ด์ ์ด ์ด๋™์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š”์ง€์— ์ง‘์ค‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์ •๋ณด์— ๊ทผ๊ฑฐํ•˜์—ฌ ์ด๊ฒƒ์„ ๋งํ•˜๋Š”๊ฐ€? ๋‚ด ๋ง์€, ํŒŒ์ผ ๋ชฉ๋ก์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ด์ง€๋งŒ ๊ฒฐ์ฝ” ์ €์—๊ฒŒ๋งŒ ์œ ์ผํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์œ ์ผํ•œ ์ด์ ์ด๋ผ๊ณ  ์ฃผ์žฅํ•œ ์ ์ด ์—†์œผ๋ฉฐ ๋‹จ์ˆœํžˆ ๊ทธ๊ฒƒ์ด _main_ ์ด์ ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐœ์›” ์ „ project.json ํ˜•์‹์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์‚ดํŽด๋ณด๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์žฅ ๋จผ์ € ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ž‘๊ณ  ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. JSON์ด ๊ตฌ๋ฌธ์ ์œผ๋กœ ๋” ๊น”๋”ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋ณ‘ํ•ฉ์ด ์ž˜๋˜๊ณ  ํŒŒ์ผ ์ฐธ์กฐ๊ฐ€ ๋งŽ์ด ๋‚˜์—ด๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ๋ณ‘ํ•ฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ xproj๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ ๊ฒƒ์ด ํ•„์š”ํ• ๊นŒ์š”?

์ด ์ „์ฒด ํ† ๋ก ์€ ์ตœ์‹  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ํ˜•์‹์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ํ™˜๊ฒฝ์„ ๋น„๊ตํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ ์ •๋ณด๊ฐ€ ์—†๋Š” ์˜๊ฒฌ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ ๊ทธ๊ฒƒ์ด ํ† ๋ก ์ด ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š”๊ฐ€? ํ„ฐํ•‘ MSBuild๋Š” .NET Core ์ฑ„ํƒ์˜ ์ฃผ์š” ์žฅ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด (๋ถ„๋ช…ํžˆ) ๋น„๊ณผํ•™์ , ๋ฐ˜ํ–ฅ์‹ค, ํŽธํ–ฅ๋œ ์„ค๋ฌธ์กฐ์‚ฌ์— ๋Œ€ํ•œ ์‘๋‹ต์ž์˜ 20%๋Š” ์ด๊ฒƒ์ด ๊ทผ๋ณธ์ ์œผ๋กœ ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ _MSBuild_์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— Visual Studio๊ฐ€ ์—ญ์‚ฌ์ ์œผ๋กœ MSBuild ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MSBuild๋Š” ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋‹จ์ผ ํŒŒ์ผ์„ ๋‚˜์—ดํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ์ด๋ฏธ ํ•„์š”ํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋” ์ค‘์š”ํ•œ ๊ฒƒ์€, ์ง€๊ธˆ๊นŒ์ง€ ์ด ํ† ๋ก ์—์„œ ๋‹น์‹ ์ด ํ•œ ์ผ์€ XML์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค๊ณ  ์†Œ๋ฆฌ์น˜๊ณ  ์™ธ์น˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ธ€์Ž„", ์ง€๊ธˆ์€ ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ผ๋ฐ˜์ ์œผ๋กœ "์ด์ „" csproj์— ๋‚˜์—ด๋œ ํŒŒ์ผ ์ˆ˜๋กœ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. xproj ํ˜•์‹์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ๊ท€์ฐฎ๋‹ค๋ฉด ๋งค์šฐ ์ž‘์€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ฉฐ Daniel์€ ์Šคํƒ ๋“œ์—… ๋™์•ˆ "์ƒˆ๋กœ์šด" csproj ํ˜•์‹์ด ํ˜„์žฌ project.json ํŒŒ์ผ๊ณผ ํฌ๊ธฐ๊ฐ€ ๊ฑฐ์˜ ๊ฐ™์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ? ๋‹น์‹ ์€ ๋Œ€๋‹ดํ•œ ์ฃผ์žฅ์„ ํŽผ์น˜์ง€๋งŒ ์ „ํ˜€ ๋’ท๋ฐ›์นจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@neoKushan ์ •๋‹นํ•œ ์ด์œ  ์—†์ด Microsoft๋ฅผ ๋ฐฉ์–ดํ•จ์œผ๋กœ์จ ๊ณง Microsoft๋กœ๋ถ€ํ„ฐ ์ผ์ข…์˜ ์ƒ์„ ๋ฐ›๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐฑ๋„์–ด์—์„œ ๋‚ด๋ฆฌ๋Š” ์ตœ์•…์˜ ๊ฒฐ์ •์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ซ์Šต๋‹ˆ๋‹ค. asp net์„ ๋‹ค์‹œ ์†Œ์Šค๋ฅผ ๋‹ซ๊ณ  Microsoft์™€ ๊ฐ™์€ ์ง€์ง€์ž๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ฌป์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ๊ฒƒ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@abcplex ์š•ํ•˜๊ณ  ์†๊ฐ€๋ฝ์งˆ ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋Œ€ํ™”์— ๊ธฐ์—ฌํ• 

์ง€๊ธˆ๊นŒ์ง€ ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋‹จ ํ•œ ๊ฐ€์ง€ ์ด์œ ๋„ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋ถˆํ‰๋งŒ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@neoKushan ๊ฐ€์žฅ ํฐ ํฌ์ธํŠธ๋Š” RTM์œผ๋กœ ํ•œ ๋‹ฌ ์ „์— ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ณ€ํ™”๋ฅผ ์œ„ํ•œ ์‹œ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๊ฐ„์— ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@abcplex RTM์—์„œ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. RTM ์ดํ›„์— ์ ์ง„์ ์œผ๋กœ

JSON ๋Œ€ XML(Standup Blog Post์—์„œ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ XAML๊ณผ ๋น„๊ต)์€ ์ด์ „ ๋„๊ตฌ์™€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๊ฐ–๋Š” ์žฅ์ ์—์„œ ์ฃผ์˜๋ฅผ ์‚ฐ๋งŒํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋งค์šฐ ์ž˜๋ชป๋œ ์‚ฌ๊ณ ๋ฐฉ์‹์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ข‹๋“  ์‹ซ๋“  csproj์™€ MSBuild๋Š” ๋„๊ตฌ ์ฒด์ธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋Œ€์‹  ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์‹œํ•˜๋Š” ant์˜ ์ „ํ†ต์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ๋งค์šฐ ๋‹ค๋ฅด์ง€๋งŒ ์ด ์œ ์‚ฐ์€ ํ”„๋กœ์ ํŠธ์— "์ •์˜" ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์— ๋…ผ๋ฆฌ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ์€ ์ผ์„ ์—„์ฒญ๋‚˜๊ฒŒ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ์ „ ์„ธ๊ณ„์—์„œ๋Š” "๋งจ ์•„๋ž˜์— ์žˆ์–ด์•ผ ํ•จ"์ด ์œ„๋กœ ์ด๋™ํ–ˆ๊ฑฐ๋‚˜ ๋ˆ„๊ตฐ๊ฐ€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค์–ด ๊ฐ‘์ž๊ธฐ ์ž˜๋ชป๋œ .targets ํŒŒ์ผ์„ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ๊นจ์ง„ ๊ฒƒ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์„ ์–ธ์  ๊ตฌ๋ฌธ์—์„œ First-Level ์š”์†Œ(root-of-root)๊ฐ€ ์ˆœ์„œ ์ข…์†์ ์ด๋ผ๋Š” ๋ฐ”๋กœ ๊ทธ ๊ฐœ๋…์€ ์™„์ „ํžˆ ๊นจ์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด MSBuild์™€ csproj์˜ ๋•…์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ์œ ์‚ฐ์ž…๋‹ˆ๋‹ค. ์ด์ œ csproj๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด "์‹คํ–‰"ํ•˜๊ณ  MSBuild์™€ ๋˜‘๊ฐ™์ด ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, MSBuild๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋‹จ์ผ ๊ฐ•์ œ ์ข…์†์„ฑ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์–ด๋”˜๊ฐ€์— ์žˆ๋Š” ๋งค์ง ํƒ€๊ฒŸ ํŒŒ์ผ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—๋Š” ํŠน์ • ์ƒ์ ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๋„๊ตฌ ์ฒด์ธ์˜ ๋ชจ์–‘์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ".net 4.5์—์„œ .net ์ฝ”์–ด๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ๊ฒƒ"์ด๋ผ๋Š” ๋ง์€ ๋‹ค์†Œ ์ •์งํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๊ณจ์นซ๊ฑฐ๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค...

100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋‹น๋ฉดํ•œ ๊ณผ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ถ„๋ช…ํžˆ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์žˆ์–ด ์œ ์ผํ•œ ์–ด๋ ค์›€์€ ํŠน์ • .NET ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์†์‹ค(System.Drawing ์ฐธ์กฐ), .NET ์ฝ”์–ด ์ง€์›์— ๋Œ€ํ•œ Microsoft ํŒ€์˜ ๊ณผ๋ฌตํ•จ์ด์—ˆ์Šต๋‹ˆ๋‹ค. (DocumentDB๋ฅผ ๋ณด๊ณ  ์žˆ์Œ) ๋ฐ ์ฃผ์š” ๋ฒ„์ „ ๊ฐ„์— ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ.

์–ด๋Š ์‹œ์ ์—์„œ๋„ project.json ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ๊ฒŒ ์žฅ์ ์ด์—ˆ๋‹ค. Ctrl+Shift+B๋ฅผ ํ•  ๋•Œ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋ฐœ์ƒํ•˜๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ์„ธ๋ถ€ ์‚ฌํ•ญ์— MSBuild๋ฅผ ๋คํ”„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@neoKushan

  1. ๋‚˜๋Š” XML์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฐ ๊ตฌ์„ฑ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ ํ˜•์‹์ž…๋‹ˆ๋‹ค. "๋ชจ๋“  ๊ฒƒ์„ ์œ„ํ•œ XML" ๋‹จ๊ณ„์—์„œ ๋„์ž…๋˜์—ˆ์„ ๋•Œ ๊ทธ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ด์—ˆ๊ณ  ์ง€๊ธˆ์€ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.
  2. JSON ํŒŒ์ผ์ด XML ํŒŒ์ผ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ž˜ ๋ณ‘ํ•ฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ œ ์˜๊ฒฌ์ž„์„ ์ธ์ •ํ•˜์ง€๋งŒ ์ œ ๊ฒฝํ—˜์— ๊ทผ๊ฑฐํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. xproj ํŒŒ์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” vscode๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. _๊ทธ_๋Š” ๋‚˜์˜ ํ˜„์žฌ ํ’๊ฒฝ์ด๊ณ  ๋‚˜์—๊ฒŒ ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†๋Š” xproj ํŒŒ์ผ์„ ์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. ์•„๋‹ˆ์š”, ์ €๋Š” MSBuild์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MSBuild ๋ฐ Team Build๋กœ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฒฐ์ฝ” ์žฌ๋ฏธ ์—†์—ˆ๊ณ  ๊ฒฐ์ฝ” ์‰ฝ์ง€
  5. MSBuild๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…๋„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋Œ€์•ˆ์„ ์‚ดํŽด๋ณด๊ณ  MSBuild์— ์˜ํ•ด ๊นœ๋ฐ•์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํŠนํžˆ gulp์™€ sbt๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณด์‹ญ์‹œ์˜ค.

@shederman

๋‚˜๋Š” XML์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฐ ๊ตฌ์„ฑ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ ํ˜•์‹์ž…๋‹ˆ๋‹ค. "๋ชจ๋“  ๊ฒƒ์„ ์œ„ํ•œ XML" ๋‹จ๊ณ„์—์„œ ๋„์ž…๋˜์—ˆ์„ ๋•Œ ๊ทธ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ด์—ˆ๊ณ  ์ง€๊ธˆ์€ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ทธ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์ธ _์ด์œ _๋ฅผ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

JSON ํŒŒ์ผ์ด XML ํŒŒ์ผ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ž˜ ๋ณ‘ํ•ฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ œ ์˜๊ฒฌ์ž„์„ ์ธ์ •ํ•˜์ง€๋งŒ ์ œ ๊ฒฝํ—˜์— ๊ทผ๊ฑฐํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•…๋ชฝ .json ๋ณ‘ํ•ฉ๊ณผ ์•…๋ชฝ .xml ๋ณ‘ํ•ฉ์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ์— ๊ด€ํ•ด์„œ๋Š” ํŠน๋ณ„ํžˆ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ํ˜•์‹์— ๊ด€๊ณ„์—†์ด ํŒŒ์ผ์˜ _size_์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ณ‘ํ•ฉ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

xproj ํŒŒ์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” vscode๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚˜์˜ ํ˜„์žฌ ํ’๊ฒฝ์ด๊ณ  ๋‚˜์—๊ฒŒ ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†๋Š” xproj ํŒŒ์ผ์„ ์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ ํ•ด์„œ ํ˜„์žฌ xproj ํŒŒ์ผ ์„๋ณด๊ณ  ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด ์†๊ฐ€๋ฝ์„ ๊ท€์— ๋Œ€๊ณ  ๋ˆˆ์„ ๊ฐ๊ณ  "๋ผ๋ผ๋ผ"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํ–‰์œ„๋ฅผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์‹œ ๋งํ•ด, ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ํ™”๋ฅผ ๋‚ด๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์‹ ์Œํ•˜๋ฉฐ ์•„๋ฌด ๊ฒƒ๋„ ์„ฑ์ทจํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์‹ค์ œ ๋Œ€ํ™”์— ์ฐธ์—ฌํ•˜์—ฌ ์ด๊ฒƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ง€์‹œํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„์ง ๊ฒฐ์ •๋˜์ง€ ์•Š์€ ํ•œ ๊ฐ€์ง€๋Š” nuget ์ข…์†์„ฑ์ด csproj์˜ ์ผ๋ถ€๊ฐ€ ๋  ๊ฒƒ์ธ์ง€ ๋˜๋Š” nuget.json์ด ๋  ๊ฒƒ์ธ์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๊ฑฐ๊ธฐ์— ๊ธฐ๋ณธ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. .json ํŒŒ์ผ์— ์ข…์†์„ฑ ๋ชฉ๋ก์ด ์žˆ์œผ๋ฉด csproj์— ๋ฌด์—‡์ด ๋‚จ์Šต๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๊นŒ? _๊ทธ๊ฒƒ์€_ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šธ๊นŒ์š”?

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

์•„๋‹ˆ์š”, ์ €๋Š” MSBuild์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MSBuild ๋ฐ Team Build๋กœ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฒฐ์ฝ” ์žฌ๋ฏธ ์—†์—ˆ๊ณ  ๊ฒฐ์ฝ” ์‰ฝ์ง€ ์•Š์•˜์œผ๋ฉฐ ํ•ญ์ƒ ์ง„ํ™ํƒ•์—์„œ ๋ผ์ง€์™€ ์”จ๋ฆ„์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” MSBuild๋ฅผ ์‹ซ์–ดํ•˜๋ฉฐ ํ˜ผ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

TFS์˜ XAML ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ์ •์˜๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ์–ด๋„ ์ด ํ•ญ๋ชฉ(์ผ๋ถ€)์— ๋Œ€ํ•ด์„œ๋Š” ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MSBuild๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…๋„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋Œ€์•ˆ์„ ์‚ดํŽด๋ณด๊ณ  MSBuild์— ์˜ํ•ด ๊นœ๋ฐ•์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํŠนํžˆ gulp์™€ sbt๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณด์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์œ ๋ชจ์ฐจ์—์„œ ์žฅ๋‚œ๊ฐ์„ ๋˜์ง€์ง€ ๋ง๊ณ  "์ƒˆ๋กœ์šด" ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๊ฐ€ _์‹ค์ œ๋กœ_ ์–ด๋–ค ๋ชจ์Šต์ด์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํ† ๋ก ์— ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฏธ๋ž˜๋ฅผ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ทธ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์œผ๋ฉด ํ•ฉ๋‹ˆ๊นŒ?

XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฏธ๋ž˜๋ฅผ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค.

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

์–ด๋•Œ์š”:

var gulp = require('gulp')
, minifyCss = require("gulp-minify-css");

gulp.task('minify-css', function () {
    gulp.src('./Css/one.css') // path to your file
    .pipe(minifyCss())
    .pipe(gulp.dest('path/to/destination'));
});

์•„๋‹ˆ๋ฉด ์–ด์ฉŒ๋ฉด

organization := "com.devdaily"

name := "ScalatraTest1"

version := "0.1.0-SNAPSHOT"

scalaVersion := "2.9.1"

seq(webSettings :_*)

libraryDependencies ++= Seq(
  "org.scalatra" %% "scalatra" % "2.0.4",
  "org.scalatra" %% "scalatra-scalate" % "2.0.4",
  "org.scalatra" %% "scalatra-specs2" % "2.0.4" % "test",
  "ch.qos.logback" % "logback-classic" % "1.0.0" % "runtime",
  "org.eclipse.jetty" % "jetty-webapp" % "7.6.0.v20120127" % "container",
  "javax.servlet" % "servlet-api" % "2.5" % "provided",
  "com.mongodb.casbah" %% "casbah" % "2.1.5-1"
)

resolvers += "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

์˜ค, ๊ทธ๋ž˜, ๋‹น์‹ ์ด์— ์—ฐ๊ฒฐํ•˜๋Š” xproj ํ›จ์”ฌ ๋” ๊ทธ๋ ‡๋‹ค. ๋ฉ‹์ง€๊ณ  ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ‘œํ˜„๋ ฅ, ํ‘œํ˜„๋ ฅ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ๊ทธ ProjectGuid๋Š” ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๋„๊ตฌ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๋Š” 90์ž๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  DnxInvisibleContent? ๋‚ด ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์•Œ๋ฉด ์œ ์šฉํ•œ๊ฐ€์š”? ๋‚ด๊ฐ€ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” IDE์— ์–ด๋–ค ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์œ ๋ชจ์ฐจ์—์„œ ์žฅ๋‚œ๊ฐ์„ ๋˜์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :-)

์•„๋‹ˆ, ๋๋‚ฌ์–ด. Immo์™€ ๊ธด ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆด๊ณ  ์ด ์ „ํˆฌ๋ฅผ ๋๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์€ ๋ถ€๋ถ„์ ์ธ ๊ฒฌํ•ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ž์‹ ์˜ ๋ฐฉ์‹์ด ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์™„๋ฒฝํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ํ„ฐ๋ฌด๋‹ˆ์—†๋Š” ๊ฐœ๋…์„ ๋“ฃ๊ณ  ์‹ถ์–ดํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†์Šต๋‹ˆ๋‹ค.

[์š•์„ค์„ ์ œ๊ฑฐํ•˜๋„๋ก ์ˆ˜์ •๋จ]

@shederman : ์—ฌ๊ธฐ์— ๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ •์˜๋กœ ๋นŒ๋“œ ์ •์˜์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ๊ณผ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•  ํ”„๋กœ์ ํŠธ/์•„ํ‹ฐํŒฉํŠธ์— ๋Œ€ํ•œ ์ •์  ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ •์˜ํ•  ๊ณต๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘˜์„ ๋ณ‘ํ•ฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ MSBuild ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ฃผ์š” ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ƒ์„ฑํ•  ์•„ํ‹ฐํŒฉํŠธ, ์‚ฌ์šฉํ•  ์ข…์†์„ฑ ๋ฐ ๋„๊ตฌ ์ฒด์ธ, ๋””์Šคํฌ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‹ค์–‘ํ•œ ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ”๋กœ ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค. ๊ฟ€๊บฝ๊ฟ€๊บฝ, babel ๋˜๋Š” what-have-you๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ project.json์ด ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค์ •๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋ช…๋ น์„ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ํŒฌ์ด ์•„๋‹ˆ์—ˆ์ง€๋งŒ)

๋„ค, ์ดํ•ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ project.json์— ๋Œ€ํ•ด ์ข‹์•„ํ–ˆ๋˜ ๊ฒƒ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ "์–ด๋–ป๊ฒŒ"๊ฐ€ ์•„๋‹ˆ๋ผ "๋ฌด์—‡"์„ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒƒ์„ ๋„ฃ์œผ๋ฉด ํŒŒ์ผ์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ํŠนํžˆ IDE๊ฐ€ ์–ด๋ฆฌ์„์€ ๊ฒฝ์šฐ์—๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‚ด์šฉ์€ ํŽธ์ง‘์ž์™€ ๊ฐ„๋‹จํ•œ IDE์— ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

VS Code์™€ ๊ฐ™์€ ๋‚ฎ์€ ํ–‰์‚ฌ UI์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์ด ๋ณ„๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œํ•ด์•ผ ํ•  ๋‚ด์šฉ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•˜๋Š” ์„ ์–ธ์ ์ธ ๋ถ€๋ถ„์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋งํ•˜๋ฉด์„œ ์ผ๋ถ€๋Š” ํ•„์ˆ˜์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, MSBuilds์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. project.json์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒƒ๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ MSBuild๋ฅผ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์„ ๋œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ฃผ์„ธ์š”. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณด์ง€ ์•Š๋Š”๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๋ณด์—ฌ์ฃผ์„ธ์š”.

@shederman ์Šคํƒ ๋“œ์—… ๋…ธํŠธ์—๋Š” ํ”„๋กœ์ ํŠธ ๊ฐ„์— ์†Œ์Šค ํŒŒ์ผ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ... ์ด๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ด๊ณ  Microsoft๊ฐ€ "์กด์žฌํ•˜๋Š” ํž˜"์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋ฉด - ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋ฌด์ง€ํ•œ ์งˆ๋ฌธ์„ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค - ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„ .NET Core๊ฐ€ MSBuild์˜ ๋Œ€์•ˆ์œผ๋กœ project.json์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก /effort/energy๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ถฉ๋ถ„ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์—ฌํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด MS๊ฐ€ ์ด ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฅผ ์ˆ˜๋ฝํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜คํ”ˆ ์†Œ์Šค์˜ ์•„๋ฆ„๋‹ค์›€(๊ทธ๋ฆฌ๊ณ  ๋ชฐ๋ฝ)์˜ ์ผ๋ถ€๋Š” ๊ธฐ๋ณธ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋„ˆ๋ฌด ๋งŽ์ด ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ๋ถ„๊ธฐํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์ธ ์ฝ”๋“œ์˜ ์š”์  ์ค‘ ์ผ๋ถ€๋Š” ๋‹จ์ˆœํžˆ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ˆ˜์ •ํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๋Š” ํ–ฅํ›„ ๊ณ„ํš์— ๊ด€ํ•œ ๊ฒƒ์ด๋ผ๋Š” ์ ์—์„œ Xamarin๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ๊ทผ์˜ ์Šคํƒ ๋“œ์—…์—์„œ ์ฝ˜์†” ์•ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฅ˜ ์‹œ๋ฏผ์ด ๋˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์„ ๋“ค์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ์ƒˆ๋กœ์šด .NET(ASP.NET 5 + DNX)์€ ์›น ์•ฑ ๊ตฌ์ถ•์— ์ค‘์ ์„ ๋‘์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋น„๊ต์  ์ตœ๊ทผ์— ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ .NET ๋ฐ ASP.NET ํŒ€์ด ๋ณ‘ํ•ฉ๋˜์—ˆ์œผ๋ฉฐ Xamarin๋„ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ์‹œ๋‚˜๋ฆฌ์˜ค(๋ฐ ์—ฌ๊ธฐ์—์„œ ์ถ”์ธกํ•˜์ง€ ์•Š์„ ์ƒˆ๋กœ์šด ๋ฏธ๋ž˜ ์‹œ๋‚˜๋ฆฌ์˜ค)๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋‚˜์€ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๊ณ  .NET Core๋„ ๊ณง ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ํ• ๊นŒ์š”? ํ•„์š”ํ•œ ๊ฒƒ์„ ์ด๋ฏธ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์กด MSBuild๋ฅผ ์™„์ „ํžˆ ๋ฌด์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋ฏธ์•ˆํ•˜์ง€๋งŒ, ๋‚˜๋Š” ๋‚ด๊ฐ€ ์„ ํƒํ•  ๊ธธ์„ ์•Œ๊ณ  ์žˆ๋‹ค.

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

๊ทธ๋ƒฅ ๋‚ด ์˜๊ฒฌ

๋ณ‘ํ•ฉ ๋ฌธ์ œ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. MSBuild์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ฏธ์นœ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๋Š” ์ด์ œ MSBuild๋ฅผ Linux ๋ฐ OSX๋กœ ์ด์‹ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ๋“ค์ผ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ƒ์ƒ ํ•ด๋ด.

๋‚˜๋Š” ๊ทธ๋“ค์˜ ์ด์œ ๋ฅผ ์•Œ์ง€๋งŒ ๊ทธ๋“ค์˜ ์ด์œ ๋Š” ๋‚˜์—๊ฒŒ ์ „ํ˜€ ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์ด ๊ฐ€๊ณ  ์žˆ๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ํ™•๊ณ ํ•œ ํ™•์‹ ์„ ๋ฐ”ํƒ•์œผ๋กœ ํˆฌ์ž๋ฅผ ํ–ˆ๊ณ , ๊ทธ๋“ค์€ ์•„๋ฌด๋Ÿฐ ์ฑ…์ž„ ์—†์ด ๋‹ค์‹œ ํˆฌ์ž์— ์ฐฉ์ˆ˜ํ–ˆ์œผ๋ฉฐ, ์•„๋งˆ๋„ ๊ทธ๋“ค์ด ๋” ๋‚˜์€ ๊ฒฐ์ •์„ _์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜_ํ–ˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ํ‘œ์‹œ์— ๋ถˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ MSBuild๊ฐ€ ์ง€์›ํ•˜๋Š” ์—ฃ์ง€ ์ผ€์ด์Šค์™€ ์ด๋Ÿฌํ•œ ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ project.json์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„, ๊ทธ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ์ƒ๊ฐ์œผ๋กœ ์•„๋ฌด๋„ ๊ทธ ๋ชจ๋“  ๊ทน๋‹จ์  ์ธ ๊ฒฝ์šฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ _์ ˆ๋Œ€_ ์ค‘๋‹จํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ASP.NET ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ด๋Ÿฌํ•œ ์—ฃ์ง€ ์ผ€์ด์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ, ์šฐ๋ฆฌ๊ฐ€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  project.json ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๋ถ„๊ธฐํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ(FAKE?)์œผ๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๋นจ์•„ ๋จน๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋ชจ๋“  ์„ ํƒ์„ ์—ด๊ฑฐํ–ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

@shederman MSBuild๋Š” 2015๋…„ ์ดˆ๋ถ€ํ„ฐ ์˜คํ”ˆ ์†Œ์Šค์˜€์œผ๋ฉฐ ๋นŒ๋“œ๋Š” OSX/Ubuntu์—์„œ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์ด์‹ํ•  ์ƒ๊ฐ๋งŒํผ ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(https://github.com/Microsoft/msbuild). , ์˜ˆ๋ฅผ ๋“ค์–ด OSX๊ฐ€ 3์›”์— OK๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ _ํ•ด์•ผ_ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋– ๋‚˜์„œ ๊ทธ๊ฒƒ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค...

๋งˆ์น˜ ํ”„๋ž‘์ผ„์Šˆํƒ€์ธ ๊ดด๋ฌผ์ด ๋ฉ€๋ฆฌ์„œ ๋Œ์ง„ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ณ , ํฅ๋ฏธ๋กญ๊ณ , ๊ฑฑ์ •๋˜๊ณ , ์กฐ๊ธˆ ๋” ํ˜์˜ค์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค :-)

@darrelmiller ์Šคํƒ ๋“œ์—… ๋…ธํŠธ๋Š” ํ”„๋กœ์ ํŠธ ๊ฐ„์— ์†Œ์Šค ํŒŒ์ผ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

์ง„์งœ? ์‚ฌ๋žŒ๋“ค์ด ์•„์ง๋„ ๊ทธ๋ ‡๊ฒŒ ํ•ด์š”? ๋‚ด ๋ง์€ AssemblyInfo.cs์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ–ˆ๊ณ  ์•”ํ‘ ์‹œ๋Œ€๋กœ ๋Œ์•„๊ฐ€์„œ ๊ฐ•๋ ฅํ•œ ์ด๋ฆ„ ํ‚ค๋ฅผ ๊ณต์œ  ์†Œ์Šค ํŒŒ์ผ์— ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๊ทธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ด์ง€๋งŒ, ์ง€๊ธˆ์€ ์ •๋ง๋กœ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•˜๋‹ค.

@shederman

์Œ. ์ข‹์•„, ๊ทธ๋Ÿผ ๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ๋ฏธ๋ž˜๋ฅผ ์ƒ์ƒํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์Œ, ๋‚œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์•„

๋‹น์‹ ์ด ํ•ด์•ผ ํ•  ์ผ์€ JSON ๋Œ€์‹  XML์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ๋ณด๊ธฐ ์œ„ํ•ด ๊ทธ ๊ฒŒ์ž„์„ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‹น์‹ ์ด ํ•˜๊ณ  ์‹ถ์€ ์ผ์€ ์‹ค์ œ๋กœ ์ด์œ ๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ณ  XML์ด ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ํ•ด์•ผํ•˜๋Š”์ง€ ๊ฑฑ์ •ํ•˜๊ณ  ๊ทธ๋“ค์€ ๊ฐ€์„œ ๊ทธ๊ฒƒ์„ํ–ˆ์Šต๋‹ˆ๋‹ค ...

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

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

์˜ค ์˜ˆ, ์—ฐ๊ฒฐํ•œ xproj๊ฐ€ ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฉ‹์ง€๊ณ  ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ‘œํ˜„๋ ฅ, ํ‘œํ˜„๋ ฅ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.

์ ์–ด๋„ ๋‹น์‹ ์€ ๋งˆ์นจ๋‚ด ๊ทธ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ท€์ฐฎ๊ฒŒํ•˜๊ธฐ ์ „์—์ด ๋ฌธ์ œ์— 72 ๊ฐœ์˜ ๋Œ“๊ธ€์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ๋งํ•˜์ง€๋งŒ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MSBuild๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋”์ฐํ•œ์ง€์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๋Œ€์‹ , ์™œ ๋”์ฐํ•œ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ

๋ณ‘ํ•ฉ ๋ฌธ์ œ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. MSBuild์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์™œ ๋ฌธ์ œ์ผ๊นŒ์š”? ๋‹น์‹ ์€ MSBuild๋ฅผ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ XML์„ _๊ฐํžˆ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ œ์™ธํ•˜๊ณ  MSBuild์— ๋Œ€ํ•ด ๋‹น์‹ ์ด ์‹ซ์–ดํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ฏธ์นœ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๋Š” ์ด์ œ MSBuild๋ฅผ Linux ๋ฐ OSX๋กœ ์ด์‹ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ๋“ค์ผ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ƒ์ƒ ํ•ด๋ด.

๋„ค๊ฐ€ ์˜ณ์•„! ์›ํ•˜๋Š” IDE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ”Œ๋žซํผ์—์„œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ .net ์•ฑ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋”์ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ด๋“ค์„ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค!
Microsoft๊ฐ€ ์ž์‹ ์˜ ํ์‡„ ์†Œ์Šค ๊ธฐ์ˆ ์— ํˆฌ์žํ•˜๋Š” ๋Œ€์‹  ์ž‘์—…์„ ์˜คํ”ˆ ์†Œ์‹ฑํ•˜๊ณ  ๋„๊ตฌ๋ฅผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ์ด์‹ํ•˜๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ์‹œ๊ฐ„์„ ํ• ์• ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๋“ค์˜ ์ด์œ ๋ฅผ ์•Œ์ง€๋งŒ ๊ทธ๋“ค์˜ ์ด์œ ๋Š” ๋‚˜์—๊ฒŒ ์ „ํ˜€ ํšจ๊ณผ๊ฐ€ ์—†์œผ๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋‹น์‹ ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

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

์–ด๋–ค _๋ฐฉํ–ฅ_์„ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”? ๋ชฉํ‘œ๋Š” ํ•ญ์ƒ ๋ชจ๋“  ๊ณณ์—์„œ .net์ด์—ˆ์œผ๋ฉฐ "๋ชจ๋“  ๊ฐœ๋ฐœ์ž, ๋ชจ๋“  ์•ฑ, ๋ชจ๋“  ํ”Œ๋žซํผ"์ด ์˜ค๋Š˜์˜ ๋งŒํŠธ๋ผ์ด๋ฉฐ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ž‘๊ณ  ๋‹จ์ˆœํ•˜๋ฉฐ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  IDE ์—†์ด ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋ผ๊ณ  ๋ถ„๋ช…ํžˆ ๋ฐํ˜”์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์—๊ฒŒ์„œ ๋นผ์•—๊ธด ๊ฒƒ์€ ์•„๋ฌด๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. .net์ด ๋ชจ๋ฐ”์ผ, ํด๋ผ์šฐ๋“œ ๋ฐ ์›น์„ ์œ„ํ•œ ์ผ๋ฅ˜ ๊ฒฝํ—˜์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ์•ฝ๊ฐ„์˜ XML์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ MSBuild๊ฐ€ ์ง€์›ํ•˜๋Š” ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ project.json์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ _edge_ ๊ฒฝ์šฐ๋ฅผ ํ›จ์”ฌ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. project.json์ด ๊ฑฐ์˜ ์™„๋ฒฝํ•˜๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์กฐ์ฐจ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ASP.NET ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ด๋Ÿฌํ•œ ์—ฃ์ง€ ์ผ€์ด์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. asp.net ๊ฐœ๋ฐœ์ž์ธ ์ž์‹  ์™ธ์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํžˆ ๊ณตํ‰ํ•˜์ง€๋งŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ด๊ณ  ๊ทธ์ € ๋ฌด๊ธฐ๋ฅผ ๋“ค๊ณ  ์žˆ๋Š” ๋Œ€์‹  ์ตœ๊ณ ์˜ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์ฆ‰,์ด ๊ทธ๋ฆผ์ด ๋‹น์‹ ๊ณผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์ž‘์—…์ด ๋ชจ๋‘๊ฐ€ ํฐ ์žˆ๋„๋กํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ๊ฒƒ์„ ๋ฐ›์•„๋“ค์ด๋Š” ์˜๋ฏธ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋งˆํฌ ์—…์— ๋Œ€ํ•œ ์ž„์˜์˜ ๊ตฌ๋ฌธ๊นŒ์ง€ํ•˜์ง€ ํ‰๊ท 
๋‚ด๊ฐ€ ๊ณ„์† ๋งํ•˜๋“ฏ์ด, nuget.json์ด ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋‚˜์—ดํ•œ๋‹ค๋ฉด ๋ฌด์—‡์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๊นŒ? XML์˜ ๋ช…๋ช…๋œ ์š”์†Œ์—์„œ ์ผ๋ถ€ ์ƒ๋‹นํžˆ ์ •์ ์ธ ํ•„๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์‹ค์€ ์ด๊ฒƒ์ด ์ง„์ •ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งํ–ˆ๋“ฏ์ด ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์†Œ์ˆ˜์˜ ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋’ค๋กœ ๊ตฌ๋ถ€๋ฆฌ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ pull ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๊ณ  ๋” ๋‚˜์€ ๊ฒƒ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ํฌ๊ณ  ํ†ตํ•ฉ๋˜์–ด ์žˆ๋Š”์ง€ ๊ณ ๋ คํ•  ๋•Œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์กฐ์ฐจ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์€ ๋ฒ…์ฐฌ ์ผ์ž…๋‹ˆ๋‹ค.

์ข‹์•„, ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์„ "๋‚˜๋Š” ๋” ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋” ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ณ  ์‹ถ์ง€ ์•Š์ง€๋งŒ, ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๋ฅผ ์™„์ „ํžˆ ๋ฌด์‹œํ•˜๊ณ  ๋‚ด ์ž‘์€ ๊ฑฐํ’ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋ถˆํ‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ๊ฑฐํ’ˆ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค."

๊ทธ๋ž˜์„œ, ์šฐ๋ฆฌ๊ฐ€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  project.json ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๋ถ„๊ธฐํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ(FAKE?)์œผ๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๋นจ์•„ ๋จน๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋ชจ๋“  ์„ ํƒ์„ ์—ด๊ฑฐํ–ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ... ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋‹จ์ง€ ๋ง๋„ ์•ˆ ๋˜๋Š” ์ƒ๊ฐ์ด์ง€๋งŒ ์‹ค์ œ๋กœ ๋Œ€ํ™”์— ๊ฑด์„ค์ ์ธ ๊ฒƒ์„ ๊ธฐ์—ฌํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ๋ก ์œผ๋กœ ๋Œ์•„๊ฐ€....

๋” ๋งŽ์€ ์ƒ๊ฐ์„ ํ–ˆ๊ณ  ์ด์ œ project.json์ด nuget.json์ด ๋˜๋„๋ก ํ•˜์—ฌ ์ข…์†์„ฑ ๊ด€๋ฆฌ๋ฅผ ์ง€๊ธˆ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ธฐ์šธ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ž˜ ์ž‘๋™ํ•˜๊ณ  Intellisense๊ฐ€ ์ด๋ฏธ ๊ฑฐ๊ธฐ์— ์žˆ์œผ๋ฉฐ gulp ๋ฐ npm๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

csproj๊ฐ€ ๋‹จ์ˆœํžˆ ์ •์  ๋ถ€๋ถ„์„ ์ •์˜ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š”์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๋‹จ์ ์€ ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. nuget.json์— ๋„ฃ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ nuget.json์€ ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

project.json์€ ๋‹จ์ˆœํ•œ json ํŒŒ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.
csproj๋Š” ๋‹จ์ˆœํ•œ XML ํŒŒ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

IMHO ์ €์™€ ๊ฐ™์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Microsoft, ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” Asp.Net ํŒ€,
์•„์ฃผ ์˜ค๋ž˜๋œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ/๊ฐœ๋…/์‹œ์Šคํ…œ/๋„๊ตฌ/์™ธ๊ด€/...

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ 'ํฌ๋ง'์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ตœ์ดˆ์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋น„ํŠธ ์ดํ›„๋กœ Asp.Net์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ฃผ๋กœ ๊ทธ๊ฒƒ์œผ๋กœ ์ผํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 15๋…„ ํ›„,
XML๊ณผ ๊ฐ™์€ '์˜ค๋ž˜๋œ' ๊ฒƒ์€ ์ •๋ง ๋ฌด๊ฒ๊ณ  ๊ตฌ์‹์œผ๋กœ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ์ธ์‹์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

XML์ด ์—†๊ณ  ์ตœ์†Œํ•œ JSON์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด '๊ฐœ๋ฐœ์ž ํ–‰๋ณต'์ด ํ›จ์”ฌ ๋” ํฝ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ผ์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋‚˜๋จธ์ง€ ์„ธ๊ณ„๋Š” ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด IDE๋Š” ๋ ˆ๊ฑฐ์‹œ ํ˜•์‹๋ณด๋‹ค ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
๋” ์ด์ƒ '์•ต๊ธ€ ๋ธŒ๋ผ์ผ“ ์„ธ๊ธˆ'์„ ๋‚ด์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

project.json์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๊ฑฐ์˜ ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ๋‹ซํžŒ ๋ฌธ ๋’ค์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ 'ํฌ๋ง'์„ ์ฆ‰์‹œ ์ฃฝ์ž…๋‹ˆ๋‹ค.

๊ฐ‘์ž๊ธฐ ์ด๊ฒƒ์€ ๋” ์ด์ƒ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

fyi: "Asp.Net Core"์—๋Š” ํ™˜์ƒ์ ์ธ ๊ธฐ๋Šฅ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„ ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค.
Asp.Net ํŒ€์€ ํ›Œ๋ฅญํ•˜๋ฉฐ Asp.Net ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ ๊ฒƒ์ด ์ž๋ž‘์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋‹ค์ณค๋‹ค. ์–ด์ฉŒ๋ฉด ๋‚˜๋งŒ ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๋‚ด 2 ์„ผํŠธ.

msbuild(ํŠนํžˆ VS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•)๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ฐ ์šฐ๋ฆฌ ๋ชจ๋‘ ๋™์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” project.json์— ๋Œ€ํ•ด ํฅ๋ถ„ํ–ˆ์ง€๋งŒ MS๊ฐ€ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ •์งํ•œ ํ•œ ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • csproj ๋ณ‘ํ•ฉ์ด ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฉ์ฃผ๋กœ ๊นจ์ง„ ๋ณ‘ํ•ฉ์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. csproj์—์„œ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ œ๊ฑฐํ•˜๋ฉด ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • NuGet ์ฐธ์กฐ ๋ฐ ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ๊ฐ€ ํ•ญ์ƒ ์ •๋ ฌ๋˜์ง€๋Š” ์•Š์œผ๋ฉฐ, ๋ณ‘ํ•ฉ์ด ๋Š์–ด์กŒ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ์ง„๋‹จํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค.
  • ๋•Œ๋•Œ๋กœ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜์ง€๋งŒ(project.json์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด ํ™•์‹คํ•˜์ง€ ์•Š์Œ) ์ „์ฒด๋ฅผ ์–ธ๋กœ๋“œ/๋กœ๋“œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ ๋””๋ฒ„๊น…์ด ๊ณ ํ†ต์Šค๋Ÿฌ์šด ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ๊ทธ 3๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ๊ณ ์น  ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š”๋‹ค๋ฉด ์•„๋งˆ csproj ํŒŒ์ผ์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๋ถˆํ‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@neoKushan

๋‹น์‹ ์ด ํ•˜๊ณ  ์‹ถ์€ ์ผ์€ ์‹ค์ œ๋กœ ๊ทธ ์ด์œ ๋ฅผ ๋ฐํžˆ์ง€ ์•Š๊ณ  XML์ด ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

์™„์ „ํžˆ ๊ณต์ •ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ MSBuild๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‚˜์œ์ง€์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค :-)

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

๋” ๋‚˜์œ ์—ฌ์ „ํžˆ - ์ฝ”๋ฉ˜ํŠธ ์—†์Œ

๋‚˜๋Š” ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ๋Œ€์•ˆ์„ ์ œ์‹œํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. HJson์€ ํ•˜๋‚˜์˜ ์˜ต์…˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์•ผ! ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ;-)

๋‹น์‹ ์€ ์ด ๋ณ€ํ™”์— ๊ฝค ํ™”๊ฐ€ ๋‚ฌ์–ด์š”

๊ณต์ •ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๋‚˜๋Š” ์ด์ „์— project.json์— ๋Œ€ํ•œ ๋งค์šฐ ํ™•๊ณ ํ•œ ์ง€์›์„ ์•ก๋ฉด ๊ทธ๋Œ€๋กœ ๋ฐ›์•„๋“ค์˜€๋˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ณ  ํ์‡„๋œ ๊ณต๊ฐ„์—์„œ ์ด ๋ณ€๊ฒฝ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€์— ๋Œ€ํ•ด ๋Œ€๋ถ€๋ถ„ ํ™”๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์†Œ๋…„, ๋‹ค์‹œ๋Š” ๊ทธ ์‹ค์ˆ˜๋ฅผ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์˜คํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. XML์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๊ฑฐ๋‚˜ MSBuild๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ •๋ง ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ์ž…์–‘ํ•˜๋ผ๋Š” ๋ง์„ ๋“ฃ๊ณ  ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ๊ทธ๊ฒƒ์„ ๋นผ์•—๊ธด๋‹ค๋Š” ๋ง์„ ๋“ฃ๋Š” ๊ฒƒ์„ ์‹ซ์–ด ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์น˜์ฆˆ๋ฅผ ์›€์ง์ด์ง€ ๋งˆ!

๋‚˜๋Š” ๋ณ€ํ™”์— ํ™”๋‚œ ์‚ฌ๋žŒ๋“ค์˜ ๋Œ€๋‹ค์ˆ˜๊ฐ€ ๋ชจ๋‘ ์›น ๊ฐœ๋ฐœ์ž๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์Œ, ์˜ˆ, ๊ทธ๋“ค์ด project.json์„ ์ œ๊ณตํ•œ ์œ ์ผํ•œ ๊ฐœ๋ฐœ์ž์ด๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์†Œ์‹์œผ๋กœ, Swift ๊ฐœ๋ฐœ์ž๋“ค๋„ ์ด ๊ฒฐ์ •์— ๋Œ€ํ•ด ํ™”๋ฅผ ๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ง์€ ๋‹น์‹ ์ด ์—ฌ๊ธฐ์—์„œ ๋งํ•˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค:

  1. ์›น ๊ฐœ๋ฐœ์ž๋งŒ ์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ทธ๋“ค ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ๊ฐ”์„ ๋•Œ ์ •๋ง๋กœ ํ™”๋ฅผ ๋ƒˆ์Šต๋‹ˆ๋‹ค.
  3. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„
  4. ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์„ ๋นผ์•—๊ธด ๊ฒƒ์— ๋Œ€ํ•ด ํ™”๋ฅผ ๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  "์›น ๊ฐœ๋ฐœ์ž"๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์ž‘์€ ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ์ž‘์€ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ์ˆ˜๋ฐฑ์–ต ๋‹ฌ๋Ÿฌ์˜ ์ž์‚ฐ ๊ด€๋ฆฌ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์Šคํƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋ฌผ๋ก  ๊ฑฐ๊ธฐ์—๋„ ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์‹œ์Šคํ…œ์˜ ์•ฝ 10%์ž…๋‹ˆ๋‹ค. ์•„, ์˜ˆ, ์‹ค์ œ๋กœ ํด๋ผ์šฐ๋“œ๋„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฏ€๋กœ ์‹ค์ œ๋กœ "ํด๋ผ์šฐ๋“œ ๊ฐœ๋ฐœ์ž"๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ธ‰ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ธฐ์ˆ ์ด ์–ด๋–ป๊ฒŒ, ๋ˆ„๊ตฌ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€์กฐ์ฐจ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐํžˆ XML์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค ์™ธ์— MSBuild์— ๋Œ€ํ•ด ์‹ซ์–ดํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋„ˆ๋ฌด ๋ณต์žกํ•ด
์ด๋Š” ์ž„ํ”ผ๋˜์Šค ๋ถˆ์ผ์น˜๋กœ, ์‚ฌ๋žŒ๋“ค์ด ์ฃผ๋กœ ๋ช…๋ นํ˜• ๋˜๋Š” ์„ ์–ธ์  ๋…ผ๋ฆฌ๋ฅผ ๋‹ค๋ฃจ๋Š” ์ƒํ™ฉ์— ์ถ”๋ก  ๊ธฐ๋ฐ˜ ๋…ผ๋ฆฌ๋ฅผ ๋ฐ€์–ด๋„ฃ์Šต๋‹ˆ๋‹ค.
๋ง™์†Œ์‚ฌ, ์‹ค์ œ๋กœ MSBuild ํŒŒ์ผ์„ _๋ณด์…จ๋‚˜์š”_? ๋„ค, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. XML์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋ง์”€ํ•˜์…จ์Šต๋‹ˆ๋‹ค ;-)
์†์„ฑ๊ณผ ํ•ญ๋ชฉ์ด ์„ ์–ธ๋˜๋Š” ๋ฐฉ์‹์€ ์ •๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ชจ๋“  ๋„๊ตฌ์— ๋งž๋Š” ํฌ๊ธฐ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ง์น˜, ๋ชป.
๋งŽ์€ ๊ฒฝ์šฐ ํฐ ํŒŒ์ผ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ ์ตœ๋Œ€ 3์ค„์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์Ÿ์•„์ง€๋Š” VS ์“ฐ๋ ˆ๊ธฐ. ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ์ž˜๋ ค๋‚˜๊ฐ”๋‚˜ ๋ณด๋ ค๊ณ  ์•ฝ๊ฐ„์˜ ๋–จ๋ฆผ์œผ๋กœ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” ์ง€๊ธˆ ์•ฝ์†์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ์ด์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ์‚ฌ๋ž‘ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ๊ฒฌํ•ด๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ๊บผ์ด ๋ฐ›์•„๋“ค์ผ ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด "๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ ํ•ฉํ•œ" ์ ‘๊ทผ ๋ฐฉ์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์ธ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ๋ฐฉํ–ฅ์„ ๋งํ•˜๋Š”๊ฑฐ์•ผ

project.json์€ ์šฐ๋ฆฌ์˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๊ธฐ์ดˆ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ ์•ฝ์†์„ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ œ ๋ˆ๊ณผ ์‹œ๊ฐ„๊ณผ ๊ณ ํ†ต์„ ํˆฌ์žํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋‹น์‹ ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด์ฉŒ๋ฉด ๊ทธ๋“ค์€ ์ •๋ง๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ์ฆ๊ฑฐ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๊ฒƒ์— ์‚ฌ์šฉ๋œ ์ƒ๊ฐ๊ณผ ์˜์‚ฌ ๊ฒฐ์ •๊ณผ ์ฆ๊ฑฐ๋ฅผ ์กฐ์‚ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ๋‚˜๋Š” ๋ˆ„๊ตฌ์—๊ฒŒ์„œ๋„ ์•„๋ฌด๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต๋œ ๋ชจ๋“  ์ฆ๊ฑฐ์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด Magic 8-ball์„ ํ”๋“ค ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฐ ์‹์œผ๋กœ ์ƒ๊ฐํ•˜๋Š”์ง€ ์•„๋ฌด๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•œ ์‚ฌ๋žŒ์€ ์ œ๊ฐ€ ์•„๋Š” ์œ ์ผํ•œ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค.

asp.net ๊ฐœ๋ฐœ์ž์ธ ์ž์‹  ์™ธ์—๋Š” ์•„๋ฌด๋„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ณ„๋กœ ์ข‹์ง€ ์•Š๋‹ค. ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ๋งํ•˜๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ๋ฐฉํ–ฅ์ด ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ์šฉ๋œ๋‹ค๋Š” ์ฃผ์žฅ์ด๋ฉฐ, ๋‚˜๋Š” ์†์„ ๋“ค์–ด ๊ทธ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ชจ๋“  ๋ฐ˜๋Œ€์— ๊ฑฐ์นœ ์‹ ๋ฐœ์„ ํƒ„ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ฌป๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. MS๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” "MSBuild๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‚ด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์šฉํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ "project.json์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ  ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ MSBuild๋ฅผ ์‹œํ–‰ํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•˜๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์— ๋‘ ๊ฐ€์ง€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์žˆ์—ˆ๊ณ  ๋งŒ์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์ž๋Š” ํ–‰๋ณตํ–ˆ๊ณ  ์›น์ด ์•„๋‹Œ ๊ฐœ๋ฐœ์ž๋Š” ํ–‰๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‹น์‹ ์€ ์ œ์™ธ๋œ ์ค‘๊ฐ„์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ์ฃผ์žฅ์„ ์ •๋ง ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค

์ง„์งœ? ๊ธฐ๋ณธ ๋„๊ตฌ ๊ธฐ๋Šฅ์— ๋น„ MSBuild ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  project.json๋งŒ ์ฝ๋Š” ํ’€ ์š”์ฒญ์„ ๋ฐœํ–‰ํ–ˆ๋‹ค๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ์— ํฌํ•จํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ง„์งœ?

์ข‹์•„, ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ๊ณ  ์žˆ๋‹ค...

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

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

์  ์žฅ! ๋‚˜๋Š” ๋‹น์‹ ์ฒ˜๋Ÿผ ์ฝ์Šต๋‹ˆ๋‹ค! ๋‹น์‹ ์˜ ๋‹ค์†Œ ํžˆ์Šคํ…Œ๋ฆฌ์ ์ธ ํ•ด์„๋ณด๋‹ค ์‹ค์ œ๋กœ ์›๋ณธ ํ…์ŠคํŠธ์— ์กฐ๊ธˆ ๋” ์ž˜ ๋งž๋Š”๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š”.

์‹ค์ œ๋กœ ๋Œ€ํ™”์— ๊ฑด์„ค์ ์ธ ๊ฒƒ์„ ๊ธฐ์—ฌํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๋‚˜๋Š” ์‚ฌ์‹ค ๋‚ด๊ฐ€ ๊ฑด์„ค์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋‚˜๋Š” ์ฒ˜์Œ์˜ ์ถฉ๊ฒฉ์„ ๊ทน๋ณตํ•œ ํ›„ ์ด ๊ฒฐ์ •์˜ ๊ทผ๊ฑฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜์‚ฌ๊ฒฐ์ • ๊ณผ์ •์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์ด๋ฉด์— ์žˆ๋Š” ์ƒ๊ฐ์˜ ์งˆ์„ ๋ฌป๊ณ ์ž ๋…ธ๋ ฅํ–ˆ๋‹ค. ๋Œ€๋‹ค์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๊ฒƒ์„ ์›ํ•œ๋‹ค๋Š” ๋ง์„ ๋“ค์—ˆ์„ ๋•Œ ์ด ์ฃผ์žฅ์„ ๋’ท๋ฐ›์นจํ•  ์ฆ๊ฑฐ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ์‹ค์ œ๋กœ ๊ทธ๋“ค ์—๊ฒŒ ๋ฌผ์—ˆ ์Šต๋‹ˆ๋‹ค. ํŒ€์˜ _์•„๋ฌด๋„_ BTW๋ฅผ ์ˆ˜ํ–‰ํ•œ ์‚ฌ๋žŒ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

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

ํ˜„์‹ค์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
1) ๊ท€ํ•˜๋Š” ์™„์ „ํ•œ ํ”ผ๋“œ๋ฐฑ๊ณผ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •์„ ๋‚ด๋ ธ๊ณ , ๊ทธ ๊ฒฐ์ •์€ ์ง„์ •์œผ๋กœ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ฅ์น˜๊ณ  ์•ฝ์†ํ• ๊ฒŒ. ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ฐ›์€ ๋ฐ˜๋Œ€์˜ ์ˆ˜์ค€๊ณผ ๋‹น์‹ ์ด ์ฆ๊ฑฐ์™€ ๊ฒฐ์ •์„ ์ˆจ๊ธฐ๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ์ด ์ƒํ™ฉ์ด ์ƒ๋‹นํžˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
2) ๋‹น์‹ ์€ ๋ถ€๋ถ„์ ์ธ ๊ฒฌํ•ด์— ๊ทผ๊ฑฐํ•˜์—ฌ ๊ฒฐ์ •์„ ๋‚ด๋ ธ์ง€๋งŒ ๋‹น์‹œ ๋‹น์‹ ์ด ๊ฐ€์ง„ ์ตœ์„ ์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฒฐ์ •์„ ๋‹ค์‹œ ๋‚ด๋ฆฌ๊ณ  ๋‹น์‹ ์ด ๋น ์ง„ ๊ฒฌํ•ด๋ฅผ ๊ฐ„์ฒญํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์‘๋‹ต์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์ด ๊ฐ€์žฅ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์ƒํ™ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
3) ์ž˜๋ชป๋œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‹ค์‹œ ๊ฒฐ์ •์„ ์žฌ๊ฐœํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์ €๋ฅผ ๋ฏฟ์ง€ ๋ชปํ•˜์‹œ๊ฒ ์ง€๋งŒ ์ €๋Š” DotNetCore ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€๋‹จํžˆ ์กด๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ƒํ™ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ๋ชจ๋‘.

๊ทธ๋ฆฌ๊ณ  ๊ฒฐ์ •์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์˜๊ฒฌ์„ ๊ตฌํ•˜๊ณ  ๊ฒฐ์ •์ด ์ด์ „๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‚ด๋ ค์˜ค๋ฉด ์†ํ•ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์••๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜๊ฒฌ์„ ๊ตฌํ•œ ํ›„ ์˜์‚ฌ ๊ฒฐ์ •์˜ ์ผ๋ถ€์— ๊ฒฐํ•จ์ด ์žˆ์Œ์„ ๊นจ๋‹ซ๊ณ  ์ˆ˜์ •ํ•˜๋ฉด ์‹ค์ œ๋กœ ๋” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์™€, ์ง„์ง€ํ•˜๊ฒŒ. ์ด๊ฑธ ๋๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ์š”?

๊ฐ„๋‹จํ•œ ์งˆ๋ฌธ: ๋ฐ˜๋Œ€ ์˜๊ฒฌ์„ ์ˆ˜์šฉํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•œ ๊ฒฐ์ •์„ ๋‹ค์‹œ ๊ฒ€ํ† ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ๋ฉด ๋‹น์‹ ๊ณผ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋ฏธ์ณค๊ณ , ์–ด๋ฆฌ์„๊ณ , ๋ฏธ์ˆ™ํ•˜๊ฑฐ๋‚˜, _์ •๋ณด๊ฐ€ ์—†๋Š”_์ด๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ์ •๋ณด์— ์ž…๊ฐํ•œ ์œ ํšจํ•œ ์˜๊ฒฌ์„ ์œ ์ง€ํ•  ๋Šฅ๋ ฅ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ณ„์† ์•”์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ œ์•ˆ: msbuild csproj ๋ ˆ๊ฑฐ์‹œ ๊ณ ๊ฐ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ Microsoft ํฌํฌ. #carryOnAsNormal

๋‚˜๋Š” ๋˜ํ•œ ์˜ค๋žœ ๊ธฐ๊ฐ„ .Net ๊ฐœ๋ฐœ์ž์ด๋ฉฐ ๋งˆ์ผ€ํŒ…์—์„œ .Net ์ด๋ฆ„์„ ๋ฐœ๋ช…ํ•˜๊ธฐ๋„ ์ „์— 1.0์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์žก์ดˆ์— ๋„ˆ๋ฌด ํ—ค๋งค์ง€ ์•Š๊ณ  ์—ฌ๊ธฐ ๋‚ด 2 ์„ผํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ xml ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณด์ง€ ์•Š๊ณ  ํ‰์ƒ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ ํ–‰๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

xml ๊ตฌ์„ฑ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€์—. ํ•ญ์ƒ.

๋‚˜๋Š” ํŒ€์ด csproj์˜ ๋ชจ๋“  ๋‹จ์ผ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒํ–ˆ์„ ๋•Œ ์—ฌ์ „ํžˆ xml ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋ฉด ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. .net 4.5 ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

MSBuild์˜ ๊ฒฝ์šฐ... MSBuild๋Š” ํ™”์žฌ๋กœ ์ฃฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•๋ ฅํ•˜๊ณ  ์ฃผ๋ณ€์— ๋งŽ์€ ๋„๊ตฌ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ MS ์™ธ๋ถ€์—์„œ๋Š” MSBuild์— ๋Œ€ํ•œ ๊นŠ์ด ์žˆ๋Š” ์ „๋ฌธ๊ฐ€๋งŒ์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋˜๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค ๊ฒฐ๊ตญ 3~5์ผ์˜ ์ง์—… ์ƒํ™œ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ถœ๋ ฅ์— ๋นˆ ํด๋”๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์‚ฌ์†Œํ•œ ๊ฒƒ์กฐ์ฐจ๋„ VS, VS ๊ฒŒ์‹œ ๋ฐ ๋‚ด CI ์„œ๋ฒ„์—์„œ ๋™์‹œ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๊ฑฐ์˜ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค... asp.net core 1.0 ๊ธฐ๊ฐ„ ๋™์•ˆ MSBuild๋ฅผ ๋Œ€์ฒดํ•  ์ข‹์€ ์ œํ’ˆ์„ ๋งŒ๋“ค ์‹œ๊ฐ„์ด ์—†๋‹ค๋ฉด ํ™•์‹คํžˆ... asp.net core 2.0์ด ๋  ๋•Œ๊นŒ์ง€ MSBuild๋ฅผ ๊ณ„์† ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌํ•˜์‹ญ์‹œ์˜ค. ์ฃผ๊ธฐ; ๊ทธ๋Ÿฌ๋‚˜ ์ ์–ด๋„ ๊ทธ ๋˜ฅ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ณ„์† ์ž‘์—…ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ ๋™์•ˆ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๊ตฌ์„ฑ์„ json์— ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด project.json์ธ์ง€, ์•„๋‹ˆ๋ฉด ์ƒˆ๋กญ๊ณ  ๋” ๋‚˜์€ ๊ฒƒ์ธ์ง€ ํŠน๋ณ„ํžˆ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ ˆ๊ฑฐ์‹œ MSBuild ํŒŒ์ผ์„ ์ฆ‰์„์—์„œ ์ƒ์„ฑํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ํ•˜์œ„ ํด๋” ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•˜์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

  • bower.json
  • ํŒจํ‚ค์ง€.json
  • nuget.json
  • ๋ชจ๋“  ๊ฒƒ-else.json
  • microsoft-old-ass.xml.csproj

๋˜ํ•œ 260์ž ๊ฒฝ๋กœ ๊ธธ์ด ์ œํ•œ์„ ์ˆ˜์ •ํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”... ์ œ๋ฐœ... ์˜ˆ, Windows์™€ ๊ด€๋ จ์ด ๋งŽ์€ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์‹ฌ๊ฐํ•˜๊ฒŒ๋Š”... 2016๋…„์ž…๋‹ˆ๋‹ค. .

์ถ”์‹ . ๋‹น์‹ ์ด ๋ฐ˜๋Œ€๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ๋ ค๊ณ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋‹ค์Œ์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :

  • ๋นŒ๋“œ ๋„๊ตฌ ๊ฐœ๋ฐœ์ž ์—ฌ์œ  ์ฑ„๋„์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํ˜„์žฌ ์•„ํ‚คํ…์ฒ˜์™€ ์ฝ”๋“œ, ๊ทธ๋ฆฌ๊ณ  MSBuild/xproj๋กœ ์ด๋™ํ•  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ƒ์œ„ ์ˆ˜์ค€ ๋ณด๊ธฐ๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋น„ํŠธ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์ž˜ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ณ„ํšํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ project.json ๊ธฐ๋ฐ˜ ๋„๊ตฌ์—์„œ pull ์š”์ฒญ ๋ฒ ์ดํ‚น์ด ํ—ˆ์šฉ๋œ๋‹ค๋Š” ๋ณด์žฅ
  • ํ’ˆ์งˆ ๊ธฐ์ค€์ด ์ถฉ์กฑ๋˜๋ฉด ์ „์ฒด project.json์— ๋Œ€ํ•œ "dotnet ๋นŒ๋“œ" ์ง€์›๊ณผ ASP.NET Simple ํ…œํ”Œ๋ฆฟ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž ์žฌ์ ์œผ๋กœ ๋” ํ‘œ์ค€์ ์ธ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์— ๋Œ€ํ•œ ์ผ๋ถ€ ํ…œํ”Œ๋ฆฟ๋„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๊ฑด์„ค์ ์ด ๋˜์‹ญ์‹œ์˜ค", "๊ธฐ์—ฌํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋‚ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค." ๊ธ€์Ž„, ๋‹น์‹ ์€ ๋‹น์‹ ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ์–ป์Šต๋‹ˆ๋‹ค ...

@Mike-EEE, SimpleUseCaseBuild์— ๋Œ€ํ•œ Xaml ์ง๋ ฌํ™”๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ?

์ด ๋ชจ๋“  ๊ฒƒ์„ ์ฝ์€ ํ›„ ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • project.json์€ ๋งŽ์€ ๊ฐœ์„ ์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. .net ๋ฐ asp.net ์ฝ”์–ด๊ฐ€ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋ฐ ๋„๊ตฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์—ˆ๋‹ค๋ฉด ์ด ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • project.json(๋ฐ json)์ด ์™„๋ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • xml ๋Œ€ json ๋Œ€ anyserializationlanguage๋Š” ๋ฌด๊ท ์ž…๋‹ˆ๋‹ค. .net ํ•ต์‹ฌ ๊ณผ์ œ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ๋” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • msbuild๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ๋ ˆ๊ฑฐ์‹œ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ณ  ์•„๋งˆ๋„ .net ํŒ€์ด ์ž์œ ๋ฅผ ์žƒ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์—์„œ ๋” ์ด์ƒ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” .net ํŒ€์ด ์‹ฌํ˜ธํก์„ ํ•˜๊ณ , ์ด๊ฒƒ์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ , ํ”ผ๋“œ๋ฐฑ์„ ์ˆ˜์ง‘ํ•˜๊ณ (๊ทธ๋ฆฌ๊ณ  ์ด ์ƒˆ๋กœ์šด ์Šคํƒ์˜ ์ฑ„ํƒ๊ณผ ์ธ์‹์„ ๊ณ ๋ คํ•˜๊ณ ) msbuild ์ ‘๊ทผ ๋ฐฉ์‹(์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋งŒํผ ๋‚˜์˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ)์— ๋„์ „ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋Œ€์•ˆ. ์„œ๋‘๋ฅผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

LOL @shederman ์ง€๊ธˆ ๋‚˜๋ฅผ ๋Œ์–ด

xml ๋Œ€ json ๋Œ€ anyserializationlanguage๋Š” ๋ฌด๊ท ์ž…๋‹ˆ๋‹ค. .net ํ•ต์‹ฌ ๊ณผ์ œ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ๋” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๋‚˜์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ ๋ฐ/๋˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•˜๋Š” ์ผ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ง€์› ๋ชจ๋ธ์ด๋ฉฐ, ์ด ๋Œ€ํ™” ์ค‘ ์ผ๋ถ€์—์„œ ์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•˜๊ณ  ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฌ์šด ๊ฐœ์„ ๋œ ํ”„๋กœ์ ํŠธ ๋ชจ๋ธ/api๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(์„ค๋ช…๋œ ํ˜•์‹์— ๊ด€๊ณ„์—†์ด -- ๊ทธ๋ž˜๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค :heart: my Xaml!). ์—ฌ๊ธฐ์— MSBuild์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(https://github.com/Microsoft/msbuild/issues/613)์™€ Roslyn์˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ(https://github.com/dotnet/roslyn-project)์— ๋Œ€ํ•œ ๊ณต๊ฐœ ํ† ๋ก ์ด ์žˆ์Šต๋‹ˆ๋‹ค. -system/issues/37) ๋˜ํ•œ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ.

์—ฌ๊ธฐ์— ์ •๋ง ํ›Œ๋ฅญํ•œ ํฌ์ธํŠธ๊ฐ€ ๋งŽ์ด ์žˆ์œผ๋ฉฐ, ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ "๋น„๊ฑด์„ค์ "์ด๋“  ์•„๋‹ˆ๋“  ์—๋„ˆ์ง€๋ฅผ ํŒŒํ—ค์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด MSFT๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ƒ์‚ฐ๋˜๋Š” ๊ฒƒ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋Š” ๋ฐ ๋งˆ์Œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. :+1:

๋‚ด 2์„ผํŠธ:

์ €๋Š” ์ด ๋ณ€ํ™”์— ๋Œ€ํ•ด ๋‘ ๋ถ€๋ฅ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

  • _๋‹ค์–‘ํ•œ_ ์ข…๋ฅ˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด VS & .NET์„ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ค๋žซ๋™์•ˆ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž
  • ๊ทธ๋Ÿฐ ๋ถ€๋‹ด์ด ์—†๊ณ  ์ƒˆ๋กญ๊ณ  ๊นจ๋—ํ•˜๊ณ  ๋ฉ‹์ง„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ASP.NET Core ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์›ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฒ”์ฃผ์— ์†ํ•˜๋ฏ€๋กœ ์ƒˆ๋กœ์šด ASP.NET Core๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ VS ํ”„๋กœ์ ํŠธ ์œ ํ˜•๊ณผ ํ˜ธํ™˜๋˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ "์ด์ „" csproj/msbuild ์†”๋ฃจ์…˜์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ €์—๊ฒŒ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค(+my ํŒ€ ๋ฐ ์•„๋งˆ๋„ ๋งŽ์€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „ํ™˜์ด ํ›จ์”ฌ ๋ถ€๋“œ๋Ÿฝ๊ณ  ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‘ ๋ฒˆ์งธ ๋ฒ”์ฃผ์˜ ์‚ฌ๋žŒ๋“ค์€ ๋‚˜์™€ ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋˜๋Š” ๊ทธ๋ƒฅ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์ง€๊ธˆ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ฃผ์š” ๋ฌธ์ œ๋Š” NuGet ํŒจํ‚ค์ง€๊ฐ€ ์ •์˜๋˜๊ณ  ์ฐธ์กฐ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. packages.config ๋ฐ csproj ํŒŒ์ผ์„ ๋ชจ๋‘ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต ์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค ( @cwe1ss ์ฒ˜๋Ÿผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ BTW์—์„œ ๊ฐ€์žฅ ๊ฑด์„ค์ ์ธ ์˜๊ฒฌ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค...

XML/JSON์˜ ์„ฑ์Šค๋Ÿฌ์šด ์ „์Ÿ์— ๊ด€ํ•ด์„œ๋Š”... IMHO, XML์€ JSON๋ณด๋‹ค ์† ํŽธ์ง‘์— ๋” ์ข‹์Šต๋‹ˆ๋‹ค. XML์€ ์ฃผ์„์„ ์ง€์›ํ•˜๋ฉฐ ๋ณผ ๋•Œ ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JSON์€ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ์— ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ์€ ๋‘ ํ˜•์‹ ๋ชจ๋‘์— ๋˜‘๊ฐ™์ด ์ข‹๊ณ  ๋‚˜์จ์ด ์žˆ์œผ๋ฉฐ ์ „์ ์œผ๋กœ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ๊ฐ€ ํ˜„์žฌ csproj ํŒŒ์ผ๊ณผ ๋ถ„๋ฆฌ๋œ๋‹ค๋ฉด ๋ณ‘ํ•ฉ๋„ ํ›จ์”ฌ ์‰ฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

@Funbit๊ฐ€ ์‚ฌ๋žŒ๋“ค์„ ๋ถ„๋ฅ˜ํ•˜๋ ค๊ณ  ํ•ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์–ด๋–ค ๋ฒ”์ฃผ์—๋„ ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” v1 ๋ฒ ํƒ€ ์ดํ›„๋กœ asp.net ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” 2๋…„ ์ „์— ๊ฑฐ์˜ ํ•˜๋‚˜๊ฐ€ ๋˜์ง€ ์•Š์„ ๋ป”ํ–ˆ์ง€๋งŒ .net ์ฝ”์–ด๊ฐ€ ๊นจ๋—ํ•œ ์Šฌ๋ ˆ์ดํŠธ์™€ .net ๋ฐ ๋…ธ๋“œ ์„ธ๊ณ„์˜ ์ตœ๊ณ ์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค.

์ €๋Š” .net core๊ฐ€ ์ฑ„ํƒ๋„ ์—†๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ์—†๋Š” ์˜ค๋ž˜๋œ ๊ธฐ์—… ํ…Œํฌ๋…ธ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ฑ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚ด ์ž…์žฅ์—์„œ๋Š” ์ด ๊ฒฐ์ •์— ๋Œ€ํ•ด ๋ณ„๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  XML์— ๋Œ€ํ•ด์„œ๋„ ๋ณ„๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ์ธ์šฉ๋ฌธ์„ ํ›”์ณ๋ณด๊ธฐ ์œ„ํ•ด "์ค‘๊ด„ํ˜ธ๊ฐ€ ๊บพ์‡  ๊ด„ํ˜ธ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค." csproj/msbuild - ๋‚˜๋Š” ์œ ์—ฐํ•ด์„œ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ @shederman ์˜๊ฒฌ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ 

๊ณต์ •ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๋‚˜๋Š” ์ด์ „์— project.json์— ๋Œ€ํ•œ ๋งค์šฐ ํ™•๊ณ ํ•œ ์ง€์›์„ ์•ก๋ฉด ๊ทธ๋Œ€๋กœ ๋ฐ›์•„๋“ค์˜€๋˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ณ  ํ์‡„๋œ ๊ณต๊ฐ„์—์„œ ์ด ๋ณ€๊ฒฝ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€์— ๋Œ€ํ•ด ๋Œ€๋ถ€๋ถ„ ํ™”๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์†Œ๋…„, ๋‹ค์‹œ๋Š” ๊ทธ ์‹ค์ˆ˜๋ฅผ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ด๊ฒƒ์€ ์ €๋ฅผ ๊ดด๋กญํžˆ๋Š” _does_์ž…๋‹ˆ๋‹ค. Microsoft๋Š” .NET์„ ์˜คํ”ˆ ์†Œ์‹ฑํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์‹ค์ œ๋กœ ์ฐธ์—ฌํ•˜๊ณ  ํ˜‘๋ ฅํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ข‹์€ '๊ตฌ์„ฑ์›'(ํŒŒํŠธ๋„ˆ?)์ด ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์€ ์‹ค์ œ๋กœ ๊ทธ ๋ชจ๋“  ๋…ธ๋ ฅ์„ ํ›„ํ‡ด์‹œํ‚ค๊ณ  .NET ์ƒํƒœ๊ณ„์— ์ „์ฒด "๋ณด๊ทธ"๊ฐ€ /. ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ๋ ˆ์ด๋ธ”์„ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—๊ฒŒ ๊ณต์ •ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๊ธฐ์—… ํ›„์› ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋“ค๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. (io.js ํฌํฌ๋ฅผ ์ผ์œผํ‚จ) nodejs ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ถ„ํ• ์„ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋ผ๋ฉด ํ›จ์”ฌ ๋” ๋‚˜์˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ฒ˜์Œ์— ์˜๋„ํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ๊ท ํ˜•์„ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

1ajq1

์ฒ˜์Œ์— ์˜๋„ํ•œ ๊ฒƒ๋ณด๋‹ค ๋น„์œจ์ด ๋งŽ์ด ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

@MaximRouiller ๋‹น์‹ ์€ ์‹ฌ์ง€์–ด ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๊นŒ, ํ˜•??? :์›ƒ๋‹ค:

@Mike-EEE ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ด๋ค ๋…ผ์Ÿ์„ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ๋„ˆ๋ฌด ๋งŽ์€ ์ธ์‹  ๊ณต๊ฒฉ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. :์‹ค๋งํ•œ:

ํ”„๋กœ์ ํŠธ ๊ฐ„์— ์†Œ์Šค ํŒŒ์ผ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

@darrelmiller ์ด๊ฒƒ์€ .csproj์˜ ๋ชฉ๋ก ํŒŒ์ผ์ด ๋‹ค์‹œ ๋Œ์•„์˜ค๊ณ  ์žˆ์Œ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์„ญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

@lokitoth ๋งํฌ๋œ ํŒŒ์ผ์ด ์™€์ผ๋“œ์นด๋“œ globs๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ์•„๋งˆ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@MaximRuiller ์ € ์—ญ์‹œ ๋„ˆ๋ฌด @shederman ์€ ๋˜์ง€๋Š” ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ใ…‹. ๋ง๋ถ™์—ฌ์„œ, ๋‚˜๋Š” @shederman์ด ๋‚ด ๋‚ด๋ฉด์˜ ์ฝ”๋”ฉ ๋™๋ฌผ์„

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

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

์ข‹์•„... ์ถฉ๋ถ„ํ•œ ์„ค๊ต์™€ ํ•˜๋ฃจ๋ฅผ ์œ„ํ•œ rah-rah. :stuck_out_tongue: ์ •๊ธฐ์ ์œผ๋กœ ์˜ˆ์ •๋œ ์Šฌ๋Ÿฌ๊ทธํŽ˜์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค!

์ด๊ฒƒ์€ .csproj์˜ ๋ชฉ๋ก ํŒŒ์ผ์ด ๋‹ค์‹œ ๋Œ์•„์˜ค๊ณ  ์žˆ์Œ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋ฌด์„ญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ œ์ณ๋‘๊ณ  ์ด ๊ธฐ๋Šฅ์„ ๋†’์ด ํ‰๊ฐ€ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ง€๊ตฌ์ƒ์—์„œ ๋‚˜๋ฟ์ž…๋‹ˆ๊นŒ? :stuck_out_tongue:

์ด๊ฒƒ์€ .csproj์˜ ๋ชฉ๋ก ํŒŒ์ผ์ด ๋‹ค์‹œ ๋Œ์•„์˜ค๊ณ  ์žˆ์Œ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋ฌด์„ญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ œ ์ƒ๊ฐ์—๋Š” ์ด ๊ธฐ๋Šฅ์„ ๋†’์ด ํ‰๊ฐ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ง€๊ตฌ์ƒ์—์„œ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? :stuck_out_tongue:

@Mike-EEE ๋„ค, ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์•„์š”. :๋ˆˆ์ง“:

์—ฐ๊ฒฐ๋œ ํŒŒ์ผ์˜ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์ •๋ง ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ project.json์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์„ค๋ช…์„ ๋ณธ ์ ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒ€์ด msbuild์—์„œ ์ด๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋ ค๋Š” ์˜๋„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@shederman ์€ ๋˜์ง€๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!
๐Ÿ˜†

๋‚˜๋Š” ๋…ธ๋ ฅํ•œ๋‹ค. ๊ทธ๋ž˜๋„ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋ชจ์š•ํ•˜์ง€๋Š” ์•Š์•˜์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋…ผ์Ÿ๋งŒ ์ซ“๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ–ˆ๋‹ค.

๋‚˜๋Š” ํŠนํžˆ ๋น„์—ดํ•œ ์ธ์‹ ๊ณต๊ฒฉ์— ํ™”๋ฅผ ๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ฐ€ ๋‚˜์— ๋Œ€ํ•ด ๋…ผ์Ÿ์„ ๋ฒŒ์ธ๋‹ค๊ณ  ํ•ด์„œ ์ž…์„ ๋‹ค๋ฌผ๊ฒŒ ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ๐Ÿ˜‰ ๊ทธ๋ฆฌ๊ณ  ๊ฝค ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

csproj ํŒŒ์ผ ํŽธ์ง‘์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด nuget์ด ์—‰๋ง์ด๊ฑฐ๋‚˜ ํžŒํŠธ ๊ฒฝ๋กœ๊ฐ€ ์†์ƒ๋˜์—ˆ์„ ๋•Œ csproj ํŒŒ์ผ๋งŒ ํŽธ์ง‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์ƒˆ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ €๋Š” ํ•ญ์ƒ CI ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋Š” ๋” ๋†’์€ ์ˆ˜์ค€์˜ build.proj ํŒŒ์ผ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” CI ์„ค์ •์—์„œ .sln ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด Visual Studio์—์„œ ๋””๋ฒ„๊ทธํ•  ๋•Œ ์‹คํ–‰ํ•˜๋ ค๋Š” BeforeBuild ๋ฐ AfterBuild ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด csproj ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋ ค๋Š” ์ฃผ์š” ๋ชฉ์ ์ž…๋‹ˆ๊นŒ?

@Mike-EEE ์–ด์ฉŒ๋ฉด; ๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„ ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ(์˜ˆ: Expression Blend, Visual Studio XAML Designer ๋“ฑ)์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์™€์ผ๋“œ์นด๋“œ ์„ ํƒ์„ ์œ„ํ•ด ๊ต์ฒดํ•œ ์‹œ์ ๊นŒ์ง€ ๋งค์šฐ ๊ณ ํ†ต์Šค๋Ÿฌ์› ๋˜ ๊ฒƒ์œผ๋กœ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. VS๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ œ๋Œ€๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ๋นŒ๋“œ ์‹œ "์ด ํŒŒ์ผ์ด ์ด๋ฏธ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ).

์ด "๊ธฐ๋Šฅ"์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ์ข‹์•„ํ•ฉ๋‹ˆ๊นŒ(ํ”„๋กœ์ ํŠธ ๊ฐ„์— ํŒŒ์ผ์„ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ๋ถ„๋ช…ํžˆ ์œ ์šฉํ•˜์ง€๋งŒ ๋ชจ๋“  ํŒŒ์ผ์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๋‚˜์—ด๋  ๋•Œ๋งŒ VS๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•จ)?

์ด "๊ธฐ๋Šฅ"์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ์ข‹์•„ํ•ฉ๋‹ˆ๊นŒ(ํ”„๋กœ์ ํŠธ ๊ฐ„์— ํŒŒ์ผ์„ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ๋ถ„๋ช…ํžˆ ์œ ์šฉํ•˜์ง€๋งŒ ๋ชจ๋“  ํŒŒ์ผ์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๋‚˜์—ด๋  ๋•Œ๋งŒ VS๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•จ)?

๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ๋‚˜์œ ์Šต๊ด€์ด์ง€๋งŒ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํ”„๋กœ์ ํŠธ์—์„œ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์—ญ์‚ฌ์  ๊ด€์ ์—์„œ๋„. ๋‚˜์ค‘์— ์›ํ•  ์ˆ˜๋„ ์žˆ๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋””์Šคํฌ์— ๋ณด๊ด€ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ repo/source control์„ ๋”๋Ÿฝํžˆ์ง€๋งŒ(๋‚˜์œ ์Šต๊ด€ ์ฐธ์กฐ), ์ €๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ œ์–ด๋ฅผ ์ฆ๊น๋‹ˆ๋‹ค. ์ด์ œ ๋‚ด๊ฐ€ ๊ทธ ํŒŒ์ผ์„ ์›ํ•  ๋•Œ repo์˜ ํžˆ์Šคํ† ๋ฆฌ(์ด ์‚ญ์ œ๋œ ํŒŒ์ผ์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•??? ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!)๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ๋‹ค๋‹ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ "๋ชจ๋“  ํŒŒ์ผ์„ ํ‘œ์‹œ"ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์†”๋ฃจ์…˜์— ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ์ธ์Šคํ„ดํŠธ ํžˆ์Šคํ† ๋ฆฌ. :์›ƒ๋‹ค:

csproj ํŒŒ์ผ ํŽธ์ง‘ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

.csproj์˜ ๊ฒฝ์šฐ(์ด ์ค‘ ํ•˜๋‚˜๋Š” ๋‚ด๊ฐ€ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๋Œ€๋‹ค์ˆ˜๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค)

  • ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ UWP ์œ ํ˜•์„ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • NuGet์œผ๋กœ VS ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(ํŠนํžˆ a.targets ํŒŒ์ผ ๋ฐ .proj/.props ํฌํ•จ ์ถ”๊ฐ€ ๊ด€๋ จ)
  • ์ƒ์„ฑ๋œ ์ถœ๋ ฅ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ
  • ๋งŽ์€ ํŒŒ์ผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—… ์ค‘์ด๊ณ  ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๋ณ‘ํ•ฉ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ
  • ๋นŒ๋“œ๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(ํŽธ์ง‘: ์ง€์ •ํ–ˆ์–ด์•ผ ํ•จ - ์ด๊ฒƒ์€ "์ฝ์„ ์ˆ˜ ์žˆ๊ณ  '์ž์ฒด ํฌํ•จ'์ด ํ•„์š”ํ•œ ์ด์œ "์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.)
  • ์„ฑ๊ฐ€์‹  ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „ ์ถฉ๋Œ์„ ๋””๋ฒ„๊ทธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • "๋งํฌ๋œ"(๊ณต์œ ) ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ

project.json์˜ ๊ฒฝ์šฐ

  • ์†์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ(๋งค์šฐ ์ค‘์š”)
  • NuGet ํŒจํ‚ค์ง€ ์ถ”๊ฐ€/์ œ๊ฑฐ
  • ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ€๊ฒฝ
  • ์ถœ๋ ฅ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๋ณ€๊ฒฝ

@shederman ๋‚˜๋Š” ๋‹น์‹ ์ด ์ขŒ์ ˆํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋‹น์‹ ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‘๋‹ตํ•  ๋•Œ

์ง„์งœ? ์‚ฌ๋žŒ๋“ค์ด ์•„์ง๋„ ๊ทธ๋ ‡๊ฒŒ ํ•ด์š”? ๋‚˜๋Š” AssemblyInfo.cs๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ํ–ˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•”ํ‘ ์‹œ๋Œ€๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

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

@Mike-EEE Exclude ์†์„ฑ/ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ (๋ชจ๋“  ๋‹จ์ผ ํŒŒ์ผ์„ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ ) ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๊ธฐ๋ก์„ ์œ„ํ•ด ๋‚˜๋Š” ์ข…์ข… ๊ฐ™์€ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹/๋กค๋ฐฑ ์ฃผ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š” ์—†์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์œ„ํ•ด, ๋‚˜๋Š” ์‹ค์ œ๋กœ Roslyn์„ ์‚ฌ์šฉํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์ง๋ ฌํ™”๋œ AST๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” @Mike-EEE์˜ ์ œ์•ˆ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ์žฅ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋˜‘๊ฐ™์ด ์‰ฝ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ, ๋ฉ”๋ชจ์žฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. notepad++ ๋˜๋Š” ๋” ๋ฐœ์ „๋œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์ด ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ํ˜•์‹์˜ ์œ ์šฉ์„ฑ์— ๋Œ€ํ•œ "์—ฐ๊ธฐ ํ…Œ์ŠคํŠธ"์ž…๋‹ˆ๋‹ค.)

@CodingGorilla ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋„๊ตฌ๊ฐ€ ์ด๊ฒƒ์„ ๋„์™€์ฃผ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ๋‹ค(์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ๋ณด๋‹ค ๋‚˜๋ฅผ ์œ„ํ•ด ํŒจํ„ด์„ ์ •์˜ํ•˜๋ผ -- ๋‚ด๊ฐ€ DOS๋กœ ๋‹ค์‹œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง„๋‹ค๋ฉด, ๋ชจ๋‘๊ฐ€ ์ง„๋‹ค!!). ์ง€๊ธˆ๊ณผ ๋˜‘๊ฐ™์€ ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ "์˜ตํŠธ์ธ"์ด ์•„๋‹Œ "์˜ตํŠธ์•„์›ƒ" ๋ชจ๋ธ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

์–ธ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ์‹ถ์€ ๋ถ„๋“ค์„ ์œ„ํ•ด.... https://twitter.com/migueldeicaza/status/730978470734401536

์–ธ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ์‹ถ์€ ๋ถ„๋“ค์„ ์œ„ํ•ด....

@darrelmiller ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ ... ๋Œ€์‹  Xamarin Studio๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ, ๋น„์ฆˆ๋‹ˆ์Šค/์›Œํฌํ”Œ๋กœ/๊ฒฝํ—˜์„ ์–ธ๋กœ๋”ฉ/๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์€ ์ตœ์•…์ž…๋‹ˆ๋‹ค! 2003๋…„๋ถ€ํ„ฐ ์žˆ์—ˆ๋˜ ์ผ์ด์ฃ .

๋‚˜๋Š” ์ตœ์ข… ํŒŒ์ผ์ด ํ˜•์‹์ด ๋ฌด์—‡์ด๋“  ํ‘œ์ค€ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ(์˜ˆ: ๋ฉ”๋ชจ์žฅ)๋กœ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐœ๋…์„ ๋‘ ๋ฒˆ์งธ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋” ๋‚˜์€ ๋„๊ตฌ๊ฐ€ ํ˜„์žฌ csproj ๋’ค์— ์žˆ๋Š” ๋งŽ์€ ๋ฌธ์ œ์ ์„ ์ œ๊ฑฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. VS๋Š” ์ตœ๊ณ ์˜ ์˜ˆ๊ฐ€ ์•„๋‹ˆ๋ฉฐ VS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒฝํ—˜์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด MSBuild ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ์‹ซ์–ดํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@Mike-EEE Miguel์˜ ์˜๊ฒฌ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์€ ์ƒˆ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์—์„œ ์ผํ•˜๋Š” David Kean์˜ ๋‹ต๋ณ€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํŒ€์€ VS๋„ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@Mike-EEE ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ๋“ค์ด ๋ฌด์—‡์„ ์ƒ๊ฐํ•ด๋‚ด๋“  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์€ MSBuild ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ (@shederman ๋งํ•œ๋Œ€๋กœํ•˜์ง€ ์•Š์œผ๋ฉด, ๊ทธ๋ƒฅ XML ๋  _can't_) ์•„๋ฌด๊ฒƒ๋„ ๋‹จ์ง€ ํ•  ์ˆ˜์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ์ถฉ๋ถ„ํ•˜๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ "๋‚ด ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ฉด ์‹คํŒจ์•ผ"๋ผ๊ณ  ๋งํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งํ–ˆ๋“ฏ์ด(์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” YUUUUUUGE์ž…๋‹ˆ๋‹ค!) "๋‚˜๋Š” ์—ด๋ฆฐ ๋งˆ์Œ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค..." ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ƒฅ ์ ์‘.

๊ฒŒ๋‹ค๊ฐ€, ๋‹น์‹ ์€ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๊ฒƒ์€ ํ•ญ์ƒ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค. :์›ƒ์Œ์ด ๋„˜์น˜๋Š”:

@neoKushan ์ €๋Š” msbuild ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž‘์„ฑ

@CodingGorilla ์‚ฌ์‹ค ์ œ ์ฃผ๋ ฅ์€ MSBuild์ž…๋‹ˆ๋‹ค. XML์ด ๋ฌธ์ œ์ด์ง€๋งŒ MSBuild๋งŒํผ ๋‚˜์˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

xproj์™€ ๋‚˜๋ž€ํžˆ project.json ์ง€์›์„ ๊ณ„์† ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ์ž‘์—…์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‹ ๊ฒฝ์“ฐ๋Š” ์‚ฌ๋žŒ์ด ์ผ์„ ํ•˜๋Š” ๊ฒƒ ๋งž์ฃ ?

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์‚ฌ์‹ค ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ํŒ€์—์„œ ๋‚ด๊ฐ€ ์ด ๊ธฐ์—ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์™œ ์•ˆ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๊ฒฐ๊ตญ OSS, ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฐ ๋‹ค์Œ MSBuild๊ฐ€ ๋งˆ์Œ์— ๋“ค๊ณ  ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์„ ์›ํ•œ๋‹ค๋ฉด xproj๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ASP.NET Core์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ๋„๊ตฌ๊ฐ€ ๋งˆ์Œ์— ๋“ค๋ฉด ๊ณ„์† ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋“ค์€ ๋™์ผํ•œ ๊ธฐ๋ณธ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

์ด์ƒ์ ์œผ๋กœ๋Š” "dotnet build"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์–ด๋–ค ํŒŒ์ผ์ด ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•  ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œ ๋˜๋Š” ์ƒˆ ๋ช…๋ น์˜ ์˜ต์…˜ ํ”Œ๋ž˜๊ทธ๋Š” ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sandorfr _ ์ „์ฒด_ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๋ณธ๊ฒฉ์ ์ธ MSBuild ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ.

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

CAKE๋‚˜ TFS Team Services ๋“ฑ ์›ํ•˜๋Š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์€ ํŒ€์ด "์˜ฌ๋ฐ”๋ฅธ" ์ผ์„ ํ•˜๋„๋ก ๊ทœ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

VS๋Š” ์ตœ๊ณ ์˜ ์˜ˆ๊ฐ€ ์•„๋‹ˆ๋ฉฐ VS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒฝํ—˜์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด MSBuild ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ์‹ซ์–ดํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@neoKushan TFS Build์™€ Xaml์— ๋Œ€ํ•ด ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Xaml์€ ์—„์ฒญ๋‚˜๊ฒŒ ํ›Œ๋ฅญํ•˜์ง€๋งŒ(๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ MSBuild "์Šคํฌ๋ฆฝํŠธ"์˜ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค), TFS Build์—์„œ Xaml์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฆ„์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด github ๋ฌธ์ œ๋ฅผ ์ฑ„ํŒ… ์ฐฝ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ƒ์‚ฐ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. MS์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‹ต์žฅ์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์ด ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ์ด๋ฉ”์ผ ์•Œ๋ฆผ์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๋ฉ”์ผ ์–‘์ด ๋„ˆ๋ฌด ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค.

MSBuild ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์€ ๊ฑฐ์˜ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ฌธ์ œ์˜ ์ผ๋ถ€์ด๋ฉฐ csproj ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ํ˜•์‹์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์„ ํƒ์ด ๋ฉ๋‹ˆ๋‹ค(๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ ํ˜•์‹๊ณผ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค).

(ํŽธ์ง‘: ์ถ”๊ฐ€๋จ)

CAKE๋‚˜ TFS Team Services ๋“ฑ ์›ํ•˜๋Š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

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

ใ…Žใ…Ž ์˜ˆ ๋“œ๋ฆฌ๋ฉด ์š”!) ๋Œ€ํ™” ์ค‘์— ๋ฌธ์ œ๊ฐ€

์ˆ˜์š”์ผ์— ์žˆ์„ ๋‹ค์Œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ์—…์— ๋›ฐ์–ด๋“ค ๊ฒƒ์„ ์ œ์•ˆํ•ด๋„ ๋ ๊นŒ์š”? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„ ํ•˜๋ฃจ๋‚˜ ์ดํ‹€ ์ „์— RC2์˜ ์ถœ์‹œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ(ํ•˜๋‚˜๋Š” ํฌ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!) ์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ํ•„์š”ํ•œ ์งˆ๋ฌธ์„ ํ•‘ํ•˜๊ณ  ๋ผ์ด๋ธŒ ์ฒญ์ค‘๊ณผ ์†”์งํ•œ ํ† ๋ก ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‹ต์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์š”์ผ์— ์žˆ์„ ๋‹ค์Œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ์—…์— ๋›ฐ์–ด๋“ค ๊ฒƒ์„ ์ œ์•ˆํ•ด๋„ ๋ ๊นŒ์š”?

@shederman์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ. ๋‚˜๋Š” ๊ทธ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐœ๋ฐœ์ž์™€ ๊ทธ๋“ค์˜ ์•„์ด๋””์–ด๋ฅผ ๋ถ€์ˆ˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. WWE PPV ์ด๋ฒคํŠธ์ฒ˜๋Ÿผ!

[projectName].csproj์— ๋น„ํ•ด project.json์˜ ์žฅ์ ์€ ํ˜•์‹์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ชจ๋“  ์˜ค๋ž˜๋œ ๊ฒƒ๋“ค๊ณผ ์—ญํ˜ธํ™˜๋  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Damian Edward์™€ ํŒ€์ด ์ง€์ •๋œ ๋ชจ๋“  ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด XML ๋Œ€ JSON ๋Œ€ YML ๋Œ€... ๋‚˜์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹จ์ˆœํ•˜๊ณ  Linux์—์„œ Windows์šฉ ํ•ญ๋ชฉ์„ ๋ณผ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .

@glennsills MSBuild ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—๋Š” _windows_์—๋งŒ ํ•ด๋‹นํ•˜๋Š” ๋‚ด์šฉ์ด ๋ณ„๋กœ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. MS Build ์ž์ฒด ๋˜๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์—๋งŒ ํ•ด๋‹น๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. MSBuild๋ฅผ ๋งŒ์กฑ์Šค๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋นˆ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํŒ€์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๊ฒƒ์„ ์ค„์ผ ๊ณ„ํš์„ ํ•˜๊ณ  ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๊ณ  ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Mike-EEE @shederman์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ. ๋‚˜๋Š” ๊ทธ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐœ๋ฐœ์ž์™€ ๊ทธ๋“ค์˜ ์•„์ด๋””์–ด๋ฅผ ๋ถ€์ˆ˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. WWE PPV ์ด๋ฒคํŠธ์ฒ˜๋Ÿผ!

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋Š๋ฆฌ๊ฒŒ ๋งํ•˜๋Š” ๊ฒƒ์„ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋„ˆ๋ฌด ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์„ธ์š” ๐Ÿ˜„

image

๋”ฐ๋ผ์„œ https://github.com/dotnet/roslyn-project-system/issues/40 ์„ ๊ฐ์•ˆํ•  ๋•Œ ์›œ ์บ”์„ ์—ด ์œ„ํ—˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ(๊ธฐ๋ณธ์ ์œผ๋กœ ) ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ์ ์ธ ์‚ฌํ•ญ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

(์ด๊ฑธ "๋‚˜๋Š” XML์ด ์‹ซ์–ด!" ์กฐ๋กฑ์œผ๋กœ ๋ฐ”๊พธ์ง€ ๋งˆ์„ธ์š”.)

"๋‚˜๋Š” MSBuild tirade๊ฐ€ ์‹ซ์–ด"๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@shederman

MSBuild๊ฐ€ JSON ํŒŒ์ผ์„ ํ—ˆ์šฉํ•˜๋„๋ก ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? :์›ƒ์Œ: (๊ฑฐ์ ˆํ•  ์ˆ˜ ์—†์—ˆ๋‹ค)

@shederman ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋†๋‹ด๋„ ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๊ธฐ๋Š” ์–ด๋ ค์šฐ๋ฉฐ Microsoft๊ฐ€ ์ด _ํ† ๋ก _์„ ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด 5๋…„ ์•ˆ์— ์ง„ํ–‰๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹น์‹ ์€ Swift, Java(!!), Node.JS ๋˜๋Š” Elixir๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ;)

์š”์ฆ˜ .NET ํ”„๋กœ์ ํŠธ/์†”๋ฃจ์…˜/๋ฌด์—‡์ด๋“  ๊ฐ„์— ๋‘ ๊ฐ€์ง€ ์—‰ํ„ฐ๋ฆฌ ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Nuget ๋ฐ .csproj ํŒŒ์ผ. Git(์˜ˆ: GitFlow)์„ ์‚ฌ์šฉํ•˜์—ฌ 5๊ฐœ ์ด์ƒ์˜ ํŒ€์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ์•…๋ชฝ์ž…๋‹ˆ๋‹ค. ".csproj์— ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ๋‹ค๋ฉด ์ด๋Ÿฐ ์“ฐ๋ ˆ๊ธฐ"๋Š” ์ ์  ๊ท€์ฐฎ์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๊ตฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋ฉฐ ๋„๊ตฌ๋Š” ์ถฉ๋Œํ•˜๋Š” DLL ๋ฒ„์ „์ด ์žˆ๋‹ค๋Š” ๊ฒฝ๊ณ ๋„ ํ‘œ์‹œํ•ด์•ผ ํ•˜๋ฉฐ ๋„๊ตฌ๋Š” ๋ณ‘ํ•ฉ์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ฅ์„ ์ž˜๋ผ. Project.json์€ ์ฒ˜์Œ์—๋Š” ๋ฉ‹์ ธ ๋ณด์˜€๋Š”๋ฐ ๋‚˜์ค‘์— ์ •์น˜์™€ ๊ฐ์ •์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

MS ํŒ€์€ RC๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ ํƒ€๋ผ๊ณ  ๋ถˆ๋Ÿฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
MS ํŒ€์ด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ๋ง๊ฐ€๋œจ๋ฆฐ RTM2๋ฅผ ์ถœํ•˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด RTM์ด ์–ธ์ œ ์ถœ์‹œ๋ ์ง€์กฐ์ฐจ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ €๋Š” ๋น„๊ด€๋ก ์ž๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ .NET Core๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ์ด๋Ÿฌํ•œ ์›€์ง์ž„์€ ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

@neoKushan ์กฐ๋กฑ ํ•˜์ง€ ์•Š๊ณ 

๋‚˜๋Š” ํ† ๋ก ์— ์ฐธ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ๋งก์€ ์ง์œ„๋ฅผ ํฌ๊ธฐํ•ด์•ผ ํ•˜๋Š” ํ† ๋ก  ์กฐ๊ฑด์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” project.json์„ ์ง€์ง€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ MS๊ฐ€ ๊ฒฐ์ •ํ•œ ๊ฒƒ์„ ์•ฝ๊ฐ„์˜ ์ˆ˜์ • ๋˜๋Š” ๋‘ ๊ฐ€์ง€๋ฅผ ํฌํ•จํ•˜์—ฌ ์ •ํ™•ํžˆ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๋ง์„ ๊ณ„์† ๋“ฃ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ด์–ด์ง€๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ์•ฝ์†๋˜๊ณ  ์•ฝ์†๋œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. MS๊ฐ€ ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๊ณ  ๊ณ„์†ํ•  ์˜ํ–ฅ์ด ์—†๋‹ค๋ฉด ๋‚˜๋Š” ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” MS์— ๊ทธ๋“ค์˜ ๊ณ„ํš์„ ์ฒ ํšŒํ•˜๋ผ๊ณ  ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ์ผ๋ฐฉ์ ์œผ๋กœ ์–ด๊ธด ์•ฝ์†์„ ๋‚ด๊ฐ€ ์ดํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ฑฐ์˜ ํ˜๋ช…์ ์ธ ์š”์ฒญ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด 2์„ผํŠธ:

์ €๋Š” ์ด ๋ณ€ํ™”์— ๋Œ€ํ•ด ๋‘ ๋ถ€๋ฅ˜์˜ ์‚ฌ๋žŒ๋“ค์ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

VS & .NET์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์˜ค๋žซ๋™์•ˆ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž
๊ทธ๋Ÿฐ ๋ถ€๋‹ด์ด ์—†๊ณ  ์ƒˆ๋กญ๊ณ  ๊นจ๋—ํ•˜๊ณ  ๋ฉ‹์ง„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ASP.NET Core ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์›ํ•˜๋Š” ๊ฐœ๋ฐœ์ž
๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฒ”์ฃผ์— ์†ํ•˜๋ฏ€๋กœ ์ƒˆ๋กœ์šด ASP.NET Core๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ VS ํ”„๋กœ์ ํŠธ ์œ ํ˜•๊ณผ ํ˜ธํ™˜๋˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ "์ด์ „" csproj/msbuild ์†”๋ฃจ์…˜์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ €์—๊ฒŒ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค(+my ํŒ€ ๋ฐ ์•„๋งˆ๋„ ๋งŽ์€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „ํ™˜์ด ํ›จ์”ฌ ๋ถ€๋“œ๋Ÿฝ๊ณ  ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‘ ๋ฒˆ์งธ ๋ฒ”์ฃผ์˜ ์‚ฌ๋žŒ๋“ค์€ ๋‚˜์™€ ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋˜๋Š” ๊ทธ๋ƒฅ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์ง€๊ธˆ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ฃผ์š” ๋ฌธ์ œ๋Š” NuGet ํŒจํ‚ค์ง€๊ฐ€ ์ •์˜๋˜๊ณ  ์ฐธ์กฐ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. packages.config ๋ฐ csproj ํŒŒ์ผ์„ ๋ชจ๋‘ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต ์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค ( @cwe1ss ์™€ ๊ฐ™์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ BTW์—์„œ ๊ฐ€์žฅ ๊ฑด์„ค์ ์ธ ์˜๊ฒฌ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค...

XML/JSON์˜ ์„ฑ์Šค๋Ÿฌ์šด ์ „์Ÿ์— ๊ด€ํ•ด์„œ๋Š”... IMHO, XML์€ JSON๋ณด๋‹ค ์† ํŽธ์ง‘์— ๋” ์ข‹์Šต๋‹ˆ๋‹ค. XML์€ ์ฃผ์„์„ ์ง€์›ํ•˜๋ฉฐ ๋ณผ ๋•Œ ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JSON์€ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ์— ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ์€ ๋‘ ํ˜•์‹ ๋ชจ๋‘์— ๋˜‘๊ฐ™์ด ์ข‹๊ณ  ๋‚˜์จ์ด ์žˆ์œผ๋ฉฐ ์ „์ ์œผ๋กœ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ๊ฐ€ ํ˜„์žฌ csproj ํŒŒ์ผ๊ณผ ๋ถ„๋ฆฌ๋œ๋‹ค๋ฉด ๋ณ‘ํ•ฉ๋„ ํ›จ์”ฌ ์‰ฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๋‚˜๋Š” ๋˜ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ 1์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค(์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ/์œ ํ˜•์„ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ ์˜ค๋žซ๋™์•ˆ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž). ์ œ ๊ณ ์šฉ์ฃผ๋Š” csproj ํ˜•์‹์œผ๋กœ ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ ์ฝ”๋“œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ASP.NET RC1 ๋ฐ RC2 ๊ฐœ๋ฐœ ๋ถ„๊ธฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์ตœ์‹  ์ œํ’ˆ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์ •ํ•œ ๊ฒฝ๊ณ , ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • MSBuild ์ž‘์—… ์–ด์…ˆ๋ธ”๋ฆฌ ๋“ฑ๊ณผ ํ•จ๊ป˜ MSBuild๋ฅผ ๊ณ ๊ธ‰ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‘˜ ์‚ฌ์ด์˜ ์‹ค์ œ ํ†ตํ•ฉ์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์—‰๋ง์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋žฉ ์ƒ์„ฑ, ๋ž˜ํ•‘๋œ ์ข…์†์„ฑ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋žฉ ์žฌ์ƒ์„ฑ, ์†Œ์Šค ์ œ์–ด์—์„œ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€(์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Git์™€ TFVC๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๊ณ  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ), VS์˜ ๋””์ž์ธ ํƒ€์ž„์— ํ”„๋กœ์ ํŠธ๊ฐ€ ์†”๋ฃจ์…˜์—์„œ ์„œ๋กœ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋นŒ๋“œ/๋ฐฐํฌ ์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•. ์‹œ์Šคํ…œ์ด _๋งž๋Š”_ ๋Š๋‚Œ์„ ๋ฐ›์€ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ .cs ํŒŒ์ผ๋งŒ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด ๋‘ ๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์€ ์ž˜ ์„ž์ผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

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

์•„๋งˆ๋„ ๋ฏธ๋ž˜์˜ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ์„œ ํžŒํŠธ๋ฅผ ์–ป์–ด LTS ๋ฆด๋ฆฌ์Šค ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ํ›จ์”ฌ ๋” ํฐ ๋Œ€ํ™”์ด์ง€๋งŒ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ ๊ต์ฒด์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์–ด ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ํก์ˆ˜ํ•  ์‹œ๊ฐ„์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ์— ๊ด€ํ•ด์„œ๋Š” ์ด๋ฏธ ์ˆ˜๋งŽ์€ packages.config ํŒŒ์ผ์ด ๋– ๋Œ์•„๋‹ค๋‹ˆ๊ณ  ์žˆ์œผ๋ฏ€๋กœ packages.json/nuget.json์œผ๋กœ ํฌํŒ…ํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ข…์†์„ฑ์„ ์œ„ํ•œ ์ €์žฅ์†Œ ํ˜•์‹๋ณด๋‹ค ์ผ๊ด€์„ฑ ์—†๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์— ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@shederman ๊ท€ํ•˜๋Š” MSBuild์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋งค์šฐ ์ž˜ ์•Œ๋ ค ์ฃผ์…จ์ง€๋งŒ ๋ช…ํ™•ํžˆ ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ MSBuild์˜ ์‹ค์ œ _๋ฌธ์ œ_์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ง„์ •์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋Š๋ผ๊ธฐ ๋•Œ๋ฌธ์— MSBuild์—์„œ ๋ฐœ์ƒํ•œ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ž, ๋‹น์‹ ์€ XML์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. JSON๊ณผ XML ๊ฐ„์˜ ๋…ผ์Ÿ์€ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์ ˆ๋Œ€ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด MSBuild๋ฅผ ๊ทธํ† ๋ก ์‹ซ์–ดํ•˜๋Š” _์œ ์ผํ•œ_ ์ด์œ ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ฒช์€ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ œ๊ฐ€ ์งˆ๋ฌธํ•˜๋Š” ์ด์œ ์™€ ๊ณ„์†ํ•ด์„œ ์งˆ๋ฌธํ•˜๋Š” ์ด์œ ๋Š” ์ด๊ฒƒ์ด ๋ฐ”๋กœ Microsoft๊ฐ€ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ •ํ™•ํ•œ ๋ฌธ์ œ์ด๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํžˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด๊ฒฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ MSBuild์— ๋Œ€ํ•ด ์‹ซ์–ดํ–ˆ๋˜ ๋งŽ์€ ๋ถ€๋ถ„์ด ์ด๋ฏธ ์ˆ˜์ •๋˜๊ณ  ์žˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒŒ์ผ ๋ชฉ๋ก - ์ œ๊ฑฐ/์ˆ˜์ • ์ค‘(์‹ค์ œ๋กœ๋Š” VS ๋ฌธ์ œ)
  2. ์ง€์˜ฅ ๋ณ‘ํ•ฉ - ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 1๋กœ ๊ณ ์ •
  3. ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ/์ƒ์„ธํ•จ - https://github.com/dotnet/roslyn-project-system/issues/40 ์—์„œ ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ
  4. ์‰ฝ๊ฒŒ ์†์œผ๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†์Œ - ๋‹ค์‹œ 1.๊ณผ 3์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

@laskoviymishka (๋ฐ ๊ธฐํƒ€ ๋ช‡ ๊ฐ€์ง€)๋Š” @neoKushan์ด ์—ฌ๊ธฐ์—์„œ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์€ ํ˜„์žฌ ๋ฐœ์ƒํ•˜์ง€

@laskoviymishka RTM ์ด์ „ ์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ

RTM์€ ์˜ค๋Š˜๋‚  ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ์ „ํžˆ project.json์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(RC2์— ๋Œ€ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ด€๊ณ„์—†์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค). "์ƒˆ๋กœ์šด" csproj๋กœ์˜ ์ด๋™์€ RTM ์ดํ›„์— ์ด๋ฃจ์–ด์งˆ ์˜ˆ์ •์ด๋ฉฐ ์ ์ง„์ ์œผ๋กœ ์ด๋ฃจ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. RTM์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(xproj์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ).

@CodingGorilla RC2๋กœ ํ•œ๋‹ฌ๋งŒ์— 1.0๋ฒ„์ „์œผ๋กœ ์˜ฎ๊ฒจ๊ฐ‘๋‹ˆ๋‹ค. ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ์ด๊ฒƒ์€ ๋ชจ๋“  ๊ฐœ๋ฐœ์„ ์ค‘๋‹จํ•˜๊ณ  ์•ˆ์ •ํ™”์— ์ง‘์ค‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์€ ์‹ค์ œ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์•ˆ์ •ํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@neoKushan RTM ์ดํ›„์— ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์™œ asc ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? github์—์„œ ํ† ๋ก  ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋…ผ์Ÿ ๋“ฑ์„ ์ง€์ ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์™œ ๊ฐœ๋ฐœ์ž์™€ ๋Œ€ํ™”ํ•˜์ง€ ์•Š๊ณ  ๊ฐ•์ œํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

IMHO project.json ์—์„œ project.csproj ๋กœ์˜ ์ด ์ด๋™์€ ์ฑ„ํƒ๋˜๊ธฐ ์ „์— ๋…ผ์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ์ข‹์€ ๊ฒฐ์ •์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ ์–ด๋„ ์ €์—๊ฒŒ๋Š”์š”.

@laskoviymishka ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ์—… ๋…ธํŠธ : (๊ฐ•์กฐ ์ถ”๊ฐ€)

RC2/Preview 1์—์„œ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค . RTM/๋ฏธ๋ฆฌ ๋ณด๊ธฐ 2์—์„œ _ ์œ ์ผํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ xproj ํŒŒ์ผ์˜ ์ด๋ฆ„์ด Visual Studio์—์„œ csproj_๋กœ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‹œ์ ๋ถ€ํ„ฐ project.json์€ csproj ์˜†์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒ€์€ project.json์—์„œ csproj ํŒŒ์ผ๋กœ ๊ธฐ๋Šฅ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. project.json ํŒŒ์ผ์ด ๋‚จ์•„ ์žˆ๊ณ  NuGet์— ๋Œ€ํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ด๋ฆ„์ด nuget.json์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€์€ project.json ๋ชจ๋ธ์˜ ์ฃผ์š” ์ด์  ์ค‘ ํ•˜๋‚˜์ธ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๋‚˜์—ดํ•  ํ•„์š”๊ฐ€ ์—†์Œ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ด๋ฏธ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ๋„๊ตฌ ๋ณ€๊ฒฝ์ด๋ฉฐ ๋งค์šฐ ๋‹จ๊ธฐ์ ์œผ๋กœ(์ฆ‰, RTM+) project.json ํŒŒ์ผ์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๊ณ  ์ง€๊ธˆ๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ข‹์€ ์†Œ์‹์€ ์šฐ๋ฆฌ๊ฐ€ ์ƒํ™ฉ์„ ์ •์ค‘ํ•˜๊ณ  ๊ฑด์„ค์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ด๊ฒƒ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์‹œ๊ฐ„์ด ์•„์ง ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

Microsoft ๋˜๋Š” ์ ์–ด๋„ asp.net ํŒ€์€ ์ด์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ–ˆ์œผ๋ฉฐ ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ  ์žˆ์ง€๋งŒ ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒƒ์€ "ํ† ๋ก ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, _์—ฌ๊ธฐ_". ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ „ํ™˜์ด ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ผ์ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๊ทธ๋“ค์ด ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ xproj์˜ ์ด๋ฆ„์„ csproj๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ทธ๊ฒƒ์ด ์•ฝ๊ฐ„์˜ ์—‰ํ„ฐ๋ฆฌ ๋ณ€ํ™”๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋‹ต๋ณ€์ด ์—†์œผ๋ฏ€๋กœ ์ œ ์ƒ๊ฐ์€ csproj ์Šคํƒ€์ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๊ธฐ๊ฐ„์„ ํ™œ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๊ณ ์˜ _์ข…๋ฅ˜_์˜ csproj๋ฅผ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. project.json์€ ์•„๋‹ˆ์ง€๋งŒ ๋‘ ์„ธ๊ณ„์˜ ์žฅ์ ์„ ๋ชจ๋‘ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์žฅ๊ธฐ์ ์œผ๋กœ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋” ๋‚˜์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ๋™์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@neoKushan ์ด๊ฒƒ์€ ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค. MS๊ฐ€ ๊ทธ๊ฒƒ์„ ๋ณด์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ํŒ€์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@CodingGorilla ๊ธ€์Ž„์š” ์ตœ์ข… ๋ฒ„์ „์—๋Š” ์—ฌ์ „ํžˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€ํ™”์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” ํ•ต์‹ฌ ํŒ€์ด ์“ธ๋ฐ์—†์ด ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๊ด€๋ฆฌ์ž ๋ฌธ์ œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์•„๋งˆ๋„ ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋„๋ก ํ•ฉ์‹œ๋‹ค. ์ง„์งœ ์ข‹์€ ์ด์œ  ์—†์ด.

@neoKushan

์‹ค์ œ๋กœ MSBuild์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์˜๊ฒฌ์„ ํ˜•์„ฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. project.json ๋ฐ .csproj ํŒŒ์ผ ์‚ญ์ œ๋กœ ์ธํ•ด ํ™œ์„ฑํ™”๋˜๋Š” _seem_ ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์ง€๋งŒ "์ƒˆ๋กญ๊ณ  ๊ฐœ์„ ๋œ" msbuild๋กœ ์ด๋™ํ•˜๋ฉด ๋‚ด ์›Œํฌํ”Œ๋กœ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋นŒ๋“œ ์ž‘์—…์— ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๋งˆ์‹œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฐ”๋€Œ๋‚˜์š”? ๋‚ด gulpfile์€ dnu ๋˜๋Š” dotnet-cli๋กœ ์‹คํ–‰ํ•˜์—ฌ ์‹ค์ œ๋กœ .cs ํŒŒ์ผ ๋ชจ์Œ์„ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค, ๊ทธ๋ ‡์ง€?
  • VS๋Š” ๊ณ„์†ํ•ด์„œ ์ž‘์—… ํƒ์ƒ‰๊ธฐ๋ฅผ ์ง€์›ํ•˜๊ณ  ๋‚ด ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๋งˆ์‹œ๋Š” ์ž‘์—…์— ๋Œ€ํ•œ afterbuild/prebuild/etc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ VS ์‚ฌ์šฉ์ž๊ฐ€ F5๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋ชจ๋“  ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๋งˆ์‹œ๊ธฐ ์ž‘์—…์— ๋ž˜ํผ msbuild ์ž‘์—…์ด ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๋Š” msbuild ํ‚ฅ์˜คํ”„ gulp๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? (์•„์•ผ)
  • msbuild๋Š” ๋ณ„๋„ ์„ค์น˜์ธ๊ฐ€์š”? dotnet cli ๋˜๋Š” ๋Ÿฐํƒ€์ž„๊ณผ ๋ณ„๋„๋กœ ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋˜๋‚˜์š”? ์ด๊ฒƒ์€ ๋‚ด CI ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๊นŒ? ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์ตœ์†Œ ์„ค์น˜ํ•ด์•ผ ํ•˜๋‚˜์š”?
  • ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ nuget ์ข…์†์„ฑ ๋˜๋Š” .cs ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ œ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ๋‹จ๊ณ„(์žˆ๋Š” ๊ฒฝ์šฐ)๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • VS ์‚ฌ์šฉ์ž๊ฐ€ nuget ์ข…์†์„ฑ๊ณผ .cs ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ ๋ณ€๊ฒฝ ์ง‘ํ•ฉ์„ ๊ฒ€ํ† ํ•  ๋•Œ csproj ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ฐ„๋‹จํ•˜๊ณ  ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๋น„๊ต๋ฅผ ์œ„ํ•ด .net 4.6 ๋ฐ VS2015์—์„œ csproj์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ _์—†์Šต๋‹ˆ๋‹ค_)

์ด ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ณ ๋ คํ•ด์•ผ ํ•  ์‹œ๋‚˜๋ฆฌ์˜ค(๋‚˜์ฒ˜๋Ÿผ!)์— ๋„๋‹ฌํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. "์•„๋ฌด๋ฆฌ ๋…ผ์˜๋„ ์—†์ด ์น˜์ฆˆ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ์žˆ๋‹ค"๋Š” ๋ง์ด .net core์˜ SOP๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ ๋„๊ตฌ๋Š” ๋‹น์‹ ์„ ์œ„ํ•ด ์–ด๋Š ์ •๋„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ฃผ์š” ์š”์ ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋„๊ตฌ๋Š” ์ ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ˜„์žฌ ์ƒ๋ฅ˜์—์„œ ์ˆ˜์˜ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ ์—†์ด ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์™€ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. .net46์—์„œ VS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๊ฑฐ๋Œ€ํ•˜๊ณ  ์žฅํ™ฉํ•œ xml ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ VS ์‚ฌ์šฉ์ž์™€ ๋น„ VS ์‚ฌ์šฉ์ž๋ฅผ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์€ ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

"RTM์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ท€ํ•˜์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ๋ณ€๊ฒฝ๋  ๊ฒƒ์ž„์„ ์ƒ๊ธฐ์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด๊ฒƒ์„ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์œ , ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„ ์šฐ๋ฆฌ๊ฐ€ ๊ณฑ์Šฌ๊ณฑ์Šฌํ•œ ๊ฒƒ๋ณด๋‹ค ๊ฐ๋„๋ฅผ ๋” ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ค, ๋นŒ๋“œ ๋„๊ตฌ, ์˜ˆ, ๋นŒ๋“œ ์šฐ๋ฆฌ๋Š” ์ตœ์ข… ์Šคํ‚ค๋งˆ๋ฅผ ๊ฒฐ์ •ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ(ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ xml ๊ธฐ๋ฐ˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค, ์œ„ ์ฐธ์กฐ), ํŒŒ์ผ ์ด๋ฆ„์€ ํ™•์‹คํžˆ .csproj๋กœ ๋๋‚˜์„œ ๋ ˆ๊ฑฐ์‹œ ๋„๊ตฌ์— ์ตœ๋Œ€ํ•œ์˜ ํ˜ผ๋ž€์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Agile.(ps ๋‹น์‹ ์ด ๋„๊ตฌ ๋ฒค๋”๋ผ๋ฉด::o)"

@Oceanswave ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ๊ด€๋ฆฌ ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์•„๋ฆ„๋‹ค์šด ์˜ˆ

@neoKushan

ํ•˜์ง€๋งŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ MSBuild์˜ ์‹ค์ œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด ๋˜‘๊ฐ™์€ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ด์ „ ๋‹ต๋ณ€์„ ์ฝ์–ด์•ผ ํ• ๊นŒ์š”? https://github.com/aspnet/Home/issues/1433#issuecomment -218993559

๋‚˜๋Š” MSBuild ํŒŒ์ผ์„ ์ˆ˜์ •, ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ์ˆ˜๋ฐฑ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Team Builds๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๊ณ  ๊ฑฐ๋Œ€ํ•œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋„๋Œ€์ฒด ์™œ ์ด์ƒํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค๊ณ  ์žฅํ™ฉํ•œ ๋กœ๊ทธ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ˆ˜๋…„ ๋™์•ˆ ํšŒ๋น„๋ฅผ ์ง€๋ถˆํ–ˆ์œผ๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ ์ด ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ์ด ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. project.json์€ ์‹ ์„ ํ•œ ๊ณต๊ธฐ์˜ ์ˆจ๊ฒฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. MSBuild๋กœ ์ˆ˜๋…„๊ฐ„ ๊ณ ์ƒํ•œ ๋์— ๋งˆ์นจ๋‚ด MS๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•„์š”ํ•˜๊ณ  ์ ์šฉ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

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

ํ† ๋ก  ์—†์ด, ๊ฒ€ํ†  ์—†์ด, ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ฐธ์—ฌ๋„ ์—†์ด.

์ผ๋ถ€ ๋ถ„๊ธฐ์—์„œ MSBuild๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฏธ์›€์„ ๋ฐ›๋Š”์ง€์กฐ์ฐจ ์•Œ์ง€ ๋ชปํ•œ๋‹ค ๋Š” ๊ฒƒ์„ ์ฆ๋ช… ํ•ฉ๋‹ˆ๋‹ค.

MSBuild์— ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ์„œ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์  ์ œํ•œ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์—„์ฒญ๋‚˜๊ฒŒ ๊ฐ•๋ ฅํ•˜๊ณ  ์–ด๋–ค ์˜๋ฏธ์—์„œ ๊ทธ๊ฒƒ์ด ์ฃผ์š” ์•ฝ์ ์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ "๋ณต์›, ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ํฌ์žฅ" ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๊ฒฝ์šฐ ์ด๋Š” ์ •๋ง ์—„์ฒญ๋‚œ ์ผ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์—์„œ๋Š” C# ๊ฐœ๋ฐœ์ž๋ฅผ ์ƒ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์••๋ฐ•๊ฐ, ์ด‰๋ฐ•ํ•œ ๋งˆ๊ฐ์ผ, ๋†’์€ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ฐฉํ•ด๊ฐ€ ๋˜๊ฑฐ๋‚˜ ์ง€์—ฐ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MSBuild๋Š” ๋‹ค๋ฅธ ์‚ฌ๊ณ  ๋ฐฉ์‹, ์ฆ‰ ๋ช…๋ นํ˜• ์ฝ”๋”ฉ๊ณผ์˜ ์ฃผ์š” ์ปจํ…์ŠคํŠธ ์ „ํ™˜์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋‹จ์ˆœํžˆ ๊ทธ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์ด ๋‘”ํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค. ์š”์ฆ˜ ๋‚ด๊ฐ€ ๊ฐ๋…ํ•˜๋Š” ๋ชจ๋“  ํŒ€์—์„œ ์ƒ์„ฑ๋˜๋Š” ์œ ์ผํ•œ MSBuild๋Š” ๋„๊ตฌ ์ƒ์„ฑ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ง€๋‚œ 5๋…„ ๋™์•ˆ MSBuild์— ์—ด๊ด‘ํ•˜๊ฑฐ๋‚˜ MSBuild ์ž‘์—…์„ ์ฆ๊ธฐ๋Š” C# ๊ฐœ๋ฐœ์ž๋ฅผ ํ•œ ๋ช…๋„ ๋งŒ๋‚˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Github์—์„œ ์ง€๋‚œ ๋ฉฐ์น ๊ฐ„ ๋Œ“๊ธ€์„ ์‚ดํŽด๋ณด์„ธ์š”. MSBuild๊ฐ€ ์‹ซ์€ ๊ฒƒ์€ ๊ฒฐ์ฝ” ํ˜ผ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. MSBuild๋Š” 10๋…„ ๋™์•ˆ .NET ๊ฐœ๋ฐœ์ž์˜ ๋ชฉ์„ ์กฐ๋ฅด๋Š” ๋งท๋Œ๋กœ ์ธ์‹๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ธ์‹์˜ ๋Œ€๋ถ€๋ถ„์€ ๋ถˆ๊ณต์ •ํ•ฉ๋‹ˆ๊นŒ? ๋„ค, ์•„๋งˆ๋„.

ํ•˜์ง€๋งŒ ์–ด์ฉŒ์ฃ ? ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ์ฑ…์ž„์ž์ธ ์ œ ๊ด€์ ์—์„œ๋Š” ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. MSBuild์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” project.json + gulp.js + powershell์—์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

_Can_ MSBuild๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌผ๋ก  ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด MSBuild์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋‹จ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋“ค์—๊ฒŒ ๊ฐ•์š” ํ•˜๋ฉด ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ํ•˜๊ณ  ๋‚˜์„œ ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ซ์–ดํ•˜๋Š” ๋„๊ตฌ์— ์˜์กดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‹จ์ˆœํ•œ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์Šค์Šค๋กœ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์–ผ๋งˆ๋‚˜ ์ข‹์•„ํ–ˆ๋Š”์ง€ ์ƒ๊ฐํ•˜๋ฉด ๋‚˜๋Š” ์‹ค์ œ๋กœ ๊ทธ๋“ค์„ ๋น„๋‚œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ MSBuild์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋ถ„๊ธฐํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ณต์žกํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌ๊ธฐํ•˜์ง€ ์•Š๋Š” ์†”๋ฃจ์…˜์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž, ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ฝ 5๋…„ ์ „, ์ง€๊ธˆ ๋…ผ์˜๋˜๊ณ  ์žˆ๋Š” ๋ณ€ํ™” ์ค‘ ์ผ๋ถ€๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค๋ฉด ์ธ์‹์ด ๋” ์ข‹์•˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๊ทธ๋ ‡์ง€ ์•Š์•˜๊ณ  ์ง€๊ธˆ์€ ์ˆ˜๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๋ถ€์ •์ ์ธ ์‚ฌ๊ณ ๋ฐฉ์‹์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๊ธฐ๋กœ๋Š” ์ด๋Ÿฌํ•œ ๋™์ผํ•œ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋‹น์‹œ MSBuild์—์„œ ์ œ๊ธฐ๋˜์—ˆ์ง€๋งŒ ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฌธ์ œ๊ฐ€ ์ œ๊ธฐ๋˜๊ณ  ๊ฑฐ๋ถ€๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ.

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

๊ทธ๋ž˜์„œ _์ง€๊ธˆ_ ๋” ๋‚˜์€ ๋ณ‘ํ•ฉ์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? 10๋…„. ๋„๊ตฌ ํ›„ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ์š•์ž…๋‹ˆ๊นŒ?

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

๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ํ† ๋ก ์€ ๋‹ค๋ฅด์ง€๋งŒ, "๋‹น์‹ ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์•ฝ์†ํ•œ ๊ฒƒ์„ ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์˜ ์˜ค๋ž˜๋œ ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์•ฝ์†ํ•œ ๋Œ€๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—"์ž…๋‹ˆ๋‹ค.

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

Man ๋‚˜๋Š” @shederman ์˜ ์ฝ”๋ฉ˜ํŠธ์™€ ์—ญ์‚ฌ๊ฐ€ ๋‚˜์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ์œผ

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

์ €๋„ MSBuild๋ฅผ ๋‹ค๋ค„๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์ „๋ฌธ๊ฐ€ ์ค‘ ๊ฐ€์žฅ ๊ฒฝํ—˜์ด ํ’๋ถ€ํ•œ ์‚ฌ๋žŒ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ๊ฒƒ์„ ๋ฐฐ์šฐ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์ด๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‹น์‹ ์ด ๊ฐ€์žฅ ํ™•์‹คํžˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค). ๋งˆ์น˜ ์ž์‹ ์˜ ์–ธ์–ด์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"๋” .NET๊ณผ ์œ ์‚ฌํ•˜๊ณ "(VS์™€ ๋” ๋‚˜์€ ํ†ตํ•ฉ์ด ์žˆ์—ˆ๋‹ค๋ฉด) ์ž‘์—…ํ•˜๊ธฐ์— ๋” ๋‚˜์€ ์ œํ’ˆ์ด๊ณ  ๊ณ ๋ คํ•ด์•ผ ํ•  ๋งค๋ ฅ์ ์ธ ์ œ์•ˆ์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ์šฐ๋ฆฌ ๋ชจ๋‘ ๋™์˜ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@Mike-EEE & @shederman Mike์˜ ์š”์ ์— ๋”ฐ๋ฅด๋ฉด, ์˜ค๋ž˜๋˜๊ณ  ๊ตฌ์‹์ด๋ฉฐ "๋‹ค๋ฅธ (.NET) ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ..."์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋“ค์€ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์ธ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” @shederman์˜ ์‘๋‹ต์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ทธ์˜ ์ถ”๋ก ์— ๋Œ€๋ถ€๋ถ„ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค(๋นŒ๋“œ ๋ฐ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์ด ์šฐ๋ ค์˜ ์ด์ƒํ•œ ํ˜ผํ•ฉ์ด๋ผ๋Š” ์ฃผ์ œ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค).

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚˜๋Š” ์ด ๊ฒฝ์ฃผ์— ๋ง์ด ์—†์œผ๋ฉฐ ๊ทธ๋“ค์ด ์–ด๋–ค ๊ธธ์„ ์„ ํƒํ•˜๋“  ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ์ € ์—„์ง€์†๊ฐ€๋ฝ์„ ์น˜์ผœ๋“œ๋Š” ๋ฐ˜์‘์„ ์–ป๊ณ  ๋‚ด ์ž์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ๋“ฃ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ์ € ์—„์ง€์†๊ฐ€๋ฝ์„ ์น˜์ผœ๋“œ๋Š” ๋ฐ˜์‘์„ ์–ป๊ณ  ๋‚ด ์ž์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ๋“ฃ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๋„์™€ ์ค„ ์ˆ˜์žˆ์–ด์„œ ๊ธฐ๋ป! :์›ƒ๋‹ค:

๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹น์‹ ์ด ๋ฌป๋Š” ์‚ฌ๋žŒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. @shederman์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ด์—ˆ์Šต๋‹ˆ๋‹ค (์˜ˆ, ๊ฑฐ๊ธฐ์—์„œ ๋‚ด ๋ง์„ ๊ฒ€์—ดํ–ˆ์Šต๋‹ˆ๋‹ค :stuck_out_tongue: ). ๊ทธ๋“ค์˜ ๋ฐฉ์‹๋Œ€๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์˜ ํŠน์„ฑ์ƒ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ๋งŒ ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์ด๋“  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. :๋ˆˆ์ง“:

@PhilipRieck ์ •๋ง ๋ฉ‹์ง„ ์งˆ๋ฌธ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๋ถˆํ–‰ํžˆ๋„ ๋‚˜๋Š” ๊ทธ๋“ค ๋ชจ๋‘์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ ๋‹ค์Œ์„ ๋ด…์‹œ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋นŒ๋“œ ์ž‘์—…์— ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๊ฟ€๊บฝ ๋งˆ์‹œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฐ”๋€Œ๋‚˜์š”? ๋‚ด gulpfile์€ dnu ๋˜๋Š” dotnet-cli๋กœ ์‹คํ–‰ํ•˜์—ฌ ์‹ค์ œ๋กœ .cs ํŒŒ์ผ ๋ชจ์Œ์„ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค, ๊ทธ๋ ‡์ง€?

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฐ”๋€” ๊ฒƒ์ด๋ผ๊ณ  _์ƒ๊ฐ__ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋นŒ๋“œ๋˜๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ _definition_์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค๊ณ  95% ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค(์ ์–ด๋„ dotnet build๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์ด์ƒ). dotnet CLI๋Š” ์–ด๋Š ์‹œ์ ์—์„œ MSbuild๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ์‹œ์ ๊นŒ์ง€๋Š” ์ผ์ข…์˜ ๋‚ด๋ถ€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

msbuild๋Š” ๋ณ„๋„ ์„ค์น˜์ธ๊ฐ€์š”? dotnet cli ๋˜๋Š” ๋Ÿฐํƒ€์ž„๊ณผ ๋ณ„๋„๋กœ ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋˜๋‚˜์š”? ์ด๊ฒƒ์€ ๋‚ด CI ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๊นŒ? ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์ตœ์†Œ ์„ค์น˜ํ•ด์•ผ ํ•˜๋‚˜์š”?

์ด์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋‹ต์€ ์—†์ง€๋งŒ MSBuild๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„(์˜ˆ: VS๋กœ) MSBuild๊ฐ€ ์™„์ „ํžˆ ๋ณ„๋„์˜ ์„ค์น˜๋กœ dotnet CLI์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋œ๋‹ค๊ณ  _์ƒ์ƒ_ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์ „ํžˆ ์ œ ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์ „์ฒด ".net ๋„์ฒ˜์—" ํ”„๋กœ์ ํŠธ์˜ ํฐ ๋ชฉํ‘œ๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์†Œํ•œ์˜ ์†Œ๋ž€์„ ํ”ผ์šฐ๋Š” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ apt-get dotnet-cli(๋˜๋Š” ๋ฌด์—‡์ด๋“ ), dotnet new, dotnet build์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด MSBuild๋ฅผ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด dotnet-cli์˜ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ nuget ์ข…์†์„ฑ ๋˜๋Š” .cs ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ œ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ๋‹จ๊ณ„(์žˆ๋Š” ๊ฒฝ์šฐ)๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

.cs ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ์˜ค๋Š˜๋‚ ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ™•์‹คํžˆ ๋‹ค๋ฅธ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ฐํžŒ ํ•œ ๊ฐ€์ง€๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  .cs ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋Š” ์‹œ๋Œ€๊ฐ€ ์ง€๋‚ฌ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์›ํ•˜๋Š” ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ , @Mike-EEE๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ์ข…์†์„ฑ์— ๊ด€ํ•ด์„œ๋Š” ํ™•์‹คํžˆ ๋‹จ๊ธฐ์ ์œผ๋กœ(๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ๋ช‡ ๊ฐœ์›”), ๊ทธ๋“ค์€ project.json์— ๋จธ๋ฌผ๊ณ  ์ด์ „๊ณผ ๋˜‘๊ฐ™์ด ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. project.json์ด nuget.json์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ์ œ์™ธํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ Microsoft๊ฐ€ ๋งค์šฐ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์„ ํ˜ธ๋„๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(๋‚ด ๊ฐœ์ธ์ ์ธ ์ทจํ–ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค..nuget.json ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ๋‚˜์—๊ฒŒ ์นจ์„ ๋ฑ‰๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค).

VS ์‚ฌ์šฉ์ž๊ฐ€ nuget ์ข…์†์„ฑ๊ณผ .cs ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ ๋ณ€๊ฒฝ ์ง‘ํ•ฉ์„ ๊ฒ€ํ† ํ•  ๋•Œ csproj ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ฐ„๋‹จํ•˜๊ณ  ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๋น„๊ต๋ฅผ ์œ„ํ•ด .net 4.6 ๋ฐ VS2015์—์„œ๋Š” csproj์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

.cs ํŒŒ์ผ์˜ ๊ฒฝ์šฐ csproj๊ฐ€ ์ „ํ˜€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๊ฒŸ ์ข…์†์„ฑ์˜ ๊ฒฝ์šฐ - ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋‹ค์†Œ ๊ณต์ค‘์— ๋–  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ csproj๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ๊ฒฐ์ •์ž๋Š” nuget์ด nuget.json์— ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ๋˜๋Š” csproj์— ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋‘˜?

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ฃผ์š” ์š”์ ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋„๊ตฌ๋Š” ์ ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ˜„์žฌ ์ƒ๋ฅ˜์—์„œ ์ˆ˜์˜ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ ์—†์ด ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์™€ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. .net46์—์„œ VS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๊ฑฐ๋Œ€ํ•˜๊ณ  ์žฅํ™ฉํ•œ xml ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ VS ์‚ฌ์šฉ์ž์™€ ๋น„ VS ์‚ฌ์šฉ์ž๋ฅผ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์€ ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ Microsoft๋Š” ๊ฐ‘์ž๊ธฐ ๊ทธ๊ฒƒ์„ ์•…๋ชฝ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋…ธ๋ ฅ์— ๋„ˆ๋ฌด ๋งŽ์€ ํˆฌ์ž๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. "๋„๊ตฌ"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด VS ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ .net CLI์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .net ์ฝ”์–ด์˜ ๊ถ๊ทน์ ์ธ "์ตœ์ข… ๊ฒŒ์ž„"์€ ๋งค์šฐ ๋ฏผ์ฒฉํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ํ”Œ๋žซํผ์ด์ง€๋งŒ ๋ช‡ ์ฃผ๋งˆ๋‹ค ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํ”Œ๋žซํผ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. 6์›”์— dotnet 1.0 ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋…„ ํ›„์—๋„ ์—ฌ์ „ํžˆ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰๋  ๊ฒƒ์ด์ง€๋งŒ, ์ตœ์‹  ๋ฒ„์ „์€ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์„ ๋•Œ "dotnet upgrade" ๋˜๋Š” ๊ทธ ๋ผ์ธ์„ ๋”ฐ๋ผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. . RTM์ด ํžˆํŠธํ•˜๋”๋ผ๋„ RC2 ํ”„๋กœ์ ํŠธ๋Š” ์‹ค์ œ๋กœ ๋“ค์–ด๊ฐ€์„œ ๋Œ€์ƒ์„ RTM์œผ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ๊นŒ์ง€ ์—ฌ์ „ํžˆ RC2 ๋น„ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(global.json์ด๋‚˜ ์–ด๋”˜๊ฐ€์—์„œ?).

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

ํ˜„์žฌ IDE์— ์žˆ๋Š” ๋งŽ์€ ๋งค์ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ๋งŽ์€ ๋งค์ง csproj ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์ค„ ์•ฑ์œผ๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ •์˜ ํŒŒ์ผ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. project.json์˜ ๊ฐ€์žฅ ์ข‹์€ ๋ถ€๋ถ„์€ ๋‚ด๊ฐ€ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@shederman MSBuild์˜ ๋ฌธ์ œ๋Š” ํฌ๊ณ  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์—์„œ ํฌ๊ณ  ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค....

๋˜ํ•œ ๊ตฌ์ถ• ํŒ€๊ณผ ํ•จ๊ป˜ ์ผ์„ํ–ˆ๊ณ  ๋‚˜๋Š” ๋˜ํ•œ ์ ˆ๋Œ€์ ์œผ๋กœ ์‹ซ์–ดํ–ˆ์Šต๋‹ˆ๋‹ค (ํ•‘ (Ping) ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘์ด ๊ฒฝํ—˜์ด ์–ผ๋งˆ๋‚˜ ๋”์ฐํ•œ ์ด์•ผ๊ธฐ ํ•œ becuse ๋งˆ์ดํฌ-EEE @), ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•Š์Šต๋‹ˆ๋‹ค ๋Œ€๋ณธ. MSbuild๋Š” ํฌ๊ณ  ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ VS๋ฅผ ํฌ๊ณ  ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์ตœ์‹  csproj ํŒŒ์ผ์€ ํ›จ์”ฌ ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, "๋””๋ฒ„๊น…"์ด ํฌ๊ฒŒ ๋‹จ์ˆœํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํฌ๋Ÿฌ์ŠคํŠธ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์›ํ•˜๋Š” _build ์‹œ์Šคํ…œ_์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์˜ฅ์—์„œ *.csproj์—์„œ "dotnet build"๋ฅผ ํ˜ธ์ถœํ•˜๋Š” .bat ํŒŒ์ผ์„ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋Š˜์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ์ถœ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dotnet cli๊ฐ€ MSbuild๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋ฉด ๊ฑด๋“œ๋ฆด ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฉ€์–ด์ง„๋‹ค๋Š” ๋ง์„ ๋“ค์€ ๋ฆฝ์Šคํ‹ฑ์ด ์•„๋‹ˆ๋ผ ์•ฝ์†๋œ ๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•ฝ์†๋œ ๊ฒƒ์„ ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์šฐ๋ฆฌ ์ž์‹ ์—๊ฒŒ ์ฃผ๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฏธ ๋‹ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์„ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ „์— ๋งํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” ์ผ์„ ํ•  ๊ฒƒ์ด๋‹ค.

๋‚จ๊ฒจ๋‘๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ์—†๋Š” ์ฒซ ๋ฒˆ์งธ ์ด์œ ๋Š” ์ด๊ฒƒ์ด MSBuild ํ”„๋กœ์ ํŠธ์—์„œ ๋Œ€๊ทœ๋ชจ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ์‹œ์ž‘์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ์ธ์‹ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋ช… ์œ ์ง€์— ๊ตฌ์‹ ๊ธฐ์ˆ ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ .NET Core์˜ ์„ค๊ณ„ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค . ๊ทธ๋ ‡์Šต๋‹ˆ๊นŒ?

ms ๋นŒ๋“œ์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋ˆ„๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”๊ฐ€์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ „์ฒด ASPnet ํ”„๋กœ์ ํŠธ์—๋Š” 1000๊ฐœ ์ด์ƒ์˜ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. SignalR์„ ๋ณด์‹ญ์‹œ์˜ค.
๋ฆด๋ฆฌ์Šค๊นŒ์ง€ ํ•œ ๋‹ฌ์ด ๋‚จ์•˜๊ณ  ์ด ๋ฒ„๊ทธ๋Š” ์ตœ์ข… ์ƒํƒœ์— ๊ฑฐ์˜ ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๊ทธ๋“ค์€ ms build๊ฐ€ ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. MS์— ์ด ๋ชจ๋“  ๋ ˆ๊ฑฐ์‹œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ •๋ง๋กœ ๋ฏฟ์ง€ ์•Š๋Š”๋‹ค.

@shederman

๊ทธ๋ฆฌ๊ณ  ์•ฝ์†๋œ ๊ฒƒ์„ ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์šฐ๋ฆฌ ์ž์‹ ์—๊ฒŒ ์ฃผ๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋“ค์€ ๋‹น์‹ ์ด ์•„๋ฌด๊ฒƒ๋„ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ„์†ํ•ด์„œ ํฌํฌํ•˜์‹ญ์‹œ์˜ค. ์•„๋ฌด๊ฒƒ๋„ ๋‹น์‹ ์„ ๋ง‰์„ ์ˆ˜

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

๊ทธ๋Ÿผ ํ•ด? ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์•„๋ฌด๊ฒƒ๋„ ๋‹น์‹ ์„ ๋ง‰์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚จ๊ฒจ๋‘๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ์—†๋Š” ์ฒซ ๋ฒˆ์งธ ์ด์œ ๋Š” ์ด๊ฒƒ์ด MSBuild ํ”„๋กœ์ ํŠธ์—์„œ ๋Œ€๊ทœ๋ชจ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ์‹œ์ž‘์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ์ธ์‹ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ์™œ ์‹ ๊ฒฝ์„ ์“ฐ๊ฒ ์Šต๋‹ˆ๊นŒ? MSbuild ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด Microsoft์— ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ASP.net ์ฝ”์–ด์˜ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๊ฐ€ asp.net ์ฝ”์–ด์—๋งŒ ์ ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. project.json์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์ˆ˜๋ฐฑ ๊ฐ€์ง€์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. project.json์— ์ž์ฒด ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋ถ„๋ช…ํžˆ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์ฃผ์„์ด ๋ถ€์กฑํ•˜์—ฌ ๋‚ด ์• ์™„ ๋™๋ฌผ์ด ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค(์•„๋‹ˆ์š”. XML์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋ช… ์œ ์ง€์— ๊ตฌ์‹ ๊ธฐ์ˆ ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ .NET Core์˜ ์„ค๊ณ„ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ ‡์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ํ•˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ .net ์ฝ”์–ด๋กœ ์ด์‹ํ•˜๋„๋ก ๋•๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€, ์šฐ๋ฆฌ๋Š” ์™„์ „ํ•œ ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์ด ์•„๋‹Œ .net ์ฝ”์–ด ๋ฒ„์ „์˜ MSBuild์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค .

๋‹น์‹ ์˜ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ๊ทธ๋“ค์ด ๊ฐํžˆ ๊ทธ๊ฒƒ์„ MSBuild๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด XML์ด ๋˜์—ˆ์ง€๋งŒ "CoreBuild"๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์Šคํƒ€์ผ์„ ์ƒ๊ฐํ•ด๋ƒˆ๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋” ํ˜„๋ช…ํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ด๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ "๋‚˜๋Š” XML์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค!"๋ฟ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ํ—ˆ๊ฐ€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ณ , ๋‹น์‹ ์€ ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํฌํฌ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ณ  ๋ฉ”์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ฌด๋„ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด .NET SDK๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋„๊ตฌ์— ๊ทธ๊ฒƒ์„ ์›ํ•˜๊ณ , ์˜ˆ, ๋‚˜๋Š” ๊ทธ๋“ค์˜ ๋ฌต์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ๊ทธ๋“ค์ด ๊ฐํžˆ ๊ทธ๊ฒƒ์„ MSBuild๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ๊ทธ๋“ค์€ MSBuild๋ฅผ _์‚ฌ์šฉ_ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ์ฐจ์ด. ์ƒˆ project.json ๋นŒ๋“œ ์‹œ์Šคํ…œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  MSBuild๋ผ๊ณ  ํ•˜๋ฉด ํ–‰๋ณตํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋” ํ˜„๋ช…ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ  ๋‹น์‹ ์€ "๋‚˜๋Š” XML์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค!"๋ผ๊ณ ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๐Ÿ˜„

์–ด์จŒ๋“  ์›์„ ๊ทธ๋ฆฌ๋ฉฐ ๋Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ทจ์นจ.

์Šคํƒ ๋“œ์—…์— ๋งก๊ธฐ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์„ค๋“ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์นœ MSBuild ์ธก์„ ์ดํ•ดํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์นœ MSBuild ์ธก์ด ๋น„ MSBuild ์ธก์„ ์ดํ•ดํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ ๋™์˜ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ง์€ ์šฐ๋ฆฌ๊ฐ€ ๋‘˜ ๋‹ค ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. MS ํŒ€์˜ ์ถ”๊ฐ€ ๋…ธ๋ ฅ์ด ์ „ํ˜€(๋˜๋Š” ๊ฑฐ์˜) ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ์˜ ๋ˆˆ๋ถ€์‹ฌ ์†์—์„œ ์˜ต์…˜์ด ๊ฐ€๋ผ์•‰๊ฑฐ๋‚˜ ํ—ค์—„์น˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

@neoKushan ์˜ ์งˆ๋ฌธ์— ๋”ฐ๋ผ:

๋ญ๊ฐ€ ๋‚จ์•˜์–ด?

๋‚˜๋Š” ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ํ›Œ๋ฅญํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ "์‹ ์กฐ"๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋‚ด ์‘๋‹ต์„ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ๋žŒ์ด ํŽธ์ง‘/์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ @neoKushan ์˜ ์ง„์ˆ ์„ ํ•ด๊ฒฐ๋  ๊ฒƒ์ž„์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. MSFT์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ๋ง

Guid ProjectType์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ฃผ์š” ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์œ„์˜ ๋ถ€๋ก์„ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ(์˜ˆ: Angular์˜ ASP.Net Hello World)์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ์žฅ์—์„œ ์ „์ฒด๋ฅผ ์†์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด(ํ˜‘์ƒ ๋ถˆ๊ฐ€๋Šฅํ•œ) ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. Yeoman/VS/similar๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ๋žŒ์ด ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ œ์•ˆํ•˜๋Š” ๋ฐ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋Œ“๊ธ€์„ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์ž‘๋™ ์ค‘, MSBuild์—์„œ

  • ์„ ์–ธ์ ์ด์–ด์•ผ ํ•œ๋‹ค

First-Level์˜ ์ˆœ์„œ ๋ณ€๊ฒฝ(์ง๊ณ„ ์ž์‹)๋Š” ์ข…์ข… ๋””๋ฒ„๊ทธํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ .targets ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๋งจ ์œ„๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ๋” ์ฃผ๋ชฉํ• ๋งŒํ•œ ๊ณณ์€ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ž๊ธ‰์ž์กฑํ•ด์•ผ ํ•œ๋‹ค

์ด๊ฒƒ์€ MSBuild์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ •์ ์œผ๋กœ ์ฝ๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. _environment variable_ ์ง€์ • ๊ฒฝ๋กœ์—์„œ ์˜ค๋Š” .targets ํŒŒ์ผ๊ณผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฒคํŠธ ์ง€์›๋œ๋‹ค๋Š” ์‚ฌ์‹ค๋ถ€ํ„ฐ ์กฐ๊ฑด๋ถ€ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋งค์šฐ ๋†’์€ ์ˆ˜์ค€์˜ ๋ณต์žก์„ฑ์„ ํฌ์ƒํ•˜๋ฉด์„œ ํšจ๊ณผ์ ์œผ๋กœ Turing Complete ํ™˜๊ฒฝ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. , ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋‚œํ•œ ๋„๊ตฌ ๋Šฅ๋ ฅ. ๋‚˜๋Š” VS์˜ MSBuild์˜ ์—ด์•…ํ•œ ํ†ตํ•ฉ์ด ๊ทธ๋Ÿฌํ•œ ์ฃผ๋ณ€์— ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์–ด๋ ค์›€์˜ ๊ฒฐ๊ณผ๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ธ๊ฐ„์˜ ๊ฐ€๋…์„ฑ/ํŽธ์ง‘ ๊ฐ€๋Šฅ์„ฑ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณ‘ํ•ฉ ์ถฉ๋Œ์„ ์ค„์ด๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ๋ณ‘ํ•ฉ์„ ๋‹จ์ˆœํ™”ํ•˜๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MSBuild๋Š” ๊ธฐ์ˆ ์ ์œผ๋กœ ์™€์ผ๋“œ์นด๋“œ ํ˜•์‹์œผ๋กœ ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ ์นด๋“œ์— ๋Œ€ํ•œ VS ์ง€์›์€ ์‹ฌ์—ฐ๋ณด๋‹ค ๋‚˜์ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ๊ทน์ ์œผ๋กœ ์ผํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์— ๋”ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ๊ธฐ๊บผ์ด ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ _migrate_์— ๋Œ€ํ•œ _์ œ์•ˆ_์˜ ํ•ญ๋ชฉ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ.

  • ์™„์ „ํžˆ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋ฌธ์„œ์— ์ž์ฒด ํฌํ•จ ์›์น™์ด ์ ์šฉ๋จ).

MSBuild์— ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์„œ, ํŠนํžˆ MSBuild์˜ VS _flavor_์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ์ƒ๋‹นํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข…์ข… ์™œ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด ๊ทธ๋“ค์ด ์†ํ•œ ๊ทธ๋ฃน์— ์žˆ๋Š”์ง€ ์–ด๋ฆฌ๋‘ฅ์ ˆํ•˜๊ณ  VS "๋„์›€"์ด ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™„๋ฒฝํ•œ ์˜ˆ๋Š” Bond NuGet ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ์— BondInclude ํด๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ(csproj์—์„œ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ) ๋นŒ๋“œ๊ฐ€ ๊ฒฐ๊ณผ ์–ด์…ˆ๋ธ”๋ฆฌ์— Bond ์œ ํ˜•์„ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? (์˜ค๋ฅ˜๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ). ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ๋นˆ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

(์˜ˆ, ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.)

  • ๋„๊ตฌ์— ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MSBuild์™€ ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ  ๋„ˆ๊ฒŸ์„ ํ†ตํ•ด ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ํŠน์ • ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŠนํžˆ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋ฟ์ด๋ผ๋ฉด?

๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. VS๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ (๋‹ค์†Œ) ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ์— ์ข‹์€ ์ด์œ ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ ํ”„๋กœ์ ํŠธ ์ž์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‹ค์ œ ํŒŒ์ผ๊ณผ ๊ทธ๊ฒƒ์ด ์ƒ์„ฑํ•˜๋Š” ์•„ํ‹ฐํŒฉํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค(์ด๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ด ์•„๋‹˜). ์—ฌ๊ธฐ์—์„œ๋Š” "๋ช…๋ น"์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— project.json๋„ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ถœ๋ ฅ ์œ ํ˜•๊ณผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ •์˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ๊ณ  project.json ๋Œ€ project.csproj ๋Œ€ํ•œ ํ† ๋ก ์—์„œ ์ €์—๊ฒŒ ๋ˆˆ์— ๋„๋Š” ํ•œ ๊ฐ€์ง€๋Š” ํ•ด๋‹น ํŒŒ์ผ ์ด๋ฆ„ ์ค‘ ํ•˜๋‚˜๋งŒ ์ „์ฒด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๊ตฌ์›Œ์กŒ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. F#์—์„œ ASP.NET ๊ฐœ๋ฐœ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core์—์„œ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ๊ฐ€์žฅ ํฌ๋ฏธํ•œ ์ƒ๊ฐ์ด ์—†์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด csproj ๋ฅผ csproj, fsproj, vbproj ์˜ ์•ฝ์–ด๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ์‹ค์ œ๋กœ csproj ๋งŒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: F# ์‚ฌ๋žŒ๋“ค์ด CoreCLR ์ง€์›์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‹ค์ œ ETA๋Š” ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ์ง€๊ธˆ ๊ฒฐ์ •๋œ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์ด ๋ฌด์—‡์ด๋“  ์ง€๊ธˆ ๋‹น์žฅ์€ ์‚ฌ๋žŒ๋“ค์˜ ๊ด€์‹ฌ์„ ๋Œ์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ XML๋ณด๋‹ค JSON์„ ์„ ํ˜ธํ•˜๋Š” ๋งŒํผ project.json์ด ๋‚˜๋ฅผ C#์— ๊ณ ์ •์‹œํ‚ค๋ ค๋Š” ๊ฒฝ์šฐ(๊ทธ๋ฆฌ๊ณ  ์ปดํŒŒ์ผ์˜ ํŒŒ์ผ ์ˆœ์„œ๊ฐ€ F#์—์„œ ๊ฒฐ์ •์ ์œผ๋กœ ์ค‘์š”ํ•จ) ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ FAKE์™€ Paket์œผ๋กœ ๋Œ์•„์˜จ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ MSBuild์— ๋Œ€ํ•ด ์‹ซ์–ดํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋„ ์†”๋ฃจ์…˜ ์ปดํŒŒ์ผ ์ด์™ธ์˜ ์šฉ๋„๋กœ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์†”๋ฃจ์…˜์„ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ฝค ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. BTW๋Š” "dotnet cli"์—๋„ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ง€๊ธˆ ๋ฐ”๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐ˜๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”).

์‹ค์ œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Nant๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด Nant๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. psake๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ psake๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. powershell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์† ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋“ฑ! ์•„๋งˆ๋„ "dotnet build" ๋ถ€๋ถ„๋งŒ MSBuild์— ๋Œ€ํ•œ ํ˜ธ์ถœ๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (dotnet build๊ฐ€ MSBuild๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ)

์ด๊ฒƒ์ด MSBuild๊ฐ€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ์ €๋Š” ์ฃผ์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ 10๋…„ ๋™์•ˆ ๊ทธ๋ ‡๊ฒŒ ๋ณด์•„์™”๊ณ  ์•ž์œผ๋กœ๋„ ๊ทธ๋ ‡๊ฒŒ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌผ๋ก  ์ด ์Šค๋ ˆ๋“œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ์ด๋ฏธ ๋งํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ์—๊ฒŒ ํ™•์‹คํžˆ ํ•„์š”ํ•œ ๊ฒƒ์€ csproj๋ฅผ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด project.json ๋ฐ Visual Studio์˜ _๊ธฐ๋Šฅ_ ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jtmueller F#(๋˜๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ VB.net)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•˜๋Š” _๊ธฐ์ˆ ์ _ ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค. MSBuild ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋กœ์˜ ์ „ํ™˜์ด ์ด๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค๋ฉด ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. DNX๋Š” ๊ฒฐ์ฝ” ๋งŒ์กฑํ•˜์ง€ ์•Š์•˜์ง€๋งŒ CoreCLR์€ ํ™•์‹คํžˆ F#์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. F# come RTM์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ํ™•์‹คํžˆ ํŒŒ์ดํ”„๋ผ์ธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

@jtmueller project.json์€ ์ข…์†์„ฑ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์™€ ์‚ฌ์šฉ์ž ์ง€์ • ๋ช…๋ น์ด ํฌํ•จ๋œ ๊ฑฐ์˜ ํ”„๋กœ์ ํŠธ ์ •์˜์ž…๋‹ˆ๋‹ค. ํŠน์ • ์–ธ์–ด์™€ ๊ด€๋ จ๋œ ๊ฒƒ์€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฟˆ์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ(MSBuild๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด)์€ Roslyn์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…๊ณผ ๋Œ€์ƒ์„ ํŒŒ์•…ํ•˜๋ฏ€๋กœ F#์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค(๋˜๋Š” C# ๋˜๋Š” VB.NET, Roslyn์ด ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํœด์‹์„ ์ทจํ–ˆ๊ณ  MSBuild๋ฅผ "์ €์žฅ"ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ๋„์ „์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ MSBuild๋ฅผ ์ƒ๋‹นํžˆ ๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ถ”๋ก  ๊ธฐ๋ฐ˜์˜ XML ์ •์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด๋ฉฐ, ์ด๋Š” ๋งค์šฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ์‹œ๋‚˜๋ฆฌ์˜ค, ํŠนํžˆ ์ผ๋ถ€ ๋” ๋ณต์žกํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

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

1๋‹จ๊ณ„ ๋Š” ํ™•์‹คํžˆ ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ์—„์ฒญ๋‚œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ ์ •์˜์—์„œ ์ข…์†์„ฑ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ํ•„์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2๋‹จ๊ณ„ ๋Š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๋งค์šฐ ๋ณต์žกํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋‚˜์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด _๋‘˜ ๋‹ค_๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— ๊ฐ€์žฅ ์˜๋ฏธ ์žˆ๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ€๋ฒผ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. restore , build , test ๋ฐ pack ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ •์˜๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์ „ํ˜€ ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ _without_ ์ผํ•  ์ˆ˜์žˆ์„ ๋•Œ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผํ•œ๋‹ค ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์€ ๊ธฐ๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ธฐ๋ณธ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ •์˜์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณด๊ณ  "์ด์— ๋Œ€ํ•ด ์ง€๋Šฅ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"๋ผ๊ณ  ๋ฌผ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 80%์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ 20%์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋” ๋งŽ์€ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (์ฃผ์˜: ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋น„์œจ์— ๋Œ€ํ•œ ์˜๊ฒฌ์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

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

์ƒˆ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ MSBuild์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ (IMO) MSBuild์™€ ๊ฐ™์ด ๋‚ก๊ณ  ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋ถ€ํ’€๋ ค์ง„ ๊ฒƒ์ด ํ–ฅํ›„ ๋ชจ๋“  ๋นŒ๋“œ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์ „์ฒด .NET ๋„๊ตฌ์— ํฌํ•จ๋œ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ฒฝ์Ÿ์€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  MSBuild Github ๋ณด๋“œ์—์„œ ๊ทธ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‹ซํžŒ ์ œ์•ˆ์„ ๊ฒ€ํ† ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ด๋Ÿฌํ•œ "์Šฌ๋ฆฌ๋ฐ" ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ์‚ฌ๋žŒ๋“ค์ด project.json์—์„œ MSBuild๋กœ ์ด๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ MSBuild๋ฅผ "์ €์žฅ"ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹ค์ œ ๊ฒฝ์Ÿ๊ณผ ์„ ํƒ์— ๊ฐœ๋ฐฉํ•˜๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๊ฐ•๋ ฅํ•œ ๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž(์˜ˆ, ๊ฐ•๋ ฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค)๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ด๋ฅผ ๋ฒ•์ •ํ™”ํ๋กœ ๊ฐ•์ œํ•˜๋ฉด ์ด์— ๋Œ€ํ•œ ๋ถ„๋…ธ๊ฐ€ ๋”์šฑ ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์„ฑ๊ณต์„ ์œ„ํ•œ ๋น„๋ฒ•๋„ ์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘ ๋Š” .NET์ด ์„ฑ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ €๋Š” .NET์„ _์‚ฌ๋ž‘_ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” C#์ด ํ˜„์กดํ•˜๋Š” ์ตœ๊ณ ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ Scala - The Good Partsโ„ข๋กœ์˜ ๋Š๋ฆฐ ์ „ํ™˜์„ ์ฆ๊ฒผ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ .NET Core๋กœ ์ƒˆ๋กญ๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ๊ตฌ์‹ .NET์˜ ์ตœ์•…์˜ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜(IMO)์— ์†๋ฐ•ํ•จ์œผ๋กœ์จ ๊ทธ๊ฒƒ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ, MSBuild, ํ•˜์ง€๋งŒ ์•„๋‹ˆ์˜ค, ๊ทธ๊ฒƒ์— ์†๋ฐ•๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ผญ ์ง€ํ‚ค๋˜, ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์— ๋‚ด์žฅ๋œ ์ „๋ฉด๊ณผ ์ค‘์•™์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด ๊ฟˆ์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ(MSBuild๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด)์€ Roslyn์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…๊ณผ ๋Œ€์ƒ์„ ํŒŒ์•…ํ•˜๋ฏ€๋กœ F#์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค(๋˜๋Š” C# ๋˜๋Š” VB.NET, Roslyn์ด ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ํ•ด๋‹น ๋นŒ๋“œ ์‹œ์Šคํ…œ์— ๋งค์šฐ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์˜ ํ™•์žฅ์„ฑ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณต๊ธ‰์ž ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ/๋ชจ๋ธ?! ์ฒœ์žฌ! ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค.

Btw, ์›ํ•˜๋Š” ๊ฒƒ์„ ์–ป๊ณ  ์ž์‹ ์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์„... BERSERKER BUILD๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค! "Berzerker @shederman"์˜ ์ด๋ฆ„์„ ๋”ฐ์„œ ๋ช…๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค... ๋‹น์‹ ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ณ„๋ช…์ž…๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

@Mike-EEE ๋„ˆ๋ฌด ํฅ๋ถ„ํ•˜์ง€ ๋งˆ์„ธ์š”. ๋‚˜๋Š” _์•„์ง_ ๊ทธ ๋ชจ๋“  ๊ฒƒ๋งŒํผ ๊ณผ๊ฐํ•œ ๊ฒƒ์„ ๊ฒฐ์ฝ” ์ œ์•ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ 3๋‹จ๊ณ„์— ๋Œ€ํ•œ MSBuild ์ง€์›๊ณผ ํ•จ๊ป˜ 1๋‹จ๊ณ„์™€ 2๋‹จ๊ณ„์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ๋Š” ๋ฃจํŠธ ์‹œ์Šคํ…œ์ด _is_ ๊ฐ•๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฑ„ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MS ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ(๊ณ ํ†ต์„ ๋ฌด์‹œํ•˜๊ณ ) ๋น„ MS ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์‚ฌ๋žŒ๋“ค์„ ์„ค๋“ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ๋Œ€ํ™”์ž…๋‹ˆ๋‹ค.

์ด ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๊ธฐ์— ์ ํ•ฉํ•œ ์žฅ์†Œ์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์•„์ง ๋•Œ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์–ด๋–ค ๋ฐฉํ–ฅ์ด ๊ฐ€๋Šฅํ•œ์ง€ ๋ณด๊ธฐ ์ „์— ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์„œ์ปค ๋นŒ๋“œ! "Berzerker @shederman"์˜ ์ด๋ฆ„์„ ๋”ฐ์„œ ๋ช…๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค... ๋‹น์‹ ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ณ„๋ช…์ž…๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

์–ด๋–ค ๋Š๋‚Œ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰

๋ฒ„์„œ์ปค๊ฐ€ ๋˜๋ ค๊ณ  ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•ž์œผ๋กœ _ํ•˜๊ณ  ์žˆ์—ˆ์„ ๋•Œ_ ๋’ค๋กœ ์›€์ง์ด๊ณ  ์‹ถ์ง€ ์•Š์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ์•„๋งˆ๋„ ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜๋Š” ๋Œ€์‹ ( nuget.json ๋˜๋Š” ๋ฌด์—‡์ด๋ผ๊ณ  ๋ถ€๋ฅด๋“  ๊ฐ„์—) ๋Œ€๋ถ€๋ถ„์˜ ์ข…์†์„ฑ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ์กด์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ค‘์‹ฌ ์†”๋ฃจ์…˜์ธ Paket ์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.

  1. ์ „์ด์  ์ข…์†์„ฑ์˜ ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. MsBuild์™€ ์ž˜ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค.
  3. ์ข…์†์„ฑ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ํ˜•์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  4. packages.config ์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค.
  5. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋งŽ์€ ๊ธฐ๋Šฅ(๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๋ช…ํžˆ ์ด 4๊ฐ€์ง€๊ฐ€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ Git ์ข…์†์„ฑ ๋˜๋Š” ๋” ๋‚˜์€ ํŒจํ‚ค์ง€ ํ•ด๊ฒฐ ์ „๋žต๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์€ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค)

@Krzysztof-Cieslak์€ Microsoft๊ฐ€ MSbuild ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ์ถ”์ง„ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” MSBuild์— ๋งŽ์€ ํˆฌ์ž๋ฅผ ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ž„์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ ์—์„œ Paket์€ project.json(๋˜๋Š” project.yaml ๋˜๋Š” project.cs ๋“ฑ)๋ณด๋‹ค ๋‚ซ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

@neoKushan ์˜ˆ, ํ•˜์ง€๋งŒ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ "

@shederman ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด "

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ๋‹จ์ง€ ํ•œ ๋‚ด๊ฐ€ ์ผ์„ ํ•  ์ˆ˜์žˆ์–ด ๋‚˜๋Š” ํ–‰๋ณต ํ•ด์š”, ์ „ํ˜€ MSBuild๋ฅผ ํ•„์š”๋กœํ•˜์ง€ ์•Š๋Š” ์žฅ์†Œ์— ๊ฒฝ๋Ÿ‰ ๋นŒ๋“œ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์›ํ•˜๋Š” ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์ž์ฒด ์ฐธ์กฐ "MSBuild every" ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•œ๋‹ค๋ฉด csproj๋Š” RichiCoder ์ œ์•ˆ ๊ณผ ๊ฐ™์€ project.json์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด "์ฝ”์–ด ๋นŒ๋“œ"์™€ "MSBuild"๊ฐ€ ๋‚˜๋ž€ํžˆ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ MSBuild ์—†์ด ์ฝ”์–ด ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ถ„๋ช…ํžˆ project.json์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์œผ๋ฉด csproj์—์„œ๋„ ํ”„๋กœ์ ํŠธ ์†์„ฑ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์•„์ฃผ ์‰ฌ์šด ๋ณ€๊ฒฝ. ๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ์กด dotnet-build ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ํŠน์ •(๋ฏธ์ •) ์ƒํ™ฉ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” DotNet ํ•ต์‹ฌ ํŒ€ ๊ณ„ํš์— ๋”ฐ๋ผ MSBuild๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • VS๊ฐ€ ํ”„๋กœ์ ํŠธ ์†์„ฑ์— ๋Œ€ํ•ด project.json ๋˜๋Š” MSBuild๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • MSBuild์— project.json ๊ฐ€์ ธ์˜ค๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

๊ฝค ์ ์€ ์–‘์˜ ์ž‘์—…์œผ๋กœ Microsoft๋Š” "์˜์›ํ•œ MSBuild" ๊ฒฝ๋กœ๋ฅผ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ .NET Core ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ์•ฝ์†์„ ์ง€ํ‚ค๋ฉฐ MSBuild์—์„œ ์˜ตํŠธ์•„์›ƒํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

asp.net ํšŒ์› ์ค‘ ๋ˆ„๊ตฌ๋„ ์—ฌ๊ธฐ์—์„œ ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•œํŽธ, ๋‚˜๋Š” ASP.NET Community Standup โ€“ 2016๋…„ 5์›” 10์ผ ์˜

@rhires ๋‚ด๊ฐ€ ์ดํ•ดํ•œ

๋‚˜๋Š” ๋‹น์‹ ์˜ project.json ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ RC2 ๋ณ€๊ฒฝ์„ ๊ฒช๊ณ  "ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ"๋ฅผ ๋„ฃ์—ˆ์œผ๋ฏ€๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. _BUT_, ๊ทธ๋“ค์˜ ๋งˆ์Œ์€ ์™„์ „ํžˆ project.json์„ ์ œ๊ฑฐํ•˜๊ณ  MSBuild-first ์„ธ๊ณ„๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฐ ์™„์ „ํžˆ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

MS๊ฐ€ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด json ํŒŒ์ผ์˜ ์ฃผ์„์„ "๋‹จ์ˆœํžˆ" ํ—ˆ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ (์œ ๋ช…ํ•œ ๋งˆ์ง€๋ง‰ ๋‹จ์–ด)

๊ทธ๋“ค์ด ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ์ด์œ ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ JSON.Net์€ ์ฃผ์„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ project.json์€ ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ { "BuildSystem" : "MSBuild" } ํ•ญ๋ชฉ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž์ฒด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์ง€์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ™•์‹คํžˆ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๊ทธ ๋ฐ˜๋Œ€๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๊นŒ?

@neoKushan :

Microsoft๊ฐ€ MSbuild ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ์ถ”์ง„ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” MSBuild์— ๋งŽ์€ ํˆฌ์ž๋ฅผ ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ ์—์„œ Paket์€ project.json(๋˜๋Š” project.yaml ๋˜๋Š” project.cs ๋“ฑ)๋ณด๋‹ค ๋‚ซ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Paket์€ ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์•„๋‹ˆ๋ผ MsBuild์™€ 100% ํ˜ธํ™˜๋˜๋Š” ์ข…์†์„ฑ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. packages.config ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

@Krzysztof-Cieslak ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ์ฃผ์žฅํ•œ ์ ์ด ์—†์œผ๋ฉฐ ์ข…์†์„ฑ ๊ด€๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ .net ์ฝ”์–ด์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค(์ตœ์†Œํ•œ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ). .net ์ฝ”์–ด๋Š” packages.config ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  project.json ํ•ฉ๋‹ˆ๋‹ค.

.Net Core๊ฐ€ ์—ฌ์ „ํžˆ project.json ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ณ„ํš๋˜์–ด ์žˆ์—ˆ๋‹ค๋ฉด ์ด 100๊ฐœ ๊ฒŒ์‹œ๋ฌผ ํ† ๋ก ์„ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ;) ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ ์ข…์†์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด "nuget.json"์„ ์‚ฌ์šฉํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์™„์ „ํžˆ ๋™์ผํ•œ ์ œํ’ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@shederman

"์ตœ์ข… ์„ค๋ฌธ ์กฐ์‚ฌ ๊ฒฐ๊ณผ: 95% ์‹ ๋ขฐ๋„์—์„œ ยฑ10%์ธ 9๋ฐฑ๋งŒ .NET ๊ฐœ๋ฐœ์ž ๋ชจ์ง‘๋‹จ์— ๋Œ€ํ•ด 100๊ฐœ์˜ ์‘๋‹ต์ด ์žˆ์Šต๋‹ˆ๋‹ค."

์˜ˆ, ์ปจํผ๋Ÿฐ์Šค์—์„œ ๊ฐœ๋‚˜ ๊ณ ์–‘์ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์• ์™„ ๋™๋ฌผ์ธ ๊ณ ์–‘์ด ์žฅ๋‚œ๊ฐ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณด๋ฉด ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@darrelmiller

"MSBuild์™€ Visual Studio๊ฐ€ ํ˜„์žฌ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ˆ˜๋…„๊ฐ„ MSBuild ํŒŒ์ผ์„ ์ง์ ‘ ํŽธ์ง‘ํ•ด ์™”์œผ๋ฉฐ ์ด๋ฅผ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: https://github.com/tavis- ์†Œํ”„ํŠธ์›จ์–ด/Tavis.home/blob/master/build/Build.proj "

๋ช…๋ น์ค„์—์„œ msbuild๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์œ„์— VS ํŠน์ • ๋นŒ๋“œ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ด ๋ณผ๊นŒ์š”?

@gregoryyoung ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— devenv์— ์˜์กดํ•˜๋Š” ๋นŒ๋“œ ํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ๋ช…๋ น์ค„์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํŒŒ์ผ์€ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์˜ˆ?

@gregoryyoung

์˜ˆ, ์ปจํผ๋Ÿฐ์Šค์—์„œ ๊ฐœ๋‚˜ ๊ณ ์–‘์ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์• ์™„ ๋™๋ฌผ์ธ ๊ณ ์–‘์ด ์žฅ๋‚œ๊ฐ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณด๋ฉด ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ๋น„์œ ์ž…๋‹ˆ๋‹ค. ์ œ์™ธํ•˜๊ณ ...

MSBuild๋กœ์˜ ์ด์ „์„ _์ง€์›ํ•œ_ ์‚ฌ๋žŒ๋“ค์˜ Twitter ํ”ผ๋“œ์— ๋งํฌ๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ๋Š” ๊ท€ํ•˜์˜ ๋น„์œ ์™€ ์ „ํ˜€ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„ค๋ฌธ์กฐ์‚ฌ๊ฐ€ ์ž˜๋ชป๋œ ํฌ๋Ÿผ์—์„œ, ๋˜๋Š” ๋น„๊ณผํ•™์ ์œผ๋กœ ํŽธํ–ฅ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ณ„์†๋˜๋Š” ๋น„๋ฐฉ์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์งˆ๋ฌธ์€ ์ฃผ๋„์ ์ด์ง€ ์•Š์•˜๊ณ  ๋‹ต๋ณ€์€ ๊ด‘๋ฒ”์œ„ํ•œ ์‘๋‹ต์„ ํ–ˆ์œผ๋ฉฐ ์„ค๋ฌธ์กฐ์‚ฌ๋Š” ์Šค์Šค๋กœ ์„ ํƒํ•œ ์ฒญ์ค‘์ด์—ˆ์ง€๋งŒ ์ ์–ด๋„ ์ด๋ก ์ƒ์œผ๋กœ๋Š” ๋‚ด ๊ด€์ ์—์„œ _๋ฉ€๋ฆฌ_ ํŽธํ–ฅ๋˜์–ด์•ผ ํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์ฒญ์ค‘์ด์—ˆ์Šต๋‹ˆ๋‹ค.

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

ํ†ต๊ณ„์ ์œผ๋กœ ๊ฐ€์žฅ ํ™•์‹คํ•˜๊ฒŒ _is_ ํ•˜๋ฉฐ, ์˜๊ฒฌ์ด ์–ด๋””์— ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ข‹์€ ์ง€ํ‘œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. GitHub, gitter, Twitter, ๋ธ”๋กœ๊ทธ๋Š” ๋ชจ๋‘ ์ด๋ฅผ ์–ด๋Š ์ •๋„ ๋’ท๋ฐ›์นจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ง์„ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ฆ๊ฑฐ ์ถœ์ฒ˜. ์ค‘์š”ํ•œ ์‚ฌ์šฉ์ž์˜ ์˜๊ฒฌ์„ ๋ฌด์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜์‹ญ์‹œ์˜ค. "์ž˜๋ชป๋œ" ์˜๊ฒฌ์„ ์ฃผ์žฅํ•˜๋ฉด ์ž์‹ ์˜ ์˜๊ฒฌ์„ ๋งํ•  ๊ถŒ๋ฆฌ๋ฅผ ์ƒ์‹คํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ˜๋Œ€๋ฅผ ๋ฌผ๋ฆฌ์น˜๋ ค๋Š” ์‹œ๋„๋ฅผ ์ค‘๋‹จํ•˜์‹ญ์‹œ์˜ค.

๋˜๋Š” ๋‚ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋งํ–ˆ๋“ฏ์ด ๋‚ด ์„ค๋ฌธ์กฐ์‚ฌ์—์„œ ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•˜๋Š” ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์„ค๋ฌธ ์กฐ์‚ฌ๋ฅผ ํ•œ ์ด์œ ๋Š” Microsoft๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์Šจ ์ƒ๊ฐ์„ ํ•˜๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ด ์™„์ „ํžˆ ๋ช…๋ฐฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์™„์ „ํžˆ ๋ช…๋ฐฑํ•ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๊ทธ๋“ค์ด ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์— _๊ด€์‹ฌ_์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž์‹ ๊ณผ ์ง€์—ญ ์‚ฌํšŒ์— ๋ถ€์ •์งํ•˜์ง€ ๋ง๊ณ  ๋ฐ˜๋Œ€๋ฅผ ํ”๋“ค์ง€ ๋ง๊ณ  ์ฐธ์—ฌํ•˜์‹ญ์‹œ์˜ค.

์‚ฌ์‹ค์„ ๋ฐ”๊พธ๋ ค๋Š” ์‹œ๋„๋ฅผ ๋ฉˆ์ถ”๊ณ  ์‚ฌ์‹ค์— ๊ทผ๊ฑฐํ•˜์—ฌ ๋งˆ์Œ์„ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค.

@shederman Microsoft ํŒ€์ด ์ด ์Šค๋ ˆ๋“œ(๊ท€ํ•˜์˜ ์„ค๋ฌธ ์กฐ์‚ฌ ํฌํ•จ)์— ์‹ค์ œ๋กœ ๋‹ต๋ณ€ํ–ˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ํŒ€์˜ ํ•œ ์‚ฌ๋žŒ์ด ๋‹น์‹ ๋งŒํผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ํ˜„์žฌ ๊ทธ๋“ค์ด ๊ฐ€๊ณ  ์žˆ๋Š” ๊ธธ์— ๋Œ€ํ•œ ์—„์ฒญ๋‚œ ๋ฐ˜๋Œ€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๊ณ  ๊ทธ๋“ค์ด ์ทจํ•ด์•ผ ํ•  ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ๋“ค์ด ๋” ๋งŽ์ด ์•Œ๊ฒŒ ๋˜๋ฉด ์šฐ๋ฆฌ์—๊ฒŒ ์‘๋‹ตํ•  ๊ฒƒ์ด๋ผ๋Š” ํฌ๋ง์ด ์—ฌ์ „ํžˆ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ํŒ€์— ์•ฝ๊ฐ„์˜ ์‹ ์šฉ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ;).

@gregoryyoung ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ง์”€ํ•˜์‹  ์œ ์ถ”๋กœ ๋งด๋Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@sandorfr

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ํŒ€์— ์•ฝ๊ฐ„์˜ ์‹ ์šฉ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์ง€๋‚œ ๋ฉฐ์น  ๋™์•ˆ์˜ ๊ฒฝํ—˜์€ ๊ทธ ํฌ๋ง์„ ๊ฐ•ํ™”ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

'ํŒ€' ํƒ“์ด ์•„๋‹ˆ๋ผ, ์กฐ์ง์˜ ์ƒ์œ„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋Ÿฐ ๊ฒฐ์ •์„ ํ•˜๊ณ  ๋‚ด๋ ค๋†“์€ ๊ฑด๋ฐโ€ฆ ๊ทธ๋Ÿฐ ๋‹ค์Œ 'ํŒ€'์ด ๊ทธ๊ฑธ ๋นจ์•„๋“ค์ด๊ณ  ์˜ˆ์˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค. BTDT. ์žฌ๋ฏธ ์—†์–ด.

project.json์ด ๋น„ ASP.NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ข€ ๋” ํ˜ธํ™˜๋˜๋„๋ก ์ตœ๊ทผ ์— ์ด๋ฏธ

๊ฑฐ๊ธฐ์—์„œ "๊ณ ์ „์ ์ธ" csproj ํŒŒ์ผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‚˜์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ๋ฉ€๋ฆฌ ํ™•์žฅ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  csproj ์ž์ฒด๊ฐ€ project.json์—์„œ ๋ฐฐ์šด ๋” ์œ ์—ฐํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์กฐ๊ธˆ ๋ฐœ์ „ํ•œ๋‹ค๋ฉด ์‹ค์ œ๋กœ "์ƒˆ๋กญ๊ณ  ๊ฐœ์„ ๋œ" csproj๊ฐ€ ์ •๋ง ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ project.json์— ๋Œ€ํ•œ ์ตœ๊ทผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด _๋ชจ๋“ _ ์ข…๋ฅ˜์˜ .NET ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ณผ์ •์˜ ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•„๋‹ˆ์—ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET(Core) ์ด์™ธ์˜ ๋‹ค๋ฅธ ๋งŽ์€ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ํŒŒ์ผ ํ˜•์‹์ด JSON, XML ๋˜๋Š” ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํƒ€๋‹นํ•œ ์ด์œ ๋กœ ํ•˜๋‚˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฒฐ๊ตญ ์—๋Š” ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋‚ด์—์„œ ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์‹ถ์€์ง€ ์ƒ๊ฐํ•ด์•ผ

์‚ฌ๋žŒ๋“ค์ด project.json์„ ์ƒ๊ฐํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„ ๊ตฌ์„ฑ๋ณด๋‹ค ๊ด€๋ก€๊ฐ€ ๋งŽ์€ ์ดˆ๊ธฐ ๋‹จ๊ณ„ ๋ฅผ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๊ทธ๊ฒƒ์€ ๋งค์šฐ ํ›Œ๋ฅญํ–ˆ์ง€๋งŒ ASP.NET Core์—๋งŒ ๊ตญํ•œ๋˜์–ด ๋งค์šฐ ์ œํ•œ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋Œ€์ƒ์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ˆ˜๋…„ ๋™์•ˆ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ํ™•์žฅํ•˜๊ณ  ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฉด์—์„œ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, tl;dr: ์˜ˆ, ์ €๋Š” project.json์„ ์ •๋ง ์ข‹์•„ํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ASP.NET Core์šฉ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ํŠน๋ณ„ํ•œ MSBuild ์ž‘์—… ์‚ฌ์šฉ). ํ•˜์ง€๋งŒ ๋™์‹œ์— ์™œ ์ง€๊ธˆ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ๊ทธ๋“ค์ด ํ•˜๋Š” ํ–‰๋™์ด ๋‚˜์œ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํƒ€์ด๋ฐ์ด ์กฐ๊ธˆ ์ด์ƒํ•˜๊ธด ํ•˜์ง€๋งŒ ASP.NET Core ๋ฐ .NET Core ๋ฆด๋ฆฌ์Šค์™€ ๋ณ‘ํ–‰ํ•˜์—ฌ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ํƒ€์ด๋ฐ์ด ์‹ค์ œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ์ „ํ™˜์ด ์›ํ™œํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ).

ํ”„๋กœ์ ํŠธ ๊ฐ„์— ์†Œ์Šค ํŒŒ์ผ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

@darrelmiller ์ด๊ฒƒ์€ .csproj์˜ ๋ชฉ๋ก ํŒŒ์ผ์ด ๋‹ค์‹œ ๋Œ์•„์˜ค๊ณ  ์žˆ์Œ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์„ญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

@lokitoth csproj๊ฐ€ ํŒŒ์ผ ์ฐธ์กฐ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด project.json๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ glob์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐœ๋ณ„ ํŒŒ์ผ ์ฐธ์กฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

@shederman ์ €๋Š” MS ์ง์›์ด ์•„๋‹ˆ๋ผ ํ•ฉ๋ฆฌ์ ์ธ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ์ €๋ฅผ ๊ตฌ๊ธ€๋งํ•˜์‹œ๋ฉด ์ œ๊ฐ€ ์ด ํ”Œ๋žซํผ์— ์žฅ๊ธฐ์ ์œผ๋กœ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์‹ค ๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ๋งŽ์€ ์ฐฌ๋ฐ˜ ์–‘๋ก ์ด ์žˆ์ง€๋งŒ ๊ท€ํ•˜๊ฐ€ ์ œ๊ณตํ•œ ๋‚ด์šฉ์€ ์ •์ƒ์ ์ธ ํ† ๋ก ์— ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋“ฃ๊ธฐ๋งŒ ํ•ด๋„ ์‹ค๋ง์Šค๋Ÿฌ์šด ๋ณ€ํ™”์˜€์Šต๋‹ˆ๋‹ค. project.json, ์ž๋™ ํŒŒ์ผ ํฌํ•จ/๊ธ€๋กœ๋น™ ๋ฐ ์ „์ด์  ๋ณต์›์€ ASP.NET Core์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋กœ ์ €๋ฅผ "์˜ค, ๋ฉ‹์ง€๋‹ค!"ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—.

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

๊ทธ๋ƒฅ ๋‚ด 2 ์„ผํŠธ.

@poke ๊ฒŒ์‹œ๋ฌผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ csproj๋ฅผ json์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

Compile, Embed, CopyToOutput, Exclude, Shared Files ๋“ฑ์˜ ์˜ต์…˜์„ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉด ์‹ค์ œ๋กœ json ํ˜•์‹์€ ์–ด์จŒ๋“  XML๋ณด๋‹ค ๋” ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ json์ด ๋ฌด๊ฑฐ์šด ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ์ž ์ •์˜์— ๋Œ€ํ•ด ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ์ž˜ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ํ”„๋กœ๋•์…˜์— ์•„์ง ๋ฐ˜์ฏค ๊ตฌ์šด ์†”๋ฃจ์…˜์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ํŒ€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋ฟ์ž…๋‹ˆ๋‹ค.

@gregoryyoung ๋‹น์‹ ์ด ์ œ๊ณตํ•œ ๊ฒƒ์€ ์ •์ƒ์ ์ธ ํ† ๋ก ์— ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ. ์ข‹์•„, ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ์ œ๊ณตํ–ˆ๋Š”์ง€ ๋ณด์ž.

  • ๋‚˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ XML๋กœ์˜ ์ด๋™์— ๋Œ€ํ•ด ๋ถˆํ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” MSBuild๋กœ์˜ ์ด๋™์— ๋Œ€ํ•ด ๋ถˆํ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ๊ฒฐ์ •์˜ ๋ฐฐํ›„์— ์žˆ๋Š” ์ด์œ ์™€ ์ฆ๊ฑฐ๋ฅผ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” _๋˜ํ•œ_ ์‹ค์ œ๋กœ ์ œ๊ณต๋˜์ง€ ์•Š์€ ๊ฒฐ์ • ๋’ค์— ์ˆจ๊ฒจ์ง„ _์ƒ๊ฐ_์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜๊ฒฌ์„ ์š”์ฒญํ–ˆ์ง€๋งŒ MS๋Š” ์ „ํ˜€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ด์œ ๋ฅผ ์ œ์‹œํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ—ˆ์šฉํ•˜๋ฉด์„œ๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ฆ๊ธฐ๋Š” ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋Œ€์•ˆ์„ ์ƒ๊ฐํ•ด๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ƒ๊ธฐ ๋Œ€์•ˆ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒ ๋‹ค๊ณ  ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋ฏธ์นœ ๋ถ€๋ถ„์ด ๊ถ๊ธˆํ•ด์„œ ์—ฌ์ญค๋ด๋„ ๋ ๊นŒ์š”? ์š”์ฆ˜ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ƒ๊ฐ์„ ๋ฌป๋Š” ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๊ฑฐ๊ธฐ์— ๋ญ”๊ฐ€๋ฅผ ๋‚จ๊ฒจ ๋†“์•˜์Šต๋‹ˆ๊นŒ?

๋‚ด ๋ง์€, ๋‚ด๊ฐ€ ํ™”๊ฐ€ ๋‚ฌ์–ด์š”, ์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. ๋‚˜๋Š” ์„ฑ๊ธ‰ํ•˜๊ณ  ์ œ๋Œ€๋กœ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ์›€์ง์ž„์œผ๋กœ ๋ณด์ด๋Š” ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ๋นผ์•—๊ธด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•ต์‹ฌ ์•ฝ์†์„ ์ค‘์‹ฌ์œผ๋กœ ๋งŽ์€ ์ž‘์—…, ์‹œ๊ฐ„ ๋ฐ ๋ˆ์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™”๋ฅผ ๋‚ผ _๊ถŒ๋ฆฌ_๊ฐ€ ์—†๋Š”๊ฐ€?

์ถ”์‹ . ์•„, ๋‹น์‹ ์ด ๋ฐ”๋กœ ๊ทธ๋ ‰ ์˜์ž…๋‹ˆ๋‹ค. ์กด๊ฒฝ. ๋‹น์‹ ์˜ ์ผ์„ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง์ด์•ผ.

@bzbetty ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณด๊ณ  ์‹ถ์€ ๊ฒƒ์€ MSBuild๋ฅผ project.json์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ํ˜•ํƒœ์˜ MSBuild์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” _ํ”„๋กœ์ ํŠธ ์ •์˜_๋ฅผ _๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค_์™€ ๊ฒฐํ•ฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ project.json์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ MSBuild/VS๊ฐ€ ์ €์ง€๋ฅธ ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ •์˜๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์™€ ๋ณ„๋„๋กœ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์งˆ๋ฌธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ์ง์ ‘ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•๋ ฅํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์—ฐํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€ ์•Š์€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์ •๋ง๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„ฃ์–ด. ๊ทธ๋Ÿฐ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ ์ •์˜์™€ ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ _๊ฐ€์ง€๊ณ  ์žˆ๋Š”_ ๊ฒฝ์šฐ MSBuild ๋˜๋Š” NAnt ๋“ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ, ์•„๋งˆ ์•„๋‹๊ฑฐ์•ผ, ๊ทธ๋ ‡์ง€? ๋ณต์žก์„ฑ์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š” ์ด์œ ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํšจ๊ณผ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ์‹ค์Šต์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์€ ์ผ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ„๋‹จํ•œ "์ •์˜ ์ž‘์„ฑ" ๋„๊ตฌ๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด? ๋ฌผ๋ก  _๊ทธ๋ ‡๋‹ค๋ฉด_ ๊ทธ๋Ÿด ๊ฒ๋‹ˆ๋‹ค.

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

๋น„๋ˆ„ ์ƒ์ž

์ œ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์•ฝ๊ฐ„์˜ ์—ฐ๊ตฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Twitter, Slack, Github, Gitter, Jabbr์„ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋˜ํ•œ ์นœ MSBuild ์ง„์˜์˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ƒ๋Œ€๋ฐฉ์ด ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ์–ป๊ฑฐ๋‚˜ ๋” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๊ฒฉ์ด ์—†๋‹ค๊ณ  ์ถ”๋ก ํ•˜๋Š” ๊ฒฝํ–ฅ์— ์ƒ๋‹นํžˆ ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ pro-project.json ์ง„์˜์—์„œ ์ข‹์ง€ ์•Š์€ ๋™๊ธฐ๋ฅผ ์ถ”๋ก ํ•˜๋Š” ๊ฒฝํ–ฅ๊ณผ ์ผ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค(์ €๋ฅผ ํฌํ•จํ•˜์—ฌ, mea culpa).

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ๋žŒ๋“ค์€ ์ž์‹ ์˜ ์˜๊ฒฌ๊ณผ ๋‹ค๋ฅธ ์˜๊ฒฌ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์ด ์ •๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์†์ด๊ฑฐ๋‚˜, ๋ฌด๋Šฅํ•˜๊ฑฐ๋‚˜, ๊ณต๋ชจํ•˜๊ฑฐ๋‚˜, ๋ฏธ์ณค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ผ ์ฃผ์žฅ ๊ณผ ์ฆ๊ฑฐ ๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ์‚ฌ๋žŒ
  • ์ œ๊ณต๋œ ์ฆ๊ฑฐ๋Š” ํ™•๊ณ ํ•œ ์ด์œ  ์—†์ด ์ฆ‰์‹œ ๊ธฐ๊ฐ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์ธ์ˆ˜
MSBuild๋กœ์˜ ์ด๋™์— ๋Œ€ํ•ด ๊ณ ๊ธ‰ํ™”๋œ ์ฃผ์š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋„๊ตฌ ์ง€์› - ์„œ๋กœ ๋‹ค๋ฅธ ๋„๊ตฌ(์˜ˆ: VS, VSCode, Xamarin ๋“ฑ) ๊ฐ„์˜ ์™•๋ณต์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด ํˆฌ์ž - ๋Œ€๊ทœ๋ชจ ๊ณ ๊ฐ์€ ํ๊ธฐํ•  ์—ฌ์œ ๊ฐ€ ์—†๋Š” ๊ธฐ์กด ๋นŒ๋“œ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • "๊ทผ์œก ๊ธฐ์–ต" - ์‚ฌ๋žŒ๋“ค์€ MSBuild์— ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€ ์ฃผ์žฅ

  • ๊ธฐ์กด ํˆฌ์ž - .NET Core ๋„๊ตฌ์— ๋Œ€ํ•œ ํˆฌ์ž: RC ์ดํ›„. RC _should_๋Š” ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • CSProj/MSBuild ๋ถˆ์พŒํ•œ - csproj ๋ฐ MSBuild๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์˜ ๊ณผ๊ฑฐ ๋ถ€์ •์ ์ธ ๊ฒฝํ—˜
  • ๋’ค๋กœ ๋‹จ๊ณ„ - project.json์œผ๋กœ ์ด๋™์€ ๋ถ€๋ถ„์ ์œผ๋กœ ์ƒˆ๋กœ์šด ์„ธ๋Œ€์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ์–ด๋“ค์ด๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ž‘์—… ๋ฐฉ์‹์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ทจ์†Œ ์ค‘์ž…๋‹ˆ๋‹ค

์˜๊ฒฌ
์ „์ฒด SurveyMonkey ๊ตฌ๋…๋ฃŒ๋ฅผ ์ง€๋ถˆํ•˜์—ฌ ์ „์ฒด ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(100๊ฐœ 100๊ฐœ๊ฐ€ ์•„๋‹Œ). 321๊ฐœ์˜ ์‘๋‹ต์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ 9๋ฐฑ๋งŒ ์ธ๊ตฌ์— ๋Œ€ํ•ด ยฑ5.5% ์˜ค์ฐจ ํ•œ๊ณ„, 95% ์‹ ๋ขฐ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

์ด ์„ค๋ฌธ์กฐ์‚ฌ์— ๋Œ€ํ•ด ์ œ๊ฐ€ ๋“ค์€ ์ผ๋ฐ˜์ ์ธ ์ฃผ์žฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค:
image
image
image
image
image

.NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ๋ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ํ˜ธ์†Œํ•˜๋Š” ๋ฐ”๋Š” ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์šฐ๋ ค์˜ ์ˆ˜์ค€์„ ๊ณผ์†Œํ‰๊ฐ€ํ•˜์ง€ ๋ง๊ณ , ๋ฌธ์ œ๊ฐ€ ์œ ํšจํ•˜๊ณ  ์ •๋ณด์— ์ž…๊ฐํ•œ ๊ฒฝํ—˜์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .

๊ทธ๋ฆฌ๊ณ  ๊ฒฐ์ •์ด ๊ณ„์† ์ง„ํ–‰๋œ๋‹ค๋ฉด ์ง€๊ธˆ๊นŒ์ง€๋ณด๋‹ค ๋” ๋‚˜์€ ์ถ”๋ก ๊ณผ ์ฆ๊ฑฐ๊ฐ€ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Man @shederman ์€ Silverlight๊ฐ€ ๊ทธ๊ฒƒ์„ ๋จน์—ˆ์„ ๋•Œ ์ €์™€ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์ƒ๊ฐ๋‚˜๊ฒŒ ๊ฒฝ์šฐ ๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๋ฅผ ์ง€์ง€ํ•˜๋Š” ์ด์œ ์ผ ๊ฒƒ์ด๋‹ค :100:%! ใ…‹.

ํ˜„์žฌ ํ˜•ํƒœ์˜ MSBuild์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ํ”„๋กœ์ ํŠธ ์ •์˜๋ฅผ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์™€ ๊ฒฐํ•ฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ project.json์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ MSBuild/VS๊ฐ€ ์ €์ง€๋ฅธ ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ •์˜๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์™€ ๋ณ„๋„๋กœ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

:+1: :+1: :+1: ... ๋ฌธ์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํƒ์›”ํ•œ ๋ฐฉ๋ฒ•!!! ์•Œ๋‹ค์‹œํ”ผ, ๋‚˜๋Š” ์ด๊ฒƒ์— ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ์ฝ”๋ฅผ ๊ฐ€๋‘์–ด ์™”๊ณ  ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์‹ค์ œ๋กœ ์ผ์–ด๋‚œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ (๋‹ค์‹œ) 100% ์š”์ ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” csproj ํŒŒ์ผ์ด ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์–ด๋ ค์šด ํ…์ŠคํŠธ์˜ ๋ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Š” ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋”˜๊ฐ€์— ์•ก์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค, @nbarbettini! ๋‚ด ๊ฐ์ •๋„ ์™„๋ฒฝํ•˜๊ฒŒ ํฌ์ฐฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ํŒŒ์ผ ํ˜•์‹์ด JSON, XML ๋˜๋Š” ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ด์— ๋”ฐ๋ผ MSBuild๋Š” ๊ทธ ์ž์ฒด๋กœ XML์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š์ง€๋งŒ ๋””์ž์ธ๋œ ๋ฐฉ์‹์€ "๋ชจ๋ธ"์ด ์ด ํ˜•์‹์œผ๋กœ ์„ค๋ช…๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ "๋ชจ๋ธ"์ด๋ผ๊ณ  ๋งํ•˜๋Š” ์ด์œ ๋Š” ๋‘ ์‹œ์Šคํ…œ ๋ชจ๋‘ ๊ถ๊ทน์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์—ญ์ง๋ ฌํ™”๋˜๋Š” ์‹ค์ œ ๋ชจ๋ธ/API ์•ž์— ๋ฌธ์„œ ๋ชจ๋ธ์„ ๋ฐฐ์น˜ํ•˜๋Š” ์„ค๊ณ„ ๊ฒฐํ•จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์•„ํ‹ฐํŒฉํŠธ์™€ ๊ฐœ๋…์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ์‹œ์Šคํ…œ์ด ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ํŠน์ • ํ˜•์‹(XML ๋˜๋Š” JSON)๋งŒ ํ—ˆ์šฉํ•˜๋„๋ก ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋ฉด ์ƒํ™ฉ์ด ์•…ํ™”๋  ๋ฟ์ด๋ฏ€๋กœ ์ด ์ œ์•ฝ์„ ์™„ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค์‹œ ๋ชจ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌํ•˜ํŠผ, ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ์ ˆ๋ฆ„๋ฐœ์ด ์ผ์š”์ผ ์•„์นจ PSA. :stuck_out_tongue:

์ด ์Šค๋ ˆ๋“œ์˜ ์–ด๋””์—๋„ ๊ฒŒ์‹œ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์—ˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค... https://youtu.be/N9MteJH-HsQ. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@shederman

"ํฅ๋ถ„ํ•ด์„œ ์—ฌ์ญค๋ด๋„ ๋ ๊นŒ์š”? ๋ฏธ์นœ ๋ถ€๋ถ„์ด ๋ญ์ฃ ? ์š”์ฆ˜์€ ๋‚จ์˜ ์ƒ๊ฐ์„ ๋ฌผ์–ด๋ณด๋Š” ๊ฒŒ ๋น„ํ•ฉ๋ฆฌ์ ์ธ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋‚จ๊ฒจ๋‘” ๊ฑด๊ฐ€์š”?"

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

๋‚ด ์ „ํ™”์˜ GitHub์—์„œ๋Š” @gregoryyoung์„ +1ํ•  ์ˆ˜ ์—†์ง€๋งŒ +1ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์€ ๋ณ€ํ™”์˜ ์›์ธ ์ค‘ ์ผ๋ถ€๊ฐ€ Xamarin ์ธ์ˆ˜๋ผ๊ณ  ์„ค๋ช…ํ–ˆ๋Š”๋ฐ ์ด๋Š” ํฐ ์ผ์ž…๋‹ˆ๋‹ค. .NET, ASP.NET ๋ฐ Xamarin ๋ชจ๋ฐ”์ผ/x-plat ํ”„๋กœ์ ํŠธ ๊ฐ„์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์€ ์—„์ฒญ๋‚˜๋ฉฐ ์ด๊ฒƒ์ด ํ”„๋กœ์ ํŠธ/๋นŒ๋“œ ํŒŒ์ผ ํ˜•์‹์„ ์†์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด IMHO๋ฅผ ๊ฑฐ๋ž˜ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ตœ์ข… ์˜๊ฒฌ์„ ํ˜•์„ฑํ•˜๊ธฐ ์ „์— ๋„๊ตฌ์™€ ์ตœ์ข… ํŒŒ์ผ ์„ค์ •์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์ง€์ผœ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@gregoryyoung ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž ์ง‘๋‹จ์œผ๋กœ ์ถ”์ •ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค... ํฌ๊ณ  ๋ช…๋ฐฑํ•œ ํ‘œ๋ณธ ํŽธํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ํ‘œ๋ณธ ํŽธํ–ฅ์ด ๋ ๊นŒ์š”? ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ _์ข‹์•„ํ•˜๋Š”_ ์‚ฌ๋žŒ๋“ค์˜ Twitter ํ”ผ๋“œ์— ์ฃผ๋กœ ๊ฒŒ์‹œ๋œ ๊ณณ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? dev ํŒ€์ด ์‚ฌ์šฉํ•˜๋Š” slack ์ฑ„๋„์— ์žˆ์—ˆ๋˜ ๊ณณ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ๋ณด๋Š” ์ฃผ์š” ์ƒ˜ํ”Œ ํŽธ๊ฒฌ์€ ์‘๋‹ต์ž๊ฐ€ ์•„๋งˆ๋„ ์ฐธ์—ฌํ•˜๊ณ , ์ •๋ณด๋ฅผ ์•Œ๊ณ , ์—ด์ •์ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋Œ€ํ‘œ์ ์ธ ํ‘œ๋ณธ์€ ์•„๋‹ˆ์ง€๋งŒ ์ค‘์š”ํ•œ ํ‘œ๋ณธ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ‘œ๋ณธ ํŽธํ–ฅ์ด ์žˆ๋”๋ผ๋„ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„๋ ค์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ์‘๋‹ต์ž์˜ ๊ด€์ ์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ ์š”?

322๋ช…์˜ ์ „๋ฌธ .NET ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๊ฒฌ์„ ํ‘œ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‹น์‹ ์„ ๋’ท๋ฐ›์นจํ•  ์–ด๋–ค ์ฆ๊ฑฐ๋„ ์—†์ด) ๊ทธ๊ฒƒ์ด ๋Œ€ํ‘œ์„ฑ์ด ์—†๋‹ค๊ณ  ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋“ค์˜ ์˜๊ฒฌ์„ ์™„์ „ํžˆ ๋ฌด์‹œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ถ„๋ช…ํžˆ ๋‹ค์Œ ์ฃผ์— ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์˜ฌ๋ผ์˜ฌ ๊ฒƒ์ด๋ฉฐ ๊ทธ๋•Œ ๋” ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„ ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‚ฌ๋žŒ๋“ค์€ ์ •์‹ ์„ ์ฐจ๋ ค์•ผ ํ•ด์š”:)

๋‚˜๋Š” ์ด ๋ณ€ํ™”๊ฐ€ ํฐ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋œ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŒ€์ด cli๋„ ํฌํ•จํ•˜๋Š” "๋„๊ตฌ"์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ๋ณ€ํ™˜์€ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ "๋„๊ตฌ"์ธ cli์—์„œ๋„ ์ˆ˜ํ–‰๋˜๋ฉฐ, json ๋˜๋Š” xml์— ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋ฉฐ cli์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธ€๋กœ๋น™์€ ์ด๋ฏธ msbuild์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. Msbuild๋Š” ๋ถ„๋ช…ํžˆ don't sdk์— ํฌํ•จ๋  ๊ฒƒ์ด๋ฏ€๋กœ ์ถ”๊ฐ€ ์„ค์น˜๊ฐ€ ์—†๊ณ  ์ƒˆ ํ”„๋กœ์ ํŠธ ์Šคํ† ๋ฆฌ๋„ ๋™์ผํ•˜๋ฉฐ dotnet ๋ช…๋ น์€ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. (์ €๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์•„ ๋ณด์ž…๋‹ˆ๋‹ค)

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

์‚ฌ๋žŒ๋“ค์ด ์ ์–ด๋„ ๊ทธ ์›€์ง์ž„์„ ์™„์ „ํžˆ ๋น„๋‚œํ•˜๊ธฐ ์ „์— ์‹ค์ œ ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ๊ธฐ๋‹ค๋ ค ์ฃผ์…จ์œผ๋ฉดํ•ฉ๋‹ˆ๋‹ค.

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

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

๊ทธ๋“ค์ด ์ œ์•ˆํ•˜๋Š” ๋‚ด์šฉ์„ ํ™•์ธํ•œ ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ํŠน์ • ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜์‹ญ์‹œ์˜ค. :)

@aL3891

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

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

์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์–ป๋Š”๋‹ค๋ฉด, ๋‚˜์—๊ฒŒ์„œ +10.

@aL3891 ๋น ๋ฅธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์š”์ผ ์Šคํƒ ๋“œ์—…์— ์ฐธ์„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

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

@khellang์ด ๊ฒŒ์‹œํ•œ YouTube ๋น„๋””์˜ค๋ฅผ

๊ฒŒ๋‹ค๊ฐ€, ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ๋งค๋ ฅ์ ์ด์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ์˜ณ์€ ์ผ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์„ ๋•Œ...๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ์œ ์‚ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

๋ฐ˜๋ฉด์— ๋‚ด๊ฐ€ ์–ด๋”˜๊ฐ€์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋†“์นœ ๊ฒƒ์€ ์•„๋‹๊นŒ?

@shederman ์ €๋Š” ๊ธฐ๋“๊ถŒ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์ด ์Šคํƒ ๋“œ์—…์— ์ฐธ์„ํ•˜๊ณ  ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ(๊ฑฐ์˜ ํ™•์‹คํžˆ ์—ฌ๊ธฐ์— ๋งํฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค)์„ ์ฃผ์‹œํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ ๋“œ์—…์„ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์€ ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค: https://live.asp.net/

์บ˜๋ฆฐ๋”์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ์ ํŠธ ์ •์˜ ๋ณ€๊ฒฝ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@shederman ์ €๋Š” ์ œ๊ฐ€ ๋ˆ„๊ตฌ์—๊ฒŒ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๋งํ•  ๊ถŒํ•œ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ œ๊ฐ€ ๋ฌด์—‡์„ ํ• 

์œ„์— ๋งํฌ๋œ ์ตœ์‹  on.net ์—ํ”ผ์†Œ๋“œ ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋งŽ์€ ์กฐ์น˜๋ฅผ ์ทจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ€์žฅ ๋†’์€ roslyn ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ on.net ์—ํ”ผ์†Œ๋“œ์— TL;DR์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ด€ํ•œ ๋น„๋””์˜ค๋ฅผ ๋ณด๋Š” ๊ฒƒ์„ _์‹ซ์–ดํ•˜๋Š”_ ๋งค์šฐ ์ด๋ก€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋“  ๋ฌธ์ž์ฃผ์„ธ์š”๐Ÿ˜„

๋นŒ์–ด๋จน์„ ์ง€์˜ฅ๋ถˆ! ์ €๋Š” ํ•™์Šต ๋ฐฉ๋ฒ•์— ์žˆ์–ด์„œ IDE๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๐Ÿ˜ฑ

๋‚˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ด€ํ•œ ๋น„๋””์˜ค๋ฅผ ๋ณด๋Š” ๊ฒƒ์„ ๋งค์šฐ ์‹ซ์–ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ๋ฌธ์ž ์ฃผ์„ธ์š” :์Šค๋งˆ์ผ:

๋ญ๊ฐ€ ๋ฌธ์ œ ์•ผ? ์‹œ๊ฐ„์€ _๋‹จ_ ํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. :์ด๋ฅผ ๋“œ๋Ÿฌ๋‚ด๊ณ  ์›ƒ๋‹ค:

@rhires

๋…€์„. ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„ ์ง€๋‚œ 3์ผ ๋™์•ˆ ์ด ๋ฌธ์ œ์— ๊ด€ํ•ด ๋ณธ ๊ฐ€์žฅ ์ข‹์€ ๊ฒŒ์‹œ๋ฌผ ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ตœ์ฒจ๋‹จ ๊ธฐ์ˆ ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ์ž‘์€ ๊ฐ€๊ฒฉ์ด์ง€๋งŒ ๊ฐ์ž์˜ ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ;)

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

๊ทธ๋ž˜์„œ ๋Œ€์‹  ๊ทธ๋“ค์€ msbuild๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์„ ํƒํ–ˆ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ์ƒˆ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ํƒ€์ด๋ฐ์— ๊ด€ํ•ด์„œ๋Š”, RC1์ด ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ๋„ xamarin ์ธ์ˆ˜๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋งŽ์€ ๊ฒƒ์„ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์ด project.json์„ ๋งค์šฐ ์ข‹์•„ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ msbuild๊ฐ€ ๋Œ€์ƒ์„ ํ†ตํ•ด project.json ํŒŒ์ผ๋„ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Cli ๋ฐ VS-less ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ํ•ต์‹ฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ ๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ์ด์•ผ๊ธฐํ•˜๋ฉฐ ๋ชฉํ‘œ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒฝ์šฐ msbuild ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์—ฌ๊ธฐ์— ๋” ๋ฏธ์„ธํ•œ ํฌ์ธํŠธ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@aL3891 ์š”์•ฝ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ตœ์ฒจ๋‹จ ๊ธฐ์ˆ ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ์ž‘์€ ๊ฐ€๊ฒฉ์ด์ง€๋งŒ ๊ฐ์ž์˜ ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ;)

์•„,ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์ถœํ˜ˆ ๊ฐ€์žฅ์ž๋ฆฌ์— ์•„๋‹ˆ์—์š”, ๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ ์•ฝ๊ฐ„์˜ ๋’ท๋ฉด์„ ์œ ์ง€. ๋‚˜ ์ž์‹ ์„ ์ž๋ฅด์ง€ ์•Š์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋’ค๋กœ, ๋˜๋Š” ์ ์–ด๋„ RC1 ์ดํ›„ .NET Core๋ฅผ ์ฑ„ํƒํ–ˆ์„ ๋•Œ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@shederman ์€ "post-RC1"์ด ๊ธฐ๋ณธ์ ์œผ๋กœ nightlies ๋˜๋Š” ์†Œ์Šค๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์Šคํ…Œ์ดํฌ๋ฅผ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์ข‹์•„ํ•ฉ๋‹ˆ๊นŒ?

@neoKushan ์ €๋Š” RC1์ด ์ถœ์‹œ๋œ ์ดํ›„์— .NET Core๋ฅผ "์ฑ„ํƒ*ํ–ˆ์Šต๋‹ˆ๋‹ค*. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋ฐ”๋‹๋ผ RC1์„ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์Šคํ…Œ์ดํฌ๋ฅผ ๋ฏธ๋””์—„ ๋ ˆ์–ด๋กœ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์š”๋ฆฌํ•˜์ง€ ์•Š์€ ํ•œ ์กฐ๊ฐ์œผ๋กœ ์ž๋ฅด๊ณ  ์›จ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ์†Œ๋ฆฌ์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์›จ์ดํ„ฐ์— ๋Œ€ํ•œ ์ „ํ™”๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์ด์ œ maitre'd(Microsoft ๊ทธ๋ฃน Microsoft ํŒŒํŠธ๋„ˆ ๋‹ด๋‹น์ž)์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑธ์–ด ์ €๋ฅผ ๋งŒ๋‚˜๋Ÿฌ ์™€์„œ ์˜์‚ฌ ๊ฒฐ์ •, ์ •๋ณด ๋ณด๊ธ‰ ๋ฐ ํ”Œ๋žซํผ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅธ๋‹ค!

์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํ•œ ์ •๋ณด, ๋„ˆ๋ฌด ๋งŽ์€ ์ด๋ก ๊ณผ ์ถ”์ธก์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒŒ์œผ๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๋น ๋ฅธ ์š”์•ฝ:

์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ

  1. xproj๋Š” csproj๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  2. nuget.json ํŒŒ์ผ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์šฐ๋ฆฌ๋Š” msbuild ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ด๊ฒƒ์€ ๋ชจ๋‘ ๋‹จ๊ณ„์ ์œผ๋กœ ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  5. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  6. csproj์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ง€์ •ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์•„์ง ๋ชจ๋ฅด๋Š” ๊ฒƒ

  1. csproj๊ฐ€ .nupkg๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๊นŒ?
  2. csproj๊ฐ€ x86/x64 dotnet/dotnetcore์—์„œ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋Œ€์ƒ์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๊นŒ?
  3. ๋ณ„๋„์˜ nuget.config ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
  4. npm/gulp/bower/etc.๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๊นŒ?
  5. dotnet build ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ msbuild ์žˆ์Šต๋‹ˆ๊นŒ? ์ €๋Š” @shanselman์ด ์—ด๋งํ•˜๋Š” 'ํ•˜๋‚˜์˜ .net'์„
  6. ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ์šฉ ์ธํ…”๋ฆฌ์„ผ์Šค๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์‚ฌ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๊นŒ?
  7. VS ๋„๊ตฌ ๋˜๋Š” ๋ช…๋ น์ค„์ด csproj๋ฅผ ํŽธ์ง‘ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ข‹์Šต๋‹ˆ๊นŒ?
  8. dotnet add reference MyAssembly ๋„๊ตฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” @shanselman์ด ์—ด๋งํ•˜๋Š” 'ํ•˜๋‚˜์˜ .net'์„

์ด๊ฑฐ ? :์Šค๋งˆ์ผ: :+1: :+1: :+1:

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜์ง€๋งŒ... ๊ทธ๋Ÿผ ๋‚œ ๋‚ด ์ธ์ƒ์„ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ??? :์šธ๋‹ค::์›ƒ๋Š”๋‹ค:

@RehanSaeed

"์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ" ๋ชฉ๋ก์— ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ ค ์‚ฌํ•ญ์„ ์ œ๊ธฐํ•˜๊ธฐ ์ „์— "์•„์ง ๋ชจ๋ฅด๋Š” ๊ฒƒ" ๋ชฉ๋ก์ด ๋ช…ํ™•ํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๋‹ฅ์น˜๊ณ  ๋นจ์•„์•ผ ํ• ๊นŒ์š”?

๋งŽ์€ ๋ถ„๋“ค์ด ์›ํ•˜์‹œ๊ฒ ์ง€๋งŒ... ๐Ÿ˜‰

๋‚ด๊ฐ€ ๋ณธ ๋ชจ๋“  ๊ฒƒ์—์„œ ๊ฒฐ์ •์€ 100%์ด๋ฉฐ ๋‹ค์Œ์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

image

๊ทธ๋ ‡๋‹ค๋ฉด "์šฐ๋ฆฌ๊ฐ€ ์•„์ง ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ"์—์„œ ๋” ์ด์ƒ ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

@shederman On.Net ๋น„๋””์˜ค๋ฅผ ๋ณด๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฒฐ์ • ๋’ค์— ๋งŽ์€ ์ถ”๋ก ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

fyi: ์ €๋Š” ๋ณดํ†ต ๋” ๋นจ๋ฆฌ ๋ณด๊ธฐ ์œ„ํ•ด ์†๋„๋ฅผ 1.5๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. https://www.youtube.com/watch?v=N9MteJH-HsQ

XML ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋„๊ตฌ๊ฐ€ ํŒŒ์ผ ๋‚ด์šฉ์„ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ˆœ์„œ๋กœ ๋ฐฐ์น˜ํ•˜๋„๋ก ์ œ์•ˆ/๊ถŒ๊ณ /์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "์‹œ๊ฐ„์ˆœ"์€ ํ—ˆ์šฉ๋˜๋Š” ์ˆœ์„œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ proj ํŒŒ์ผ์—์„œ ๋ฐœ๊ฒฌํ•œ ๊ฐ€์žฅ ํฐ ๊ณ ํ†ต์€ ํŒŒ์ผ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ, ์—ฌ์ „ํžˆ ๊ฐ€๋” ๋ณ‘ํ•ฉ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ "ํŽธ์žฌํ•˜๋Š”" ๋Œ€์‹  "๊ฐ€๋”"์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@MelGrubb ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” ์ƒˆ ํ”„๋กœ์ ํŠธ ๋ ˆ์ด์•„์›ƒ์ด ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๋‚˜์—ดํ•˜์ง€ ์•Š์œผ๋ฉฐ project.json์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์†์œผ๋กœ ๊ด€๋ฆฌํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ TOML๋กœ ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค.

JSON์€ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. XML๋ณด๋‹ค ํ›จ์”ฌ ๋œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์€ RC2 ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค(์•„์ง ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์—†์Œ).

https://www.microsoft.com/net/core#windows

๋ฐ https://www.microsoft.com/net/download#core

๋‚ด 2์„ผํŠธ, fwiw:

๋‚˜๋Š” project.json์˜ ๋‹จ์ˆœํ•จ์„ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ MSBuild ๊ธฐ๋ฐ˜ ๋„๊ตฌ์—์„œ ๋ณด๊ณ  ์‹ถ์€(๊ทธ๋ฆฌ๊ณ  ์›ํ•˜์ง€ ์•Š๋Š”) ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • MSBuild๋Š” VS ๋˜๋Š” ๋‹ค๋ฅธ IDE/ํŽธ์ง‘๊ธฐ์— ์—ฐ๊ฒฐ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ž์ฒด์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋„๊ตฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” dotnet cli ์„ค์น˜์˜ ์ผ๋ถ€๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.) ์ด ๋ง์€ ๋‹จ์ง€ MSBuild๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋นŒ๋“œ ์—์ด์ „ํŠธ์— ์ „์ฒด VS ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๊ฒฐ์ฝ” ์˜๋ฏธ๊ฐ€ ์—†์—ˆ๋‹ค.
  • MSBuild(๋˜๋Š” MSBuild๊ฐ€ ํฌํ•จ๋œ dotnet cli) ์ž์ฒด๋Š” apt-get, chocolately, homebrew, powershell ๋˜๋Š” bash/curl ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์—์ด์ „ํŠธ์˜ ์™„์ „ ์ž๋™ํ™”๋œ ์„ค์ •(์˜ˆ: circle.yml ๋˜๋Š” Dockerfile)์˜ ์ผ๋ถ€๋กœ ์ด๊ฒƒ์„ ์„ค์น˜ํ•  ์ˆ˜ ์—†์œผ๋ฉด ์žฅ์• ๋ฌผ์ด ๋˜๊ณ  ๊ณ ํ†ต์˜ ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค.
  • MSBuild๋Š” ๋ช…๋ น์ค„์— ๋งค์šฐ ์นœ์ˆ™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ปค๋งจ๋“œ ๋ผ์ธ์—์„œ ๋ฌด์—‡์ด๋“  ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ circle.yml, bash ๋˜๋Š” ๊ธฐํƒ€ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  stdin๊ณผ stdout์„ ์ž˜ ์‚ฌ์šฉํ•˜์—ฌ MSBuild ๋ช…๋ น์„ ํŒŒ์ดํ”„ ์ธ/์•„์›ƒํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • VS Code(๋˜๋Š” ๋‹ค๋ฅธ ๋น„ VS ํŽธ์ง‘๊ธฐ)์—์„œ .NET Core ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•  ๋•Œ csproj ํŒŒ์ผ์ด๋‚˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ VS ๊ด€๋ จ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ •๋ณด, ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€ ์ข…์†์„ฑ, ํ”Œ๋žซํผ ๋Œ€์ƒ, ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ ๋“ฑ์€ ๋‹ค๋ฅธ IDE/ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๊ฐ„์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ VS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์€ VS ๋„๊ตฌ ์„ค์ •์„ ๋ณผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์†์œผ๋กœ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„๊ตฌ๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํŒŒ์ผ์„ ์—ด๊ณ  ๋„๊ตฌ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋Šฅ/๋Šฅ๋ ฅ์— ์ฐจ์ด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ xml๋ณด๋‹ค json์— ๋Œ€ํ•œ ๊ฐ•ํ•œ ๊ฐœ์ธ์  ์„ ํ˜ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ json์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์Šคํƒ์—์„œ ์˜ค๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ ์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํ•ด๋…ํ•˜๊ธฐ ์–ด๋ ค์šด ํฐ XML ํŒŒ์ผ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ณด์ง€ ์•Š๊ณ  .NET์œผ๋กœ ๋Œ์–ด๋“ค์ด๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์ธ ๊ฒƒ๋ณด๋‹ค ๋” ๊ฐ์„ฑ์ ์ด์ง€๋งŒ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.) ์ตœ์†Œํ•œ json์„ ์˜ต์…˜์œผ๋กœ ๋งŒ๋“ค๊ณ  yoman Generator ๋ฐ ๊ธฐํƒ€ ์ƒˆ ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ์—์„œ ํ•ด๋‹น ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ MSBuild ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ฐ„๋‹จํ•œ json ํ˜•์‹์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ถˆ๊ฐ€ํ”ผํ•œ pull ์š”์ฒญ์„ ๋นจ๋ฆฌ ์ˆ˜๋ฝํ•˜์‹ญ์‹œ์˜ค.
  • npm ์Šคํƒ€์ผ์˜ "์Šคํฌ๋ฆฝํŠธ"๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋ฏ€๋กœ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋””๋ฒ„๊ทธ, ๋นŒ๋“œ, ์‹คํ–‰, ๋„์ปค ๋นŒ๋“œ/์‹คํ–‰ ๋“ฑ์— ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์„ ํŒ€๊ณผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ์ž์ฒด ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์˜ ์ผ๋ถ€๋กœ (์ €์—๊ฒŒ๋Š”) ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@jtbennett

"ํ•˜์ง€๋งŒ VS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์€ VS ๋„๊ตฌ ์„ค์ •์„ ๋ณผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์€ ๋ณ„๋„์˜ ํŒŒ์ผ์— ์†ํ•ฉ๋‹ˆ๋‹ค."

์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ œ msbuild ํŒŒ์ผ์— ๋„ฃ์–ด์•ผ ํ•  ๋‹ค๋ฅธ ํŒŒ์ผ์—๋„ ๋งŽ์€ ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์‹œ๋œ ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ๊ณ„์† ์ง€์›๋œ๋‹ค๋Š” ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. VS์—์„œ ๋นŒ๋“œํ–ˆ์ง€๋งŒ ๋ช…๋ น์ค„์—์„œ๋Š” ๋ณผ ์ˆ˜ ์—†๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@jtbennett

MSBuild๋Š” VS ๋˜๋Š” ๋‹ค๋ฅธ IDE/ํŽธ์ง‘๊ธฐ์— ์—ฐ๊ฒฐ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

VS์— ์ „ํ˜€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ณ  Nuget์„ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์•„๋ฌด ๊ฒƒ๋„ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MSBuild(๋˜๋Š” MSBuild๊ฐ€ ํฌํ•จ๋œ dotnet cli) ์ž์ฒด๋Š” ๋ช…๋ น์ค„๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜ค๋Š˜๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ผ๋ฐ˜์ ์ธ ํŒจํ‚ค์ง€ ์†Œ์Šค๋ฅผ ํ†ตํ•ด ์—ฌ์ „ํžˆ dotnet cli๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MSBuild๋Š” ๋ช…๋ น์ค„์— ๋งค์šฐ ์นœ์ˆ™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

_MSBuild_๋Š” ํšจ๊ณผ์ ์œผ๋กœ ๋นŒ๋“œ ์ž์ฒด์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ dot(CLI)๋Š” ๋ถ„๋ช…ํžˆ ๋ช…๋ น์ค„ ์นœํ™”์ ์ด๋ฉฐ ์ด๊ฒƒ์ด ๋‹น์‹ ์ด ์›ํ•˜๋Š”/ํ•„์š”ํ•œ ์ „๋ถ€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

VS Code(๋˜๋Š” ๋‹ค๋ฅธ ๋น„ VS ํŽธ์ง‘๊ธฐ)์—์„œ .NET Core ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•  ๋•Œ csproj ํŒŒ์ผ์ด๋‚˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ VS ๊ด€๋ จ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ์™„์ „ํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. "์ƒˆ๋กœ์šด" ํ”„๋กœ์ ํŠธ ํ˜•์‹์ด ํ›จ์”ฌ ๋” ๋‹จ์ˆœํ™”๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์†์œผ๋กœ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์ด๊ฒƒ์ด ๊ทธ๋“ค์—๊ฒŒ๋„ ์šฐ์„ ์ˆœ์œ„๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ/๋Šฅ๋ ฅ์— ์ฐจ์ด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ xml๋ณด๋‹ค json์— ๋Œ€ํ•œ ๊ฐ•ํ•œ ๊ฐœ์ธ์  ์„ ํ˜ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ json์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์Šคํƒ์—์„œ ์˜ค๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ ์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํ•ด๋…ํ•˜๊ธฐ ์–ด๋ ค์šด ํฐ XML ํŒŒ์ผ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ณด์ง€ ์•Š๊ณ  .NET์œผ๋กœ ๋Œ์–ด๋“ค์ด๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

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

์ผํ™”์ ์œผ๋กœ, ๋‚˜๋Š” ์ตœ๊ทผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ JSON์„ XML ์š”์†Œ์— ํฌํ•จ์‹œํ‚ค๋ ค๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

RC2 ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์˜ฌ๋ผ์™”์Šต๋‹ˆ๋‹ค: https://blogs.msdn.microsoft.com/webdev/2016/05/16/announcing-asp-net-core-rc2/

.net ์ฝ”์–ด ๊ฒŒ์‹œ๋ฌผ๋„ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-net-core-rc2/

@neoKushan ๊ฐ์‚ฌ

@michaelvolz ๋‚˜๋Š” https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/specs/runtime-configuration-file .md

System.GC.Server(์ด์ „: gcServer) - ์„œ๋ฒ„ GC๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€์šธ(๊ธฐ๋ณธ๊ฐ’: true).

๊ทธ๋ฆฌ๊ณ 

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

_project config_์—๋Š” XML์ด ์žˆ์ง€๋งŒ _runtime config_์—๋Š” .json์ด ์žˆ๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์—๋Š” XML์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋Ÿฐํƒ€์ž„์—๋Š” .json์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๊นŒ?

์ง€๊ธˆ ํ•ฉ๋‹ˆ๊นŒ? :์›ƒ์Œ:

@Mike-EEE ์ข‹์€ ์ง€์ ! ๋‚˜๋Š” ๋‚ด๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค:ํ‚ค์Šค:

@neoKushan ์•„๋‹ˆ ์ฒ˜์Œ์—๋Š” ๋‹น์‹ ์ด ์˜ณ์•˜์Šต๋‹ˆ๋‹ค. :smile: ๋‚˜๋Š” ๋‚ด ๋ƒ‰์†Œ์ ์ด๊ณ  ๊ฒฝ๊ณ„์„ ์— ๋น„์ƒ์‚ฐ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋‹น์‹ ๊ณผ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. :smirk_cat:

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

๋‚˜๋Š” ๋‹น์‹ ์˜ ์„ฑ์Šค๋Ÿฌ์šด ์„ฑ์ „ @Mike-EEE์˜ ์ถ”์ข…์ž๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” msbuild์— ๋ฌถ์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @sandorfr ... ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ์— ์ž์œ ๋กญ๊ฒŒ ๊ธฐ์—ฌํ•ด ์ฃผ์„ธ์š”(๋ฆฌ์•ก์…˜/:+1:์ด๋”๋ผ๋„). ๋‚˜๋Š” ๊ทธ๊ณณ์—์„œ ์•ฝ๊ฐ„ ์™ธ๋กœ์šด ๋Š๋‚Œ์ด ๋“ค๊ณ  ํ™•์‹คํžˆ ๊ฒฝ์Ÿ์˜ ์˜์—ญ์œผ๋กœ ๊ฑธ์–ด๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๋‚ด ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ๋งŽ์€ ๊ณ ๊ฐ์ด ์–ด๋–ค ์ด์œ ์—์„œ๋“  ๋‚ด ์ œํ’ˆ์„ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ฑ„ํƒ/ํ˜ธ๊ฐ๋„/์‚ฌ์šฉ์„ฑ/ํ˜ธ๊ฐ๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‚ด ์ œํ’ˆ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋งค์šฐ ๊ฐœ๋ฐฉ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ฑ…์ž„์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ˆ๊นŒ. :stuck_out_tongue:

@Mike-EEE ์“ฐ๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ๋Š”๋ฐ ์ง€๊ธˆ ๋„ˆ๋ฌด ์šฐ์šธํ•ด์š”... ๋‹น์‹ ์€ ๋ ˆ๊ฑฐ์‹œ ๋งˆ์ธ๋“œ์˜ ๋ ˆ๊ฑฐ์‹œ ์„ธ๊ณ„์— ๋ฐœ์„ ๋“ค์˜€์Šต๋‹ˆ๋‹ค :D.

Microsoft์˜ ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ์•„์ด๋””์–ด์— ๋” ๊ฐœ๋ฐฉ์ ์ด๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ผ์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•ด Gui๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ msbuild๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์˜ˆ, json intellisense๊ฐ€ ํ›จ์”ฌ ๋” ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ Visual Studio ํ”„๋กœ์ ํŠธ ํƒญ๋ณด๋‹ค).

๋‹น์‹ ์€ ๋ ˆ๊ฑฐ์‹œ ๋งˆ์ธ๋“œ์˜ ๋ ˆ๊ฑฐ์‹œ ์„ธ๊ณ„์— ๋ฐœ์„ ๋“ค์˜€์Šต๋‹ˆ๋‹ค :D.

Wellllll-said @sandorfr ... wellllll-๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šคํƒ ๋“œ์—…์„ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์€ ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค: https://live.asp.net/

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

@Mike-EEE ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ์–ธ์  ๊ฐ€๋Š” ์˜ค๋Š˜ ๋ฐค์— ํ™•์‹คํžˆ ์˜ˆ์ •๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” @shanselman์„ ํŠธ์œ— ์˜€์œผ๋ฉด ์ข‹๊ฒ ์ง€ ๋งŒ RC2๊ฐ€ ์–ด์ œ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒˆ ์ฃผ์—๋Š” ๊ฑด๋„ˆ๋›ฐ๊ณ  ์‹ถ์–ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค์ผ€์ด ์ฟจ @neoKushan ... ์ œ ์ •์‹ ์ด ํ•œ ๋ฒˆ๋งŒ ๋จธ๋ฆฌ์—

์Šฌ๋ž™์—์„œ:

jongallowway [9:31 AM] ASP.NET Community Standup์ด ๋‚ด์ผ ์ทจ์†Œ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. shanselman๊ณผ damianedwards๋Š” ๋ชจ๋‘ OSCON์— ์žˆ์Šต๋‹ˆ๋‹ค.
...
davidfowl [9:34 AM] damianedwards: ๋Œ์•„์™”์ง€๋งŒ shanselman์€ oscon์— ์žˆ์Šต๋‹ˆ๋‹ค
...
jongloway [9:46 AM] ๋„ค, ASP.NET Community Standup์€ 5/17๋กœ ํ™•์‹คํžˆ ์ทจ์†Œ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@Mike-EEE๋Š” ์šฐ๋ฆฌ์˜ ๋ชจ๋“  ... ๋ถˆ๋งŒ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ˜†

image

์˜์‹ฌ์Šค๋Ÿฌ์šด ์ ์ด ๋‚จ์•„ ์žˆ๋Š” ๊ฒฝ์šฐ: https://twitter.com/shanselman/status/732585321775267842

๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” #vslive์™€ OSCON์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ์ธก๋ฉด์—์„œ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@pierrus ๋ชจ๋“  ํŒŒ์ผ์ด csproj ๋‚ด๋ถ€์— ๋‚˜์—ด๋˜์—ˆ๋˜ ์‹œ์ ˆ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@MaximRuiller OK, ๊ทธ๊ฒƒ์„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

@MaximRouillerํ•˜์ง€๋งŒ ๊ทธ๋“ค์€ ํ•  MSBuild์—์„œ์ด ์ ˆ๋Œ€ ๋ฐ˜์ง€ โ„ข, I ํ‰๊ท  ๋นŒ๋“œ ๋„๊ตฌํ–ˆ๋˜ ์ผ์— ๋‹ค์‹œ ๊ฐ€๊ณ  ์‹ถ์–ด. ๐Ÿ˜‰

_์• ์‰ฌ ๋ˆ„๋”ํ† ๊ทธ ๋ฒ ๊ฐˆ ๋”๋ฐ”ํˆด๋ฃจํฌ, ์• ์‰ฌ ๋ˆ„๋”ํ† ๊ทธ ๋ฒ ๊ฐˆ ๊น€๋ฐ”ํˆด,
์• ์‰ฌ ๋ˆ„๋“œํ† ๊ทธ vegal thrakatulรปk agh burzum-ishi krimpatul._

@shederman ์ €๋Š” ๋‰ด์Šค์— ๋Œ€ํ•œ ์ฒซ ๋ฐ˜์‘๋ถ€ํ„ฐ ์ œ ๊ด€์ ์„ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ๊ทธ๋“ค์€ ์ฒ˜์Œ์— project.json ํ˜•์‹์„ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ์›ํ–ˆ์ง€๋งŒ csproj/Xamarin์œผ๋กœ ๋ชจ๋ธ์„ ์ •๊ทœํ™”ํ•˜๋ ค๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋” ์˜ค๋ž˜ ํ‘ธ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋น ๋ฅธ ์ด๋“์€ csproj๋กœ ๋‹ค์‹œ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ csproj ๋‚ด๋ถ€์— ์ˆœ์ˆ˜ํ•œ "๋ฐ์ดํ„ฐ๋งŒ"์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ณ„๋„์˜ ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋ฐฉ์‹์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ˆ˜ํ–‰๋œ RC2์˜ ๋ฐฉ๋Œ€ํ•œ ์ž‘์—…์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฑฐ์˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์†์„ฑ์„ ์ด๋™ํ•˜๊ณ  ๋ฉ‹์ง„ ์ƒˆ ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ํŒŒ์ผ์— ๋ณด๊ด€ํ•œ๋‹ค๋ฉด? ์šฐ๋ฆฌ๋Š” ์ •๋ง ์•„๋ฌด๊ฒƒ๋„ ์žƒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์šฐ๋ฆฌ๋Š” ๊ดด๋ฌผ์— ๋‹ค์‹œ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ์ง€์‹์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆœ์ „ํžˆ ์ œ ์ถ”์ธก์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“ ... ์šฐ๋ฆฌ๋Š” ๋” ์ด์ƒ ์—ฐ๊ฐ„ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ๋กœ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด project.json์—์„œ csproj post-RTM์œผ๋กœ ์ „ํ™˜ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ๋” ํฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด post-RTM์—์„œ๋„ ๋ฆด๋ฆฌ์Šค๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

MSํŒ€ ์™ธ์—๋Š” ์•„๋ฌด๋„ ๋ชจ๋ฅด๋Š” ๋ณ€ํ™”.

@MaximRuiller _ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”_ "๊ฐ€๋Šฅํ•œ" ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๋ฐœํ‘œ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜์—ฌ ๊ฒฝ๋Ÿ‰ ๋นŒ๋“œ์—์„œ ๋ชจ๋“  ๊ฒƒ์— MSBuild ๋ฐ xproj๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์šฐ๋ฆฌ๋Š” ๊ดด๋ฌผ์— ๋‹ค์‹œ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Œ, ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 90%์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ _์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”__ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ๊ฒƒ์œผ๋กœ _๋’ค๋กœ_ ์ด๋™ํ–ˆ๋‹ค๋ฉด, ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ๋งŒ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์™œ์š”?

msbuild ์ด๋ฏธ ์ด ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ dotnet build ๊ฐ€ MSBuild๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์™œ ๋‹จ์ˆœ ๋นŒ๋“œ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ถ”๊ฐ€ ์ž‘์—…์„ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์œ ์ผํ•œ ์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋ชจ๋“  ๊ฒƒ์— ํ•ญ์ƒ MSBuild๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 90%์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ

[์ธ์šฉ ํ•„์š”]

์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 90%๋ฅผ ๊ฐ€์ •ํ•˜๋”๋ผ๋„ 1/10์˜ ์‹œ๊ฐ„์— ์‹คํŒจํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ๊ฒƒ์œผ๋กœ ๋Œ์•„๊ฐ€๋‹ค

๋‹ค์‹œ [์ธ์šฉ ํ•„์š”], ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์•Œ๊ณ  ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์ด๊ฒƒ์ด XML-csproj์ด๊ณ  ํŒŒ์ผ ๋ชฉ๋ก์„ ํฌํ•จ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ

msbuild๊ฐ€ ์ด๋ฏธ ์ด ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•  ๋•Œ dotnet build๊ฐ€ MSBuild๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

MSBuild๊ฐ€ "์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๋‹ค"๋Š” ๋ง์—์„œ "MSbuild๋Š” ์ด๋ฏธ ์ด ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค"๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๊นŒ? ํ˜„์žฌ dotnet build ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  ์ผ์ด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ˆจ๊ฒจ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— _์‰ฝ๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค_. MSbuild๋กœ ์ „ํ™˜ํ•ด๋„ ์ด๊ฒƒ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์—ผ๋ คํ•˜๋Š” ํ•œ ์—ฌ์ „ํžˆ dotnet build ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ๊ณผ ๋นŒ๋“œ ์‹œ์Šคํ…œ ์‚ฌ์ด์— ๊ตฌ๋ณ„์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ณ„์† ๋งํ•˜๋Š” ์‚ฌ๋žŒ์˜ ๊ฒฝ์šฐ, ์‹ค์ œ๋กœ MSBuild XML ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ MSBuild๋ฅผ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ด๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ์ด๋ณ„์ด๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 90%์—์„œ ์ž‘๋™

@shederman ์ œ๋ฐœ ๋ชจ๋“  ๊ฒƒ์ด ASP.NET์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€

@shederman ๋ฌด์–ธ๊ฐ€ ์œ„์— ์‹ฌ์„ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” ๊ทธ๊ฒƒ์„ ๊ต์ฒดํ•˜๊ณ  ์‹ถ์„ ๋•Œ์ž…๋‹ˆ๋‹ค. ๊ตฌํ˜„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”ํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋งค์ผ ๊ทธ๊ฒƒ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ต์ฒด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. XML ์™ธ์—๋„ ์ œ ๊ธฐ์–ต์ด ๋งž๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฒƒ๋“ค์— ๋น„ํ•ด ๋Š๋ฆฐ ๊ฒƒ ๊ฐ™์•„์š”.

dotnet build ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์งˆ๋ฌธ์€ - ๋ฐ‘์ค„ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šธ๊นŒ์š”? msbuild๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋•ํŠธ ํ…Œ์ดํ”„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๊ฐ€ ๋•ํŠธ ํ…Œ์ดํ”„ 1๊ฐœ ๋˜๋Š” 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ถฉ๋ถ„ํžˆ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@neoKushan ์šฐ๋ฆฌ๋Š” MSBuild๊ฐ€ "์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๋‹ค"๋Š” ๋ง์—์„œ "MSbuild๋Š” ์ด๋ฏธ ์ด ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค"๋กœ

์Œ .. ์•„๋‹ˆ์•ผ. msbuild ๋ช…๋ น์ด MSBuild๋ฅผ ์•„์ฃผ ์ž˜ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š” MSBuild๋ฅผ ๋„๊ตฌ๋กœ ํŒ๋‹จํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

@neoKushan ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 90%๋ฅผ ๊ฐ€์ •ํ•˜๋”๋ผ๋„ 1/10์˜ ์‹œ๊ฐ„์— ์‹คํŒจํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์•„๋ฌด๋„ ์‹คํŒจ ์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„

@neoKushan MSbuild๋กœ ์ „ํ™˜ํ•ด๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Œ, ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ(์˜ˆ: csproj ํŒŒ์ผ)๊ณผ ์ˆ˜ํ–‰ ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

@neoKushan ๋‹น์‹ ์€ ์‹ค์ œ๋กœ MSBuild XML ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ MSBuild๋ฅผ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ถ„๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ๋„๊ตฌ๊ฐ€ ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@poke ๋ชจ๋“  ๊ฒƒ์ด ASP.NET์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€

๋‚œ ์•„๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์ด ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ASP.NET ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ฝ˜์†” ์•ฑ์—๋„ MSBuild์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@poke ๋‹น์‹ ์€ ์ด ์Šค๋ ˆ๋“œ์—์„œ ์˜๋„์ ์œผ๋กœ ๋ฌด์ง€ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ

๊ทธ๋Ÿฌ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์˜๋„์ ์œผ๋กœ ๋ฌด์ง€ํ•œ ๊ฒƒ์€ MSBuild ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๋†€๋ผ์šด ์ด์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@poke ๋ชจ๋“  ๊ฒƒ์ด

ํ˜•, ์ง„์ •ํ•ด์š” ์•ฝ์†ํ• ๊ฒŒ์š”.

๋‚˜๋Š” ๋‹จ์ง€ ๋‚ด๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ๊ด€์ ์ด ๋„์ „๋ฐ›์ง€ ์•Š๋„๋ก ๋†”๋‘์ง€ ์•Š์„ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋™์š”์˜ ํ‘œ์‹œ๊ฐ€ ์•„๋‹˜์„ ์•ฝ์†๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ง™์†Œ์‚ฌ, ์–ด๋–ค ๊ผฌ๋งน์ด _์‚ฌ๋žŒ_์ด ๋‚˜๋ฅผ ๋ฌด์ง€ํ•˜๋‹ค๊ณ  ๋ถˆ๋Ÿฌ๋„ ๋™์š”ํ•˜์ง€ ์•Š์•˜์–ด ๐Ÿ˜‰

์ด ๊ฐ™์€ ๊ผฌ๋งˆ

์ •๋ง ์žฌ๋ฏธ์žˆ๋‹ค.

@MaximRouiller @shederman ๋ฌด์–ธ๊ฐ€ ์œ„์— ์‹ฌ์„ ๊ตฌ์ถ•ํ•˜๋Š” ์ด์œ ๋Š” ๊ต์ฒดํ•˜๊ณ  ์‹ถ์„ ๋•Œ์ž…๋‹ˆ๋‹ค. ๊ตฌํ˜„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”

์•„ ์˜ˆ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ด์œ  dotnet build ๊ฐ€ ๊ธฐ์กด ๋ผ์ดํŠธ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ(์˜ˆ: config.xml)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ msbuild ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  msbuild .

์Œ .. ์•„๋‹ˆ์•ผ. ๋‚˜๋Š” msbuild ๋ช…๋ น์ด MSBuild๋ฅผ ์•„์ฃผ ์ž˜ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์ปจํ…์ŠคํŠธ์— ์ ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

dotnet ๋นŒ๋“œ๊ฐ€ MSBuild๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ด์œ 

dotnet build ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์•Š์Šต๋‹ˆ๋‹ค "๊ทธ๋ƒฅ", ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ˜ธ์ถœ DOTNET ๋นŒ๋“œ์˜ ํ˜„์žฌ CLI์˜ ๊ตฌํ˜„์„ ์‚ดํŽด . ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ dotnet build ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ _part_๋Š” msbuild ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ์ผ์ด ์•„๋‹ˆ๋ผ CLI์˜ ๋ชซ์ž…๋‹ˆ๋‹ค.

์ €๋Š” MSBuild๋ฅผ ๋„๊ตฌ๋กœ ํŒ๋‹จํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•œ ๋ชจ๋“  ์ž‘์—…์€ MSBuild๋ฅผ ๋„๊ตฌ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ทธ๋Ÿฐ ์ผ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์€ ์†”์งํžˆ ๋งํ•ด์„œ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

๋‹น์‹ ์ด ๋งํ•˜๋Š” ๋‚ด์šฉ ์ค‘ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ์ž˜ ์ƒ๊ฐํ•œ ๋‚ด์šฉ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์‹คํŒจ์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋„๊ตฌ๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ๋ณด๋‹ค ํŠน์ • ๋ชฉ์ ์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ผ๋ถ€ ๋„๊ตฌ๋Š” ๋ชฉ์ ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MSBuild์˜ ์„ฑ๋Šฅ๊ณผ ๋ณต์žก์„ฑ์€ ๋นŒ๋“œ์˜ ์•ฝ 10%์— ์ ํ•ฉํ•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  Visual Studio .net ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ MSBuild๊ฐ€ 90%์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๊ท€ํ•˜์˜ ์ˆ˜์น˜๋ฅผ ๋Œ์–ด๋‚ด๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฌด์‹œํ•˜๊ณ ). ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์Œ, ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์œ ์ผํ•œ ์ฃผ์žฅ์€ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, MSbuild ๋˜๋Š” ํ›„๋“œ ๋’ค์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์™„์ „ํžˆ ๊ด€๋ จ ์ด ์—†๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ•ญ๋ชฉ(์˜ˆ: csproj ํŒŒ์ผ)์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ ์‚ฌ๋žŒ๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•œ ์‹ค์ œ๋กœ ๋ณ€ํ•˜๋Š” ์œ ์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ˆ˜ํ–‰๋˜๋Š” ์†๋„.

[์ธ์šฉ ํ•„์š”]

ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ๋น ๋ฅด๊ฑฐ๋‚˜ ๋Š๋ฆฐ์ง€ ๋ณด์—ฌ์ฃผ์„ธ์š”.

์ฃ„์†กํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ๋„๊ตฌ๊ฐ€ ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋„๊ตฌ๊ฐ€ ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— MSBuild๊ฐ€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚œ ์•„๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์ด ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

dotnet new
dotnet restore
dotnet build

์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์ด "๋‹จ์ˆœ ๋นŒ๋“œ" ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ์„ธ์š”.

๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ASP.NET ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค.

yo asp-net web
dotnet restore
dotnet build

๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ฝ˜์†” ์•ฑ์—๋„ MSBuild์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹  ์€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. dotnet build ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์—ฌ์ „ํžˆ ๊ฐ€์ง€๊ณ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌํ‹€ ํŠธ์›Œํ”„

:-1:

@neoKushan ์ธ์šฉ๋œ ๋ฐœ์ทŒ๋ฌธ์— ๋Œ€ํ•œ ์‘๋‹ต๊ณผ ์ „์ฒด ํ† ๋ก ์— ๋Œ€ํ•œ ์˜๊ฒฌ ์‚ฌ์ด์˜ ๊ฐœ๋…์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ํ•  _๋Šฅ๋ ฅ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ๊ทธ๋ž˜์„œ ์œ ์ผํ•œ ๊ฒฐ๋ก ์€ ๊ทธ๊ฒƒ์ด ๊ณ ์˜์ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ง€์ ์œผ๋กœ ๋ถ€์ •์งํ•œ ์ „์ˆ ์ž„์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ์˜์‹ฌ์˜ ์ด์ ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ชจ๋“  Visual Studio .net ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

์›ƒ๊ธฐ๊ฒŒ๋„, ๋‚˜๋Š” ๋ญ”๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งํ•˜๋Š” ์ฆ๊ฑฐ ๋ฅผ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์–ด๋””์—์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

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

๋„ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•œ๋ผ๋ฉด ์ •๋ง ์ข‹์•„, ์ •๋ง ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ง ๋„ˆ๋ฌด ๋ฌด๋ฆฌํ•œ ์š”๊ตฌ์ธ๊ฐ€์š”? ์ง„์งœ?

๋‹น์‹ ์€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. dotnet ๋นŒ๋“œ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์—ฌ์ „ํžˆ ๊ฐ€์ง€๊ณ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  dotnet build ๋Š” ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ? msbuild ? MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ msbuild ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ ์ƒํ™ฉ์—์„œ dotnet build ์˜ ๋ชฉ์ ์€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋„๊ตฌ์— ๋ฌด์—‡์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๊นŒ?

๋ฆฌํ‹€ ํŠธ์›Œํ”„ ๐Ÿ‘Ž

์›ƒ๊ธฐ๋ ค๋Š” ์‹œ๋„์ง€๋งŒ ์•„๋งˆ๋„ ๋‹น์‹ ์ด ์˜ณ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@poke ๋ฌด์กฐ๊ฑด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ธ์šฉ๋œ ๋ฐœ์ทŒ๋ฌธ์— ๋Œ€ํ•œ ์‘๋‹ต๊ณผ ์ „์ฒด ํ† ๋ก ์— ๋Œ€ํ•œ ์˜๊ฒฌ ์‚ฌ์ด์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์œ ์ผํ•œ ๊ฒฐ๋ก ์€ ๊ณ ์˜์ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ง€์ ์œผ๋กœ ๋ถ€์ •์งํ•œ ์ „์ˆ ์ž„์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ์˜์‹ฌ์˜ ์ด์ ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ง ๊ทธ๋Œ€๋กœ ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ๊ธฐ์•ฝ์„ ๋ฐ˜๋“œ์‹œ ๋ณต์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

...

์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ผ ๋…ผ์Ÿ์„ ๊ณต๊ฒฉํ•˜์‹ญ์‹œ์˜ค.

:์‚ฝ์ž…RolleyEye ์ด๋ชจํ‹ฐ์ฝ˜์—ฌ๊ธฐ:

์›ƒ๊ธฐ๊ฒŒ๋„, ๋‚˜๋Š” ๋ญ”๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งํ•˜๋Š” ์ฆ๊ฑฐ๋ฅผ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์–ด๋””์—์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

์ข‹์•„, ๊ทธ๋Ÿผ 10%/90% ์ˆ˜์น˜๋Š” ์–ด๋””์„œ ์™”์„๊นŒ?

๋„ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์†Œํ–ˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์•˜์„ ํ…๋ฐ.

msbuild๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์œผ๋ฏ€๋กœ ํ˜„์žฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ dotnet build ์—์„œ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์ด๋ฏธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  dotnet build๋Š” ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ํ• ๊นŒ์š”? msbuild๋กœ ์…ธ ์•„์›ƒ?

dnx ๋˜๋Š” roslyn ๋Œ€์‹  msbuild๋ฅผ ํ˜ธ์ถœํ•˜๋Š” dotnet build ์™€ ๋‹ค๋ฅธ ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ msbuild๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด? ์•„๋ฌด๊ฒƒ๋„ ๋‹น์‹ ์„ ๋ง‰์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜์€ ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋ฏธ์ณค์–ด. ๋‹น์‹ ์ด msbuild๋ฅผ ์–ผ๋งˆ๋‚˜ ์‹ซ์–ดํ•˜๋Š”์ง€ ๊ฐ์•ˆํ•  ๋•Œ ๋‹น์‹ ์ด ๋ฌป๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๊ทธ ์ƒํ™ฉ์—์„œ dotnet ๋นŒ๋“œ์˜ ๋ชฉ์ ์€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋„๊ตฌ์— ๋ฌด์—‡์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๊นŒ?

์‹ค์ œ๋กœ dotnet build ์˜ ์žฅ์ ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? dotnet build ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๊นŒ? dotnet build ์˜ ๋ชฉ์ ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜์…จ์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿด ๊ฐ€๋Šฅ์„ฑ์€ ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ๋ฌป๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

@neoKushan ๊ทธ๋ฅผ ์ ๋Œ€์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๊ฑด์„ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๊ทธ๋Ÿผ 10%/90% ์ˆ˜์น˜๋Š” ์–ด๋””์„œ ์™”์„๊นŒ?

์ œ ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์—์„œ ๋‚˜์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์šฐ๋ฆฌ ํŒ€๊ณผ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋นŒ๋“œ์˜ ์•ฝ 90%๊ฐ€ RC1 dotnet build ๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

msbuild๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์œผ๋ฏ€๋กœ ํ˜„์žฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ dotnet build์—์„œ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์ด๋ฏธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆ ํ•ด์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ œ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋ฌด๊ฒƒ๋„ ๋‹น์‹ ์„ ๋ง‰์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜์€ ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋ฏธ์ณค์–ด. ๋‹น์‹ ์ด msbuild๋ฅผ ์–ผ๋งˆ๋‚˜ ์‹ซ์–ดํ•˜๋Š”์ง€ ๊ฐ์•ˆํ•  ๋•Œ ๋‹น์‹ ์ด ๋ฌป๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

_ํ•œ์ˆจ์„ ์‰ฌ๋‹ค_. ๋‚ด ์งˆ๋ฌธ์€ ์™œํ•ด์•ผ dotnet build ๋•Œ์˜ MSBuild์— ๋ฐ–์œผ๋กœ ๊ป์งˆ msbuild ๊ทธ ์ด๋ฏธ ์ •๋ง ์ž˜ํ•ฉ๋‹ˆ๊นŒ? ๋‘ ๊ฐœ์˜ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ง€๊ธˆ๊นŒ์ง€ ์„ธ ๋ฒˆ ์ •๋„ ์—ฌ์ญค๋ดค๋Š”๋ฐ ๋งค๋ฒˆ ์ž˜๋ชป ์ดํ•ดํ•˜์…จ๊ฑฐ๋‚˜ ์ž˜๋ชป ํ•ด์„ํ•˜์…จ๋„ค์š”.

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

ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋œ ์งˆ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ๊ธด ์„ค๋ช…์— ๋Œ€ํ•ด ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•˜์ง€๋งŒ ๋ถ„๋ช…ํžˆ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

InfoQ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ :
"Microsoft๋Š” project.json ์‹คํ—˜์ด ์‹คํŒจ ํ–ˆ์œผ๋ฉฐ .csproj ํŒŒ์ผ ์‚ฌ์šฉ์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌ

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ์ธ์‹์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์งˆ๋ฌธ์€: msbuild๊ฐ€ ์ด๋ฏธ ์ž˜ ๋˜์–ด ์žˆ๋Š”๋ฐ ์™œ dotnet์ด MSBuild์— ์…ธ์„ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‘ ๊ฐœ์˜ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋“ค์ด ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—?

csc๊ฐ€ ์ด๋ฏธ ๋นŒ๋“œ ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•  ๋•Œ MSBuild๊ฐ€ csc๋กœ ์‰˜์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‘ ๊ฐœ์˜ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

dotnet test ์ž์ฒด์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์ด๋ฏธ ํ›Œ๋ฅญํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์™œ xUnit ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ์—๊ฒŒ ์‰˜์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‘ ๊ฐœ์˜ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

NuGet์ด ์ด๋ฏธ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•  ๋•Œ dotnet restore ๊ฐ€ NuGet์œผ๋กœ ์‰˜ ์•„์›ƒ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‘ ๊ฐœ์˜ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹น์‹ ์€ ์•„์ด๋””์–ด๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค ... (๋‚˜๋Š” ํฌ๋งํ•ฉ๋‹ˆ๋‹ค :wink:)

@sandorfr

@neoKushan ๊ทธ๋ฅผ ์ ๋Œ€์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๊ฑด์„ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์˜๋„์ ์œผ๋กœ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์ ๋Œ€์‹œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ @shederman ์˜ ์ฃผ์žฅ์„ ์ง€์ ๋ณ„๋กœ ํ•ด์ฒดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ผ ๋…ผ์Ÿ์„ ๊ณต๊ฒฉํ•˜์‹ญ์‹œ์˜ค.

์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” @shederman ์˜ ์ฃผ์žฅ์ด ๋ฌด์—‡์ธ์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ๋“  XML์ด ์ข‹์ง€ ์•Š์€ ๊ฒƒ์—์„œ MSBuild๊ฐ€ ๋‚˜์œ ๊ฒƒ์œผ๋กœ ํ˜„์žฌ dotnet build ๊ฐ€ ๋‚˜์œ ๊ฒƒ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๊ธฐ ๋•Œ๋ฌธ ์ž…๋‹ˆ๋‹ค.

๊ณ„์†ํ•˜์ž.

์ œ ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์—์„œ ๋‚˜์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‹น์‹ ์˜ "์ฆ๊ฑฐ"์ž…๋‹ˆ๊นŒ? ๊ตต๊ฒŒ ํ‘œ์‹œํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

์›ƒ๊ธฐ๊ฒŒ๋„, ๋‚˜๋Š” ๋ญ”๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งํ•˜๋Š” ์ฆ๊ฑฐ ๋ฅผ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์–ด๋””์—์„œ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์ด์ œ "๊ฐœ์ธ์  ๊ฒฝํ—˜"์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ _์ผํ™”์ ์ธ_ ์ฆ๊ฑฐ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ œ ํŒ€๊ณผ ์ œ๊ฐ€ ๋งŒ๋“  ๋นŒ๋“œ์˜ ์•ฝ 90%๊ฐ€ RC1 dotnet ๋นŒ๋“œ๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด์™€ ๊ด€๋ จํ•˜์—ฌ RC2 dotnet build ๋˜๋Š” RTM dotnet build ๋˜๋Š” post-RTM dotnet build ์ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ?

๋ช…ํ™•ํžˆ ํ•ด์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์ฃผ์žฅ์€ " dotnet build ๊ฐ€ Microsoft๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ ๊ฒƒ ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค."์™€ ๊ฐ™์€ ๋‚ด์šฉ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ DNX๋ฅผ ์ข‹์•„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— DNX ์‹œ๋Œ€์—๋Š” ๊ดœ์ฐฎ์•˜์ง€๋งŒ ์ด์ œ Microsoft๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ณ  MSBuild๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด MSbuild๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ต์…˜์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ์ด๊ฒƒ์ด ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. DNX์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์—†์œผ๋ฏ€๋กœ dotnet build ์˜ "๋ฌธ์ œ"๊ฐ€ ๋ฌด์—‡์ด๋“  ์ƒˆ๋กœ์šด ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ด€๋ จ์„ฑ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. project.json ์˜ ๊ตฌ์กฐ์ธ _actual_ ํ† ๋ก ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. csproj

ํ•œ์ˆจ์„ ์‰ฌ๋‹ค. ๋‚ด ์งˆ๋ฌธ์€: msbuild๊ฐ€ ์ด๋ฏธ ์ž˜ ๋˜์–ด ์žˆ๋Š”๋ฐ ์™œ dotnet์ด MSBuild์— ์…ธ์„ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‘ ๊ฐœ์˜ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ผ์„ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@khellang ์€ ์ด๋ฏธ ์ด์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„

dotnet build ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์•Š์Šต๋‹ˆ๋‹ค "๊ทธ๋ƒฅ", ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ˜ธ์ถœ DOTNET ๋นŒ๋“œ์˜ ํ˜„์žฌ CLI์˜ ๊ตฌํ˜„์„ ์‚ดํŽด . ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ dotnet build ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ _์ผ๋ถ€_๋Š” msbuild ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ์ผ์ด ์•„๋‹ˆ๋ผ CLI์˜ ๋ชซ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ, ์ ์–ด๋„ ์„ธ ๋ฒˆ์งธ๋กœ: dotnet build ํ˜ธ์ถœ์€ msbuild ํ˜ธ์ถœ๊ณผ ๋™์˜์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค . ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ "๋‘ ๋ช…๋ น์ด ํ•œ ๊ฐ€์ง€ ์ผ์„ ํ•˜๋Š”" ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ๊ฒฐ์ฝ” ๊ทธ๋ ‡์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด ์ „์ฒด ํ† ๋ก ์˜ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์ง€๋„ ์•Š์•˜์ง€๋งŒ ์–ด์จŒ๋“  ๋‹น์‹ ์€ ๊ฑฐ๊ธฐ์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ํ† ๋ก , ์‹ค์ œ๋กœ ์ค‘์š”ํ•œ ๊ฒƒ์€ project.json์˜ ๊ตฌ์กฐ์™€ ์ด๊ฒƒ์ด .csproj๋กœ ๋ณ‘ํ•ฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ํ•ญ์ƒ dotnet build ๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ๊ฒƒ์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํฌ๊ฒŒ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด msbuild๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๊ณผ dotnet ๋นŒ๋“œ๊ฐ€ ํ˜„์žฌ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ž‘๋™ ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ด ํ† ๋ก ์—์„œ ๋น ์ ธ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋‹ค๋“ค ์ด๋ฏธ ์•Œ๊ณ  ๊ณ„์‹œ๊ฒ ์ง€๋งŒ, ํ…Œ์ด๋ธ”์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ์ข€ ๋” ๋ช…ํ™•ํ•ด ์งˆ ๊ฒƒ ๊ฐ™์•„์š”.

@khellang ํ‘œํ˜„ํ•œ ๋ฐฉ์‹์ด ๋งˆ์Œ์— ๋“ค์ง€๋งŒ ๊ณ„์†ํ•ด์„œ dotnet test ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. project.json์— xunit๊ณผ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ dotnet test ๋Š” ํ•ด๋‹น ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๊ฐ€์˜ค๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋“ค์€ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด dotnet build ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ MSBuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ•ด๊ฐ€ ์˜ณ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@neoKushan ๋‚˜๋Š” ์˜๋„์ ์œผ๋กœ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์ ๋Œ€์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” @shederman ์˜ ์ฃผ์žฅ์„ ์ ๋Œ€์ ์œผ๋กœ ํ•ด์ฒดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

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

@neoKushan ์ด ์‹œ์ ์—์„œ @shederman ์˜ ์ฃผ์žฅ์ด ๋ฌด์—‡์ธ์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. XML์ด ์ข‹์ง€ ์•Š์€ ๊ฒƒ์—์„œ MSBuild๊ฐ€ ๋‚˜์œ ๊ฒƒ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๊ธฐ ๋•Œ๋ฌธ ์ž…๋‹ˆ๋‹ค.

XML์€ ๋‚˜์˜๋‹ค. MSBuild๊ฐ€ ๋‚˜์ฉ๋‹ˆ๋‹ค. dotnet build ๊ฐ€ MSBuild ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์‹œ๋„ํ•˜๊ณ  ๋”ฐ๋ผํ•ด ์ฃผ์„ธ์š”. ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ๊ณ ์˜์ ์œผ๋กœ ๋‘”ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๋‹น์‹ ์€ ์˜ค๋ž˜์ „์— ๊ทธ๊ฒƒ์„ ์ดํ•ดํ–ˆ์„ ๊ฒƒ์ด๊ณ  ์‹ค์ œ๋กœ ๊ฑด์„ค์ ์ธ ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@neoKushan ์ด๊ฒƒ์ด ๋‹น์‹ ์˜ "์ฆ๊ฑฐ"์ž…๋‹ˆ๊นŒ? ๊ตต๊ฒŒ ํ‘œ์‹œํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

์Œ, ๊ทธ๊ฑด ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ œ ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ฆ๊ฑฐ ๋Š” 383๋ช… ์ค‘ 281๋ช…์˜ ์‘๋‹ต์ž๊ฐ€ .NET Core๋ฅผ MSBuild๋กœ ๋‹ค์‹œ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  MSBuild๊ฐ€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ง๊ฐ€์กŒ๋‹ค๊ณ  ๋ฏฟ๋Š” ์‘๋‹ต์ž ์ค‘ 85๋ช…์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‚ด ์ฆ๊ฑฐ์•ผ. ๋‹น์‹ ์€ ์ •ํ™•ํžˆ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?

"... _๋ชจ๋“  ๋‹จ์ผ_ Visual Studio .net ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ"์ด๋ผ๋Š” ์ง„์ˆ ์„ ๋’ท๋ฐ›์นจํ•˜๋ ค๋ฉด? [๊ฐ•์กฐ ์ถ”๊ฐ€๋จ]

@neoKushan ์‹ค์ œ ํ† ๋ก , ์‹ค์ œ๋กœ ์ค‘์š”ํ•œ ๊ฒƒ์€ project.json์˜ ๊ตฌ์กฐ์™€ .csproj์— ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค _๋™์˜_ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฐ๊ฒฝ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. MS๊ฐ€ ํ‘œํ˜„ํ•œ ๊ณ„ํš์€ MSBuild๊ฐ€ ๋นŒ๋“œ ์œ ๋‹ˆ๋ฒ„์Šค์˜ ์ค‘์‹ฌ์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ _์ข‹์•„ํ•˜์ง€_์•Š์ง€๋งŒ ๊ณ„์† ๊ฐ€์ž. ์ด๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

"MSBuild๋Š” ์˜์›ํžˆ .NET Framework์˜ ๊ธฐ๋ณธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ๋ ๊นŒ์š”?"

๊ทธ๋ ‡๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๋‹จ์ง€ ํ•„์š” msbuild ๋ช…๋ น์„ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค dotnet build ๋ช…๋ น์„, ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์–ด๋Š ์‹œ์ ์—์„œ MSBuild๊ฐ€ _One True Build System_์ด ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ธ์ •ํ•œ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๋” ํฅ๋ฏธ๋กœ์šด ์˜์—ญ์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด dotnet build ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณ‘ํ•ฉ csproj ๋ฐ project.json์„ ๋…ผ์˜ ํ•  ๋•Œ ์šฐ๋ฆฌ๊ฐ€ ์—ผ๋‘์— ๋ฏธ๋ž˜๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์Œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ (์•„๋งˆ๋„ ํ˜•ํŽธ์—†๊ฒŒ) ์ง€์ ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์€ (๋‚ด ์ƒ๊ฐ์—) ๋” ๋‚˜์€ ์˜ต์…˜์€ _project definition_ ํŒŒ์ผ๊ณผ _build definition_ ํŒŒ์ผ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋นŒ๋“œ ์—”์ง„์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” dotnet build ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ชจ๋“  ๊ฒƒ์„ csproj๋กœ ์˜ฎ๊ธฐ๋ฉด MSBuild ์„ธ๊ณ„์— ์ž์‹ ์„ ๊ฐ€๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์ด "๋‹จ ํ•˜๋‚˜์˜ ์ง„์ •ํ•œ ๋นŒ๋“œ" ์ƒํ™ฉ์ด DNX์— ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋นŒ๋“œ๊ฐ€ _์ข‹์•„์š”_ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋‹น์‹œ์—๋Š” ์งˆ๋ฌธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„, ์šฐ๋ฆฌ๊ฐ€ _์ข‹์•„ํ•˜๋Š”_ ๐Ÿ˜‰. ๋ถˆ์˜๋ฅผ ์ˆœ์ง„ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ผ ๋•Œ ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜ํ•œ ์ƒํ™ฉ.

๋”ฐ๋ผ์„œ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋นŒ๋“œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” dotnet build ์ด ์žˆ๋Š” ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. dotnet test ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ ์‹คํ–‰๊ธฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ, ์ง€๊ธˆ ๋‹น์‹ ์€ csproj ๋ฐ project.json ๋ณ‘ํ•ฉ ์–ผ๋งˆ๋‚˜, ์ด๋Ÿฌํ•œ ๊ฐ€์ƒ ์„ธ๊ณ„์—์„œ ์ฃผ์–ด์ง„? ๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

@rhires ๋งค์šฐ ๋†’์€ ์ˆ˜์ค€์—์„œ dotnet build :

  1. ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์ˆ˜์ง‘
  2. ์ฆ๋ถ„ ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ „์ œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. project.json์„ ์ฝ์Šต๋‹ˆ๋‹ค.
  4. ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ฐ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด:

    1. ๋นŒ๋“œ์˜ ์ข…์†์„ฑ

    2. ์ฆ๋ถ„์ธ ๊ฒฝ์šฐ ์žฌ๊ตฌ์ถ•์ด ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    3. ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค

    4. ์†Œ์Šค ํŒŒ์ผ์„ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

    5. ์ปดํŒŒ์ผ ์˜ต์…˜์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค

    6. ์‚ฌ์ „ ์ปดํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    7. ์†Œ์Šค ํŒŒ์ผ ๋ฐ ์˜ต์…˜์œผ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    8. ์‚ฌํ›„ ์ปดํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    9. ๋ณด๊ณ ์„œ ์ถœ๋ ฅ

@shederman ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด ์‹œ์ ์—์„œ msbuild๋Š” ์ด ํ”„๋กœ์„ธ์Šค์—์„œ/์—์„œ/์—์„œ ๋ฌด์—‡์„ ์ถ”๊ฐ€/๋นผ๊ธฐ/๋ฐ”๊พธ๋‚˜์š”?

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

๋ƒ„๋น„ -> ์ฃผ์ „์ž

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

XML์€ ๋‚˜์˜๋‹ค. MSBuild๊ฐ€ ๋‚˜์ฉ๋‹ˆ๋‹ค. dotnet build๊ฐ€ MSBuild๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

_๋‹น์‹ _ ์ด์™ธ์˜ ๋ˆ„๊ตฌ๋„ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„. ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๋Š” ์•ฝ๊ฐ„์˜ ์•”์‹œ์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” dotnet build ๊ฐ€ MSBuild ๋ฅผ _๊ทธ๋ƒฅ_ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ๋งํ–ˆ์ง€๋งŒ dotnet build ์™€ msbuild ๋Š” ์™„์ „ํžˆ ๋™์˜์–ด๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. dotnet build ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค

๊ณ„์† ์‹œ๋„ํ•˜๊ณ  ๋”ฐ๋ผํ•ด ์ฃผ์„ธ์š”.

๊ณ„์† _๋‹น์‹ ์€_ ์–ด๋•Œ์š”? dotnet build ๊ฐ€ msbuild ๋งŒ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ์„ธ์š”. ๋ˆ„๊ฐ€ ๊ทธ๋Ÿฐ ๋ง์„ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์–ด๋””์„œ ์ฝ์—ˆ์–ด?

์ œ ์ฆ๊ฑฐ๋Š” 383๋ช… ์ค‘ 281๋ช…์˜ ์‘๋‹ต์ž๊ฐ€ .NET Core๋ฅผ MSBuild๋กœ ๋‹ค์‹œ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  MSBuild๊ฐ€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ง๊ฐ€์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•œ ์‘๋‹ต์ž ์ค‘ 85๋ช…์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‚ด ์ฆ๊ฑฐ์•ผ. ๋‹น์‹ ์€ ์ •ํ™•ํžˆ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๊ทธ ์ˆ˜์น˜์—์„œ 10%๋ฅผ ๋ฝ‘์•˜์ฃ ? ์ด๊ฒƒ์€ ๊ท€ํ•˜์˜ ์ฃผ์žฅ์ž„์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.

MSBuild์˜ ์„ฑ๋Šฅ๊ณผ ๋ณต์žก์„ฑ์€ ๋นŒ๋“œ์˜ ์•ฝ 10%์— ์ ํ•ฉํ•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๋‹น์‹ ์€ ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์›ƒ๊ธฐ๊ฒŒ๋„, ๋‚˜๋Š” ๋ญ”๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งํ•˜๋Š” ์ฆ๊ฑฐ๋ฅผ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ด ์ฆ๊ฑฐ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹น์‹ ์ด ๋‹น์‹ ์˜ "์ฆ๊ฑฐ"์—์„œ ์–ด๋–ป๊ฒŒ ๊ทธ ์ˆ˜์น˜๋ฅผ ๋Œ์–ด๋ƒˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

"... ๋ชจ๋“  Visual Studio .net ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ"์ด๋ผ๋Š” ์ง„์ˆ ์„ ๋’ท๋ฐ›์นจํ•˜๋ ค๋ฉด?

์‰ฌ์›€: https://msdn.microsoft.com/en-us/library/ms171468.aspx

Visual Studio๋Š” ๊ด€๋ฆฌ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด MSBuild๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค.

Visual Studio๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ MSBuild๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  .net ์ฝ”์–ด๋กœ ์ž‘์—…ํ•  ๋•Œ๋„ RC1 VS์—์„œ๋„ ๋‚ด๋ถ€์ ์œผ๋กœ MSbuild๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. MSbuild๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๊ฑฐ์˜ ๋ชจ๋“  VS ๊ฐœ๋ฐœ์ž๊ฐ€ MSbuild๋ฅผ ์•Œ๊ณ  ์žˆ๋“  ์—†๋“  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MS๊ฐ€ ํ‘œํ˜„ํ•œ ๊ณ„ํš์€ MSBuild๊ฐ€ ๋นŒ๋“œ ์œ ๋‹ˆ๋ฒ„์Šค์˜ ์ค‘์‹ฌ์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์ด ์ค‘์‹ฌ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•œ ์ ์ด ์—†์œผ๋ฉฐ, ๊ทธ๋“ค์ด ๋งํ•œ ๊ฒƒ์€ project.json์˜ ์ผ๋ถ€๊ฐ€ ๊ฒฐ๊ตญ .csproj๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ์™ธ์—๋Š” ์ด๊ฒƒ์ด dotnet build ๋ฅผ ์–ด๋Š ์ •๋„ ๋ณ€๊ฒฝํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

"MSBuild๋Š” ์˜์›ํžˆ .NET Framework์˜ ๊ธฐ๋ณธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๊นŒ?"

๊ทธ๋ ‡๋‹ค๋ฉด msbuild ๋ช…๋ น๋งŒ ํ•„์š”ํ•˜๊ณ  dotnet build ๋ช…๋ น์€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์™„์ „ํžˆ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด dotnet build ๋ฐ msbuild ๋Š” ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. dotnet build ๋” ๋‹จ์ง€ ์ปดํŒŒ์ผ๋Ÿฌ ํˆด์ฒด์ธ ์ „ํ™”๋ณด๋‹ค ์•Š์Šต๋‹ˆ๋‹ค. dotnet build์˜ ๋ชฉ์ ์€ ์‚ฌ๋žŒ๋“ค์ด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ๋ณด๋‹ค:

dotnet new
dotnet restore
dotnet build

msbuild๊ฐ€ dotnet CLI์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋˜๋”๋ผ๋„ dotnet build๊ฐ€ ์ƒ๋‹นํžˆ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊นจ๋—ํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ๋ž˜ํผ๋ผ๋Š” ์‚ฌ์‹ค์€ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์  ์žฅ, dotnet CLI๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ์˜ ์ ˆ๋ฐ˜(๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ด์ „์˜ DNX)์€ ํŠนํžˆ MSBuild๊ฐ€ ๊ถ๊ทน์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋ช…๋ น์ค„ ์ธ์ˆ˜ ์ง€์˜ฅ์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ฃผ์žฅ์€ "ํŒจํ‚ค์ง€๋ฅผ curl ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ npm install ๋ช…๋ น์ด ํ•„์š”ํ•œ๊ฐ€์š”?"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฑฐ์˜ ์•„๋ฌด ๊ฒƒ๋„ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. dotnet build ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ msbuild ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋‹น์‹ ์€ ๊ฑฐ์˜ ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ๊ฒฝํ—˜์„ MSBuild์™€ ๋น„๊ตํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” VS๋ฅผ ์—ด๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๋ƒฅ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (๊ฒ‰๋ณด๊ธฐ์—๋Š”) ๊ทธ ์ผ๋กœ ์ธํ•ด ํ™”์ƒ์„ ์ž…์—ˆ์ง€๋งŒ, ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ฐ‘์ž๊ธฐ ๋˜ฅ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. _๊ทธ๋ƒฅ ์ž‘๋™_ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Microsoft๊ฐ€ TFS 2015์—์„œ ์ˆ˜ํ–‰ํ•œ ๊ฐ€์žฅ ์ข‹์€ ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋Š” _MSBuild_๊ฐ€ ์•„๋‹Œ _Visual Studio_์— ์—ฐ๊ฒฐ๋˜๋Š” ๋นŒ๋“œ ์ •์˜๋ฅผ ๋งŒ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด "๊ทธ๋ƒฅ ์ž‘๋™"ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ด ๋นŒ๋“œ ๋„๊ตฌ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. dotnet build ๋Š” ์ „์ฒด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ, ํ›„๋“œ ์•„๋ž˜์—์„œ MSBuild ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. TeamCity ๋˜๋Š” Jenkins์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด dotnet build ํ˜ธ์ถœํ•˜๋ฉด ๋˜๊ณ  ๋‚˜๋จธ์ง€๋Š” dotnet์ด ์•Œ์•„์„œ ํ•ฉ๋‹ˆ๋‹ค. _์–ด๋–ป๊ฒŒ_ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ ์ผํ•œ ๊ฒƒ - ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์™„์ „ํžˆ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ project.json/csproj ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. _๊ทธ๊ฒƒ_์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— dotnet build ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ  MSBuild ๊ฐ€ ์ข‹๊ณ  ๋‚˜์œ์ง€์— ๋Œ€ํ•ด ์ด ๋ชจ๋“  ๋…ผ์Ÿ์ด ์ ˆ๋Œ€์ ์œผ๋กœ _๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค_.

@neoKushan ๊ทธ๋ƒฅ ๊ทธ๋งŒ ...

@neoKushan ๊ทธ๋งŒ...

์ € ์ค‘ ์ผ๋ถ€๋Š” ASP.NET ํŒ€์ด ์‡ผ๋ฅผ ์ฆ๊ธฐ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์ ์œผ๋กœ ์Šคํƒ ๋“œ์—…์„ ์ทจ์†Œํ•˜๊ณ  ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ๋๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

๋‚˜์˜ (์ง€๊ธˆ์€ ํ™•๊ณ ํ•œ) ๋ถˆ๊ฐ€์ง€๋ก ์  ์ž…์žฅ์—์„œ, ์–‘์ธก์€ ์ด์ œ ํ•œ๋™์•ˆ ์ƒ๋Œ€๋ฐฉ์˜ ์š”์ ์— ๋Œ€ํ•ด ๊ณ ์˜์ ์œผ๋กœ ๋‘”ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ .NET Core ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ •์‹ ์  ์ด๋ฏธ์ง€๋ฅผ ๊ฑด์„ค์ ์ด์ง€ ์•Š๊ณ  ๋” ๋‚˜์˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์‹์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์‹ญ์‹œ์˜ค ...

NuGet์ด ์•„๋‹Œ ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์€ csproj์— ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. project.json(nuget.json?)์ด ์—†์œผ๋ฉด NuGet ํ•ญ๋ชฉ์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  NuGet์ด .net ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ž˜ ํ™•๋ฆฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ dotnet nuget ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ข…์†์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด IntelliSense๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ project.json์— ๋Œ€ํ•œ ์ตœ๊ณ ์˜ ๋ฐ๋ชจ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ์˜ ์šฉ๋„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์„ ํฐ ๋ฌธ์ œ๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด nuget.org๋กœ ์ด๋™ํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  URL์—์„œ ID๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

bash ๋˜๋Š” zsh ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ๋งŽ์€ ์ฐฌ์‚ฌ๋ฅผ ๋ฐ›์„ ์…ธ ์™„์„ฑ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dotnet nuget add S[tab] ๋Š” S ์‹œ์ž‘ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์‹๋ณ„์ž์— ๋Œ€ํ•œ ์™„๋ฃŒ ๋ชฉ๋ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

<NuGet> ํƒœ๊ทธ๋ฅผ ๊ฑฐ๊ธฐ์— ๊ตฝ๊ณ  ์‹ถ๋‹ค๋ฉด msbuild *proj ํŒŒ์ผ์— intellisense๋ฅผ ๊ฐ–๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ „์ฒด ์ƒํƒœ๊ณ„์— ํ•˜๋“œ ์ปคํ”Œ๋ง์„ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ฆ‰, <Package>NuGetPackageId</Package> ์•ˆ๋ฉ๋‹ˆ๋‹ค. t๋Š” <NuGet>NuGetPackageId</NuGet> ์™€ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์ด๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ(๊ทธ๋ฆฌ๊ณ  ๋งค์šฐ ์ž˜ ๋ฌธ์„œํ™”๋˜๊ณ  ์ง€์›๋˜๋Š”) ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Paket Visual Studio ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” nuget์—์„œ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€๋งŒ nuget.org์—์„œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด์จŒ๋“  ๋Š๋ฆฝ๋‹ˆ๋‹ค.

์ข…์†์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด JSON ํ˜•์‹์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? XML์€ ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์— ๋”์ฐํ•ฉ๋‹ˆ๋‹ค(Maven ์ฐธ์กฐ). JSON์€ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

ํ˜•์‹์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด paket.dependencies ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. project.json ํŽธ์ง‘์€ packages.config ํŽธ์ง‘๋งŒํผ ์ข‹์•˜์Šต๋‹ˆ๋‹ค

์ฐธ๊ณ ๋กœ lock ํŒŒ์ผ์ด ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ์ €์žฅ์†Œ์—์„œ ํ™•์ธํ•˜๊ณ  diff๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@rhires ์ด ์‹œ์ ์—์„œ msbuild๋Š” ์ด ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฌด์—‡์„ ์ถ”๊ฐ€/๋นผ๊ธฐ/๋ฐ”๊พธ๊ธฐ/์—์„œ/๋ฐ”๊พธ๋‚˜์š”?

๊ธ€์Ž„, ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์ •๋ณด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ‘œ์‹œ๋˜๋Š” dotnet ๋นŒ๋“œ์— msbuild๋ฅผ ๊นŠ์ด ํ†ตํ•ฉํ•˜์—ฌ "ํ•˜๋“œ ์ž ๊ธˆ"์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ „์ฒด๊ฐ€ msbuild๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ dotnet build ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์ˆ˜์ง‘
  2. project.json์„ ์ฝ์Šต๋‹ˆ๋‹ค.
  3. ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ์‚ฌ์šฉํ•  ๋นŒ๋“œ ๋„๊ตฌ ๊ฒฐ์ •
  5. ๋นŒ๋“œ ๋„๊ตฌ๋กœ ์…ธ ์•„์›ƒ
  6. ๋ณด๊ณ ์„œ ์ถœ๋ ฅ

@neoKushan ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—

๐Ÿ‘

๋‚ด๊ฐ€ _discuss_ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ dotnet build ๊ฐ€ _๋งŽ์€ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋กœ MSBuild์— ์…ธ ์•„์›ƒํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ์ƒ์—์„œ project.json ๋ฐ csproj๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์•ผ ํ•˜๋Š”์ง€์ž…๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์•„? project.json์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€์™€ csproj์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์‹ค์ œ๋กœ ๊ฑด์„ค์ ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@jmm ๋‹น์‹ ์€ .NET Core ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ๋‚ด ์ •์‹ ์  ์ด๋ฏธ์ง€๋ฅผ ๋น„๊ฑด์„ค์ ์ด๊ณ  ๋” ๋‚˜์˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฑฐ๋Œ€ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์ฑ„ํŒ… ์•„์นด์ด๋ธŒ๋ฅผ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

@shederman ์ƒ์‚ฐ์ ์ธ ๋…ผ์˜๋ฅผ ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜๋ฏธ๋ฅผ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด ์„ ์„ ๊ธ‹๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ํ† ๋ก ์€ "์ƒˆ" .csproj์˜ ๋ ˆ์ด์•„์›ƒ๊ณผ ํ˜•์‹๊ณผ project.json(๊ตฌ์ฒด์ ์œผ๋กœ๋Š” "ํ”„๋กœ์ ํŠธ" ๊ตฌ์กฐ ์ „์ฒด)์— ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€์— ๊ด€ํ•œ ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด msbuild์ธ์ง€ ์•„๋‹Œ์ง€, dotnet build๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ ๋“ฑ์€ _this_ ๋ฌธ์ œ์˜ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ํ† ๋ก ์ด ํ™˜์˜๋ฐ›์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ง€ ์ด _ํŠน์ •_ ๋ฌธ์ œ์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๋ณ„๊ฐœ์˜ ๋ฌธ์ œ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐœ๋ณ„ ๋ฒ„๊ทธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ ์ถ”์ ํ•  ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ •๋ง ์—ฌ๊ธฐ์—์„œ ๋ˆ„๋ฝ๋œ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

.cs ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ณ‘ํ•ฉ ์ง€์˜ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์ง€๋„ ์•Š๊ณ , _๋‚˜๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”_ ์ผ๋ถ€ ์‹œ์Šคํ…œ์ด ๊ทธ๊ฒƒ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒœ ์ค„ ๊ธธ์ด์˜ XML ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ค‘ ๋ˆ„๊ตฌ๋„ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ทธ๊ฒƒ์€ ๋ช‡ ๋…„ ๋™์•ˆ VS ๊ฐœ๋ฐœ์˜ ๋ฒ„๊ทธ ๋ฒ ์–ด์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜๋‚ ์˜ project.json ํ˜•์‹์— ๋Œ€ํ•œ ํฌ๋ง์˜ ๋น›์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์ด์ „๋ณด๋‹ค _ํ›จ์”ฌ ๋” ๋‚˜์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. "๋‚˜์œ ์˜›๋‚ "์ด์ง€๋งŒ ๋™์‹œ์— ์šฐ๋ฆฌ๊ฐ€ ์Šค์Šค๋กœ๋ฅผ ๋†€๋ฆฌ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  project.json์€ ๊ฒฐ์ฝ” _์™„๋ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์ฒด์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ "์˜ค๋ž˜๋œ" csproj์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ฐ๊ด€์ ์ด๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„๊ณผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ _์–‘์ชฝ ์„ธ๊ณ„์˜ ์ตœ๊ณ _ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ํ† ๋ก ์€ "์ƒˆ" .csproj์˜ ๋ ˆ์ด์•„์›ƒ๊ณผ ํ˜•์‹๊ณผ project.json(๊ตฌ์ฒด์ ์œผ๋กœ๋Š” "ํ”„๋กœ์ ํŠธ" ๊ตฌ์กฐ ์ „์ฒด)์— ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€์— ๊ด€ํ•œ ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋‹ค์‹œํ”ผ, ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ช‡ ๋ฒˆ ์–ธ๊ธ‰๋˜์—ˆ์ง€๋งŒ ์˜ค๋Š˜ ์•„์นจ ๋‚ด ์ž์‹ ์˜ "๊ฐœ์ธ์ ์ธ ์•„ํ•˜"๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์–ธ๊ธ‰ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ Roslyn ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ ๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ๋…ธ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. -- ๋˜๋Š” readme ์—์„œ ๋” ์ •ํ™•ํ•œ CPS(์ค‘์•™ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ) . ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๋ฉด ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ํ”„๋กœ์ ํŠธ ์ •์˜ ๋…ธ๋ ฅ์ด ๋” ๋งŽ์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์ด .json๊ณผ .csproj ์‚ฌ์ด์˜ ๋ชจ๋“  ๋งˆ๋ฒ•์ด ํ†ตํ•ฉ๋˜๋Š” ๊ณณ์ผ๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด MSBuild๊ฐ€ ํ”„๋กœ์„ธ์Šค ๋์ ์œผ๋กœ ๊ฐ•๋“ฑ๋ฉ๋‹ˆ๊นŒ? _๊ทธ๊ฑด_ ์ข‹์ง€ ์•Š๊ฒ ์–ด์š”. :์›ƒ๋‹ค:

์–ด์จŒ๋“ , ๋‚˜๋Š” ๊ทธ๊ณณ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‹œ์ž‘/์‹œ์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. :+1:

(์ด ํ† ๋ก ์„ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•˜๋Š”์ง€๋„ ๋ฐ˜์ฏค ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.)

@neoKushan ํ™•์‹คํžˆ msbuild๊ฐ€ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ์ž์ฒด๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  msbuild์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด์„œ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ๊ฐ„๋‹จํ•œ ํŒŒ์ผ ํ˜•์‹์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋ฅผ ๊ฑฑ์ •์‹œํ‚ค๋Š” ๊ฒƒ์€ "msbuild๋Š” ์ „ํˆฌ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ msbuild๋Š” ํ•˜์ง€๋งŒ ํ˜„์žฌ xplat์€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ github ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ msbuild ํŒ€์€ ์ด๋ฏธ ์ƒˆ/ํ–ฅ์ƒ๋œ ์ง๋ ฌํ™” ํ˜•์‹ ์ง€์›์ด msbuild์˜ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ(๊ณง ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์˜ˆ์ •)์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์ด ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค์€ ๋‹จ์ง€ 'hello worlds' ์•ฑ์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ buildOptions ๋ฐ ๋ชจ๋‹ˆ์ปค์— ์˜ํ•œ ์žฌ์ •์˜์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์˜ต์…˜์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ณ  ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ json ์Šคํ‚ค๋งˆ ๊ธฐ๋ฐ˜ ํŽธ์ง‘๊ธฐ ๊ฒฝํ—˜์€ ๋งํ•  ๊ฒƒ๋„ ์—†์ด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊ฒฝ๋กœ๋Š” project.json์„ ๋Œ€์•ˆ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” msbuild ์ž‘์—…์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ csproj์— ํ•ด๋‹น ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  project.json์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ ์„ ํƒํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

@Mike-EEE ํฌ๋ง์ด ์žˆ์Šต๋‹ˆ๋‹ค :)

ํ˜„์žฌ์˜ ๊ฒฝํ–ฅ์€ project.json์ด nuget.json์ด ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ข…์†์„ฑ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ๊ธฐ์กด project.json ๊ธฐ๋Šฅ์˜ ๋Œ€๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•Œ์•„๋‚ผ ์ˆ˜ ์—†๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์ด๊ฒƒ์ด ๋‹ค์ค‘ ํƒ€๊ฒŸํŒ…์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์ž…๋‹ˆ๋‹ค. csproj ๋ฐ nuget.json์€ ๊ฐ๊ฐ์ด ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋Œ€์ƒ์„ ์ธ์‹ํ•˜๊ณ  ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ชจ๋“  ๋Œ€์ƒ์— ๋Œ€ํ•ด csproj๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๊นŒ(์ด๋Ÿฐ!), ์•„๋‹ˆ๋ฉด .csproj๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

project.json์€ nuget.json์ด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค... _์ด_ ๋Œ€ํ™”๊ฐ€ ์–ด๋””์—์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‚˜์š”? ๋‚˜๋Š” ํŠน์ • ํ˜•์‹์œผ๋กœ ๊ณ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ „์— ๋„ˆ๊ฒŸ ํŒ€์— ํ•ฉ๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. project.json๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์ด Visual Studio ๋„๊ตฌ ๋ฌธ์ œ์ด๋ฉฐ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—ญํ•™์ด ๋ณ€๊ฒฝ๋˜์–ด ๋™์ผํ•œ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ๋” ๋งŽ์ด ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :stuck_out_tongue:

๋‚ด ์šฐ๋ ค๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ๋Š” ์ด์ œ JSON๊ณผ XML์„ ํ•จ๊ป˜ ํ˜ผํ•ฉํ•˜์—ฌ ์ตœ์†Œํ•œ ๋น„ํšจ์œจ์„ฑ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๊ถ๊ธˆํ•ด์„œ์š”... ์ด ๋Œ€ํ™”๊ฐ€ ์–ด๋””์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ๊ฑด๊ฐ€์š”?

๊ธ€์Ž„, ๊ทธ๊ฒƒ์€ ์›๋ž˜ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค: https://blogs.msdn.microsoft.com/webdev/2016/05/11/notes-from-the-asp-net-community-standup-may-10-2016/

project.json ํŒŒ์ผ์ด ๋‚จ์•„ ์žˆ๊ณ  NuGet์— ๋Œ€ํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ์ด๋ฆ„์ด nuget.json์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์—ฌ๊ธฐ์—์„œ ๋…ผ์˜ํ•˜๋Š” ๋‚ด์šฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. project.json์—์„œ ์–ผ๋งˆ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  .csproj์— ๋„ฃ์Šต๋‹ˆ๊นŒ? ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ project.json์˜ ๋Œ€๋ถ€๋ถ„์€ ํŠนํžˆ ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ํŒจํ‚ค์ง€ ์ฐธ์กฐ์˜€์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์€ ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋‚จ์•„ ์žˆ๊ณ  "๊ธฐํƒ€" ๋น„ํŠธ๋งŒ ์ œ๊ฑฐ๋  ๊ฒƒ์ž„์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‚ด (๋‹ค์‹œ: ๊ฐœ์ธ) ๊ฒฝํ—˜์—์„œ ์ด๋Ÿฌํ•œ "๊ธฐํƒ€" ๋น„ํŠธ๋Š” ํ”„๋กœ์ ํŠธ ์ˆ˜๋ช… ๋™์•ˆ ์‹ค์ œ๋กœ ๋งŽ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ XML์— ์žˆ๋”๋ผ๋„ XML์ด ๋งŽ์ง€ ์•Š๊ณ  ์ƒ๋‹นํžˆ ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .

๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด XML๊ณผ JSON์„ ํ˜ผํ•ฉํ•˜๊ณ  ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ๋ƒ„์ƒˆ๊ฐ€ ๋‚˜๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ JSON์ด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์—ด๋ ฌํ•œ ํŒฌ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— JSON์— ๋Œ€ํ•ด ๋‹ค์†Œ ํŽธํ–ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐœ์ธ์ ์ธ ์ทจํ–ฅ์ด์ง€๋งŒ.

๊ธ€์Ž„, ๊ทธ๊ฒƒ์€ ์›๋ž˜ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค ...

์•„ ์˜ˆ...๋ฌผ๋ก ์ด์ฃ ! ํ™•์ธ. ํ™•์ธํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ๋‚ด์ผ์€ ์šฐ๋ฆฌ๊ฐ€ ๋งˆ์นจ๋‚ด ์ด๊ฒƒ์— ๋Œ€ํ•ด (์ข‹๋“  ๋‚˜์˜๋“ !) ์•ฝ๊ฐ„์˜ ๋ช…ํ™•์„ฑ์„ ์–ป๋Š” ๋‚ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด XML๊ณผ JSON์„ ํ˜ผํ•ฉํ•˜๊ณ  ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ๋ƒ„์ƒˆ๊ฐ€ ๋‚œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์ €๋งŒ ๋ณด๊ณ  ์ด๋Ÿฐ ๋Š๋‚Œ์ด ๋“œ๋Š”๊ฒŒ ์•„๋‹ˆ์–ด์„œ ์ •๋ง ๋‹คํ–‰์ž…๋‹ˆ๋‹ค. :) ์ฒ˜์Œ์œผ๋กœ .JSON์ด ํ”„๋กœ์ ํŠธ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋ณด๋Š” ์Šฌํ””๊ณผ ์‹ธ์› ์„ ๋•Œ ๊ทธ๊ณณ์€ ํ•œ๋™์•ˆ ์™ธ๋กœ์›Œ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. web-appdev ๋ฐฐ๊ฒฝ์—์„œ๋Š” ์™„์ „ํžˆ ๋ง์ด ๋˜์ง€๋งŒ ๊ธฐ๋ณธ appdev๋Š” ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉฐ XML์˜ ๊ฒฝ์šฐ ๊ทธ ๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํ•˜ํ•˜... ๊ทธ๋Ÿฌ๊ณ ๋ณด๋‹ˆ ์œ„์˜ ๊ธ€์„ ์“ฐ๋ฉด์„œ ์˜ˆ์ „ ์•„์นด์ด๋ธŒ๋ฅผ ๊บผ๋‚ด๊ฒŒ ๋˜๋„ค์š”. ์—ฌ๊ธฐ 2014๋…„์— ์ œ๊ฐ€ JSON ๋Œ€์‹  Xaml์— ๋Œ€ํ•œ ์‚ฌ๋ก€๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค . ๋„ˆ๋ฌด ๊ท€์—ฝ๊ณ  ๊ฒธ์†ํ•ฉ๋‹ˆ๋‹ค! ์†Œ๋…„, ๋‚ด๊ฐ€ ๋ฐฐ์šธ ์„ธ์ƒ์ด ์žˆ์—ˆ๋‚˜์š”? :stuck_out_tongue: ํ•˜์ง€๋งŒ ์–ด๋Š ์ •๋„ ์ง„์ „์ด ์žˆ์—ˆ๋‹ค๊ณ  ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์›น ์„œ๋ฒ„ ๊ตฌ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” .ini๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค . :์›ƒ๋‹ค:

@neoKushan ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์˜ ์žฅ์ ์ด ๋ถ„๋ช…ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘ฏ ๐Ÿ‘ฏ ๐Ÿ‘ฏ

@neoKushan ๋‚˜๋Š” ํ˜„์žฌ์˜ ๊ฒฝํ–ฅ์ด project.json์ด nuget.json์ด ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค...๋‚ด๊ฐ€ ์•Œ์•„๋‚ผ ์ˆ˜ ์—†๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์ด๊ฒƒ์ด ๋ฉ€ํ‹ฐํƒ€๊ฒŸํŒ…์— ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์ž…๋‹ˆ๋‹ค. csproj์™€ nuget.json์ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ• ๊นŒ์š” ๊ฐ ๋Œ€์ƒ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

project.json ์Šคํ‚ค๋งˆ๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด ๊ด€์ ์—์„œ ๋‹ค์Œ ํ•ญ๋ชฉ์€ ๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ์— ์žˆ์–ด์•ผ _์•„๋‹Œ_ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ํŒŒ์ผ ๋ชฉ๋ก
  • ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ
  • ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ
  • ํ”„๋กœ์ ํŠธ ๋ช…๋ น(์˜ˆ: ์›น, ํ…Œ์ŠคํŠธ ๋“ฑ)
  • ์›น๋ฃจํŠธ
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
  • ์–ธ์–ด ๋ฒ„์ „

๋‹ค์Œ์€ ๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ์— ์žˆ์–ด์•ผ ํ•˜๋Š” _๋ฏฟ๋Š”_ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” _meh_ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ ์ •์˜
  • ์Šคํฌ๋ฆฝํŠธ, ์‚ฌ์ „ ๋ฐ ์‚ฌํ›„

๋‹ค์Œ์€ ์•„๋งˆ๋„ ๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ์— _should_ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปดํŒŒ์ผ ์˜ต์…˜(์–ธ์–ด ๋ฒ„์ „ ์ œ์™ธ)

์œ„์˜ ๋‚ด์šฉ์€ ํ† ๋ก ์„ ์œ ๋„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์˜ ์ด๋ฆ„๊ณผ ํ˜„์žฌ ํ˜•์‹์„ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@shederman "๋นŒ๋“œ ์ •์˜"๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋‚ด ์šฉ์–ด๊ฐ€ ๋งž์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ project.json์„ _build definition_ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ _project definition_ ํŒŒ์ผ์ด๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ƒˆ csproj ํŒŒ์ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค). ์˜๋ฏธ๋ก ์ ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ ๋นŒ๋“œ ์ •์˜๋Š” _๋ฌผ๊ฑด์ด ๊ตฌ์ถ•๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ๋ฐ˜๋ฉด ํ”„๋กœ์ ํŠธ ์ •์˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋ฅผ ์ •์˜ํ•˜๊ณ  ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค.

_์ด๊ฒƒ์€ ๋‚ด ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‚ด ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค._

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

๋‚ด๊ฐ€ ํ™•์‹คํžˆ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Nuget.json์ด ์ข…์†์„ฑ ํ•ด๊ฒฐ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ ์ฐธ์กฐ์— ๋Œ€ํ•ด ์ผ๋ถ€ ๋ถ„๋ฆฌ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š”์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •์˜_ (๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ด๋“ ๊ฐ„์—).

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

https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/ :

์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋ชจ๋“  .NET ํ”„๋กœ์ ํŠธ๋ฅผ project.json์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” Visual Studio, Xamarin ๋ฐ Unity์™€ ๊ฐ™์€ ํŒŒํŠธ๋„ˆ์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์œ ํ˜•์„ ๋‹ค๋ฃจ๋Š” ๋„๊ตฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋นŒ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€์›ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์Šคํ† ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ ค๋ฉด project.json์„ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์„ ํƒ์€ .xproj ํ”„๋กœ์ ํŠธ๊ฐ€ .csproj ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ณ  .csproj ํ”„๋กœ์ ํŠธ๊ฐ€ Visual Studio ๋ฐ Xamarin Studio์—์„œ .xproj ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ธŒ๋ฆฌ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ฆฌ์ง€์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ ๊ฐ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ .xproj ๋˜๋Š” .csproj๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋” ๋งŽ์€ ์„ ํƒ๊ณผ ๋ณต์žก์„ฑ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ 

์šฐ๋ฆฌ์˜ ์„ ํƒ์„ ์‚ดํŽด๋ณธ ํ›„ ๋ชจ๋“  .NET ํ”„๋กœ์ ํŠธ๊ฐ€ ๋™์ผํ•œ ๋„๊ตฌ ๋ฐ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋„๋ก .NET Core ํ”„๋กœ์ ํŠธ๋ฅผ .csproj/MSBuild๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด .csproj๋ฅผ ๊ฐœ์„ ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ํŒŒ์ผ ๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ CLI ๋„๊ตฌ, ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์—์„œ ์ง์ ‘ ํŒจํ‚ค์ง€ ๋นŒ๋“œ
  • ๋‹ค์ค‘ ํƒ€๊ฒŸํŒ…

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

https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/#comment -71485:

.csproj๊ฐ€ ์—ฌ์ „ํžˆ C# ํ”„๋กœ์ ํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋ฌผ๋ก  C#์ด ์•„๋‹Œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋Œ€์ƒ๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? [๋ฒค]

์˜ˆ. [์Šค์ฝง H]

.net์ด msbuild์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ ˆ๊ฑฐ์‹œ justForTooling ๋นŒ๋“œ ์‹œ์Šคํ…œ์— ๊ฐ‡ํžˆ๊ฒŒ ๋ ๊นŒ๋ด ์กฐ๊ธˆ ๋‘๋ ต์Šต๋‹ˆ๋‹ค. dotNetCore๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ตœ์‹  ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ณ„ํšํ•ด์•ผ ํ• ๊นŒ์š”?
.netcore์˜ ๋ฐฐ์†ก์„ ์„œ๋‘๋ฅด์ง€ ์•Š๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ํฌ๋ง์„ ์ฃผ๊ณ  ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

msbuild ํŒŒ์ผ์„ ์ž์ฃผ ํŽธ์ง‘ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋งค์šฐ ์–ด๋ ค์šธ ๋•Œ ์„ ์–ธ์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ๋ฆ„์—์„œ ์ž์‹ ์„ ์žƒ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ œ ์˜ˆ๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์ด https://github ์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค
6๊ฐœ์›” ํ›„ ์•„๋ฌด๋„ ๋”ํ‹ฐ ํ•ดํ‚น ์—†์ด ๋˜๋Š” ์ถ”๊ฐ€ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…(๊ฐ๊ฐ ๋‹ค๋ฅธ ์ž‘์—…์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ์ž‘์—…)์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ฑฐ๊ธฐ์— ์ˆ˜์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ CLI ๋„๊ตฌ, ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

:-1:

๋‚˜๋Š” ๋‹น์‹ ์ด ์ผ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” CLI ๋„๊ตฌ๋ฅผ ์ง€์ง€ํ•˜์ง€๋งŒ ์ฐธ์กฐ์™€ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด CLI ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋‚˜๋Š” ํ™”๋ฅผ ๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Install-package ๋„ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํŒจํ‚ค์ง€ ์ด๋ฆ„์˜ ์ ˆ๋ฐ˜๋งŒ ์ž…๋ ฅํ•˜๊ณ  ๋ชจ๋“  ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ๊ฐ€๋Šฅ์„ฑ ๋ชฉ๋ก์„ ํŒ์—…์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

cli ๋„๊ตฌ๋Š” ์ž๋™ํ™”์—๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ npm install ๋˜๋Š” dotnet restore ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋„๊ตฌ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. dotnet buildoptions define add --framework net451 SOME_DEFINE ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค๋ฉด ํ™•์‹คํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํฐ ์†์‹ค์ž…๋‹ˆ๋‹ค.

์ข‹์€ ๊ฐœ๋ฐœ ์Šคํ† ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์‰ฝ๊ฒŒ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์ ํŠธ ๋ฐ ๋นŒ๋“œ ํŒŒ์ผ
  • ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ ์‹œ์Šคํ…œ
  • ๊ฐ„๋‹จํ•˜๊ณ  ์ž˜ ์„ค๊ณ„๋œ ์™„๋ฒฝํ•œ cli ๋„๊ตฌ
  • Great Gui, IDE ๋„๊ตฌ

๊ฐ€๋‚œํ•œ ์‚ฌ๋žŒ(์ด์ „์—๋Š” ์‹ค์ œ๋กœ ํ›Œ๋ฅญํ–ˆ์ง€๋งŒ) ์ค‘ ํ•œ ์‚ฌ๋žŒ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

Unity ๋ฐ xamarin ์ธ์ˆ˜๋Š” ์‹ค์ œ๋กœ ๋งค์šฐ ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ณง .net ์ฝ”์–ด๋กœ ์ด๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ, .net์˜ ๋ฏธ๋ž˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋’ค๋กœ ๊ฐ€๋Š” ๊ฒƒ์€ ๋‹จ์ง€ ์ ˆ๋ฆ„๋ฐœ์ด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  .NET์ด ๋™์ผํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— MSBuild ํ–ฅ์ƒ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•์ œ๋กœ ์ ์šฉ๋˜๊ธฐ ์ „์—๋Š” MSBuild๊ฐ€ ํ–ฅ์ƒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค...

์ด ๊ธฐ์‚ฌ๋Š” ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์•„๋‹ˆ๋ฉฐ .net ์ฝ”์–ด๊ฐ€ ๊ฑฐ๊ธฐ์—์„œ ์ž˜๋ชป ์•ˆ๋‚ด๋˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

cli ๋„๊ตฌ๋Š” ์ž๋™ํ™”์— ์ ํ•ฉํ•˜์ง€๋งŒ npm install ๋˜๋Š” dotnet restore์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋„๊ตฌ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ๋Š” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ์ €๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ๋ฌธํ™”/์„ ํ˜ธ/์ฒ ํ•™์˜ ์ถฉ๋Œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธธ์„ ๋”ฐ๋ผ ์–ด๋”˜๊ฐ€์— CLI๊ฐ€ GUI๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ (๋‹ค์‹œ ํ•œ ๋ฒˆ) ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘๊ฐ€ ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ง€์†์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜์—ญ์—์„œ ์•ฝ๊ฐ„์˜ ํ˜์‹ ์ด ํ™•์‹คํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. CLI๋Š” ์ƒ์„ฑ๋˜์ง€๋งŒ GUI๋Š” ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ทธ ๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ API๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ผ์ข…์˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์œผ๋ฉฐ ๊ทธ๋Ÿฌ๋ฉด CLI ๋ฐ GUI ๋ฒ„์ „์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... CLIGUIAPI! :+1: :+1: :+1: #๋ฌธ์ œ ํ•ด๊ฒฐ

์ด ๋ฌธ์ œ๋Š” ๋ฌธํ™”/์„ ํ˜ธ/์ฒ ํ•™์˜ ์ถฉ๋Œ์ž…๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ์ด๊ฒƒ์€ ๊ฐ€๋Šฅํ•œ ์ตœ์ƒ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๊ฐ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. node.js ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ด ์Šคํƒ์˜ ๊ฐ€์žฅ ์—ด๋ ฌํ•œ ํŒฌ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ cli ๋„๊ตฌ npm ๋ฐ package.json์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Gui ๋ถ€๋ถ„์€ ๋‹ค์–‘ํ•œ ๊ณต๊ธ‰์—…์ฒด(webstorm, vs code, Visual Studio)์— ์˜ํ•ด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. gulp์™€ ๊ฐ™์€ ๋ฉ‹์ง„ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ 100% ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์†Œ์ˆ˜์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ project.json์„ ์ข‹์•„ํ•˜์ง€๋งŒ ์ด์œ ๋Š” ์—ฌ๊ธฐ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project -json/ ๋‚˜์—๊ฒŒ ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ข‹์€ ๊ฒฝํ—˜์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฝค ํ™•์‹ ํ•˜๊ณ  ์žˆ์–ด์„œ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ •๋ง๋กœ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด๊ฒƒ์ด ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๋‚˜์˜ ์—ด์ •์„ ๊ฒฐ์ฝ” ๊ฐ์†Œ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋งˆ์ง€๋ง‰ ๊ฒฝํ—˜์ด ์–ด๋–จ์ง€ ๋ณด๊ธฐ๋„ ์ „์— ๊ฐˆํ€ด์—์„œ ๋‚˜์™€ ์„ธ์ƒ์˜ ๋์ธ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๋Š” ๊ฒƒ์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋ณด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–ผ๋งˆ ์ „์— ์ฝ๊ธฐ๋ฅผ ์ค‘๋‹จํ–ˆ์ง€๋งŒ project.json ๋Œ€ํ•œ ํ™•์‹คํ•œ ๋‹ต๋ณ€์ด ๋‚˜์˜ค๋Š” ๋Œ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

dotnet restore ๋ช…๋ น์— ์˜ํ•ด .csproj๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„์ „ ์ œ์–ด์—์„œ ๋™๊ธฐํ™”๋˜์ง€ ์•Š๋Š” project.json๊ณผ .csproj๋ฅผ ๋ชจ๋‘ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ฐจ์ด์ ์€ dotnet restore "project.lock.json"์„ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹ (๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”) ".csproj" ํŒŒ์ผ์„ ์ƒ์„ฑ(๋˜๋Š” ์—…๋ฐ์ดํŠธ)ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "project.lock.json"๊ณผ ".csproj"๋„ ๋‘˜ ๋‹ค ์ž๋™ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋Š” .csproj๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด dotnet restore ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœํ‘œ์—์„œ Microsoft๋Š” ์ด๋ฏธ "ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ CLI ๋„๊ตฌ, ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์ง€ ์•Š์„ ๊ฒƒ"์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. IMHO, dotnet restore ๋Š” project.json์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” CLI ๋„๊ตฌ์— ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์žฅ์ ์€-

  • project.json ๋ฐ .csproj ํ˜•์‹์€ ๋ชจ๋‘ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ ์ƒ์„ฑ๋œ .csproj๋Š” ์ด์ „ ๋ฒ„์ „์˜ Visual Studio ๋ฐ ๊ธฐํƒ€ ๋„๊ตฌ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. dotnet restore ๋Š” .csproj ํŒŒ์ผ์— ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์˜ ๋ช…์‹œ์  "ํฌํ•จ" ๋ชฉ๋ก์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • .csproj๋Š” ๋ฒ„์ „ ์ œ์–ด๊ฐ€ ์•„๋‹Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” .csproj๋ฅผ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

yeahno

๊ทธ๋ž˜... ์•„๋‹ˆ.

ํ์‡„. ํ•  ์ˆ˜ ์žˆ๋Š” ๋ง์€ ๋‹ค ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•˜๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๋””์ž์ธ ํŒ€์— ์žˆ๊ณ  ์‹ถ๋‹ค๋ฉด ...

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋˜๊ณ  ํŠนํžˆ... ๋ฐ›์€ ํŽธ์ง€ํ•จ์„ ๊ฐ€๋“ ์ฑ„์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@MaximRuiller ๋Š” ์†Œ์Œ์˜ ์–‘์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ดˆ๊ธฐ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘” ์˜๊ฒฌ์„ ์ˆ˜์ง‘ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@neoKushan "๋นŒ๋“œ ์ •์˜"๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋‚ด ์šฉ์–ด๋Š” ๊บผ์ ธ ์žˆ์ง€๋งŒ ํ˜„์žฌ project.json์„ ๋นŒ๋“œ ์ •์˜ ํŒŒ์ผ์ด๋ผ ๋ถ€๋ฅด์ง€ ์•Š๊ณ  ์˜คํžˆ๋ ค ํ”„๋กœ์ ํŠธ ์ •์˜ ํŒŒ์ผ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค(์ƒˆ csproj ํŒŒ์ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค). ์˜๋ฏธ๋ก ์ ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ ๋นŒ๋“œ ์ •์˜๋Š” ๋นŒ๋“œ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๋ฐ˜๋ฉด ํ”„๋กœ์ ํŠธ ์ •์˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋ฅผ ์ •์˜ํ•˜๊ณ  ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด์˜๋ฏธํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ csproj -> project.json -> csproj ์ „์ฒด๋Š” .NET ์ฑ„ํƒ IMHO์—์„œ MS๋ฅผ ๊ดด๋กญํž ์ž˜๋ชป๋œ ๊ฒฐ์ • ์ง‘ํ•ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ํ‘ธ๋ฅด๋ฅธ ๋ชฉ์ดˆ์ง€๋ฅผ ์œ„ํ•ด .NET์„ ํฌ๊ธฐํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ถ”์„ธ๋Š” ๊ณ„์†๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

image

๋„ˆ๋ฌด ์Šฌํผ.

@shederman C#์— ๋Œ€ํ•œ Tiobe ์ง€์ˆ˜ ํ•˜๋ฝ๊ณผ csproj๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•˜๊ธฐ๋กœ ํ•œ ๊ฒฐ์ • ์‚ฌ์ด์—๋Š” ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•˜๋ฝํ•˜๋Š” Tiobe ์ง€์ˆ˜๋Š” C# ์ƒํƒœ๊ณ„์˜ ๊ฑด๊ฐ•์ด ์•…ํ™”๋˜๊ณ  ์žˆ๋‹ค๋Š” ํ‘œ์‹œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์–ธ์–ด๊ฐ€ ์‹œ์žฅ์— ์ง„์ž…ํ•˜๋ฉด์„œ ํ•œ ์–ธ์–ด๊ฐ€ ํฐ ์‹œ์žฅ ์ ์œ ์œจ์„ ์œ ์ง€ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

Everything is awesome

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

csproj๋Š” ๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฉ์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jerometerry ์ด ์ž์ฒด๊ฐ€ ์‡ ํ‡ด์˜ ์›์ธ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .NET Core์˜ ๋งŽ์€ ํ˜์‹ ์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๊ฐ์†Œ์™€ AWS์— ๋Œ€ํ•œ ์†์‹ค์„ ๋ง‰๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฒœ์ฒœํžˆ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐ๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ .NET Core๋Š” ์ ์  ๋” ๊ฐœ๋ฐœ์ž๋ฅผ ํ”Œ๋žซํผ์œผ๋กœ ์œ ์ธํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋ฐ•ํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํ˜„์žฌ๊นŒ์ง€ project.json์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ํ•œ ๊ฒฐ์ •์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ž˜๋ชป๋œ ์˜์‚ฌ ๊ฒฐ์ •์€ ์ข‹์€ ์ง•์กฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

MS๊ฐ€ ๊ณผ๊ฑฐ์— ์ง‘์ค‘ํ•˜๊ธฐ๋กœ ๋งˆ์Œ๋จน์—ˆ๋‹ค๋ฉด, ๋ฏธ๋ž˜์— ํŒจ๋ฐฐํ–ˆ์„ ๋•Œ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ์— ๋น ์ง€๊ฒŒ ํ•œ ์ƒ๊ฐ์€ ๋ฌธ์ œ์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ์–ธ์–ด๊ฐ€ ์‹œ์žฅ์— ์ง„์ž…ํ•˜๋ฉด์„œ ํ•œ ์–ธ์–ด๊ฐ€ ํฐ ์‹œ์žฅ ์ ์œ ์œจ์„ ์œ ์ง€ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค์ด์ง€๋งŒ ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด .NET์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ํ”ผํ•ด๊ฐ€ ์šฐํ˜ธ์  ์ธ ํ™”์žฌ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

BTW... ์–ด์ œ ์Šคํƒ ๋“œ์—…๋„ ์žˆ์—ˆ๋‚˜์š”? live.asp.net์— ๋กœ๊ทธ์ธํ–ˆ์ง€๋งŒ ๋น„๋””์˜ค/ํ”ผ๋“œ ๋˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†์ด ์นด์šดํŠธ๋‹ค์šด์ด ์žฌ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค...

@Mike-EEE ๊ทธ๋“ค์€ ๋‹น์‹ ์ด ์˜จ๋‹ค๋Š” ์†Œ์‹์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค :stuck_out_tongue_winking_eye:

๊ทธ๋“ค์ด ์ด๊ฒƒ์„ ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ์ขŒ์ ˆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค: http://www.brettmorrison.com/microsofts-little-decision-is-a-big-mistake

์˜ค๋Š˜์˜ ์ž…์žฅ์—์„œ: https://youtu.be/YJsQ3tnS7Ew?t=38m45s

๊ทธ๋Š” ์—ฌ๊ธฐ์—์„œ project.json์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. https://youtu.be/YJsQ3tnS7Ew?t=26m12s

project.json ํ˜•์‹์ด ํŽธ์ง‘ํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ๊ฐ„๋‹จํ•˜์ง€๋งŒ(๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์›์ˆญ์ด์ธ .NET ๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ) ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์•„๋ฌด๋„ ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ . ๋„ท์ฝ”์–ด. ์ง€๊ธˆ๊นŒ์ง€ Restsharp์˜ ํ•œ ๋ถ„๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์€ project.json ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. JSON.NET, Structuremap, NUnit ๋“ฑ์€ ๋ชจ๋‘ ๊ฐœ๋ฐœ์ž๊ฐ€ ํฌ๋ง์„ ๋ฒ„๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์˜ค๋ž˜๋œ DNX ๋ถ„๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์ ํŠธ ํ˜•์‹ dotnet ๋ช…๋ น์ค„ ๋„๊ตฌ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ .NET Core RC1/2๋ฅผ ๋ฆด๋ฆฌ์Šค ํ›„๋ณด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ์‹คํ—˜์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋ฒ ํƒ€ ๋˜๋Š” ์•ŒํŒŒ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

vNext๋กœ ์ด๋™ํ•˜๋Š” ์ฃผ๋œ ๋™๊ธฐ๋Š” ์ €๋ ดํ•œ Linux ํ˜ธ์ŠคํŒ…๊ณผ Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ .NET Core ๋ฒ„์ „์ด ๋ˆ„๋ฝ๋œ ๋„ˆ๊ฒŸ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์™„์ „ํžˆ ์žฅ์• ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ”„๋กœ์ ํŠธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@yetanotherchris dnx๋Š” rc1์˜ ๊ฐœ๋…์ด์—ˆ๊ณ  rc2์˜ dotnet cli๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ dnx ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋ถ„๊ธฐ๊ฐ€ ๋ถ€์‹คํ•ฉ๋‹ˆ๋‹ค.

project.json์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์—ฌ๊ธฐ์— ์žˆ๊ณ  rc2์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. RTM ์ดํ›„์— ํ–ฅํ›„ ์‚ฌ๋ผ์งˆ ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜

json.net(์ผ๋ช… newtonsoft.json)์ด ์ž‘๋™ํ•˜๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
nunit์€ ํ˜ธํ™˜๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋‘ xunit afaik์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
structuremap์—๋Š” rc2 ํ˜ธํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์ง rc2๋กœ ์ด์‹๋˜์ง€ ์•Š์€ ํƒ€์‚ฌ ํ•ญ๋ชฉ์ด ๋งŽ์ด ์žˆ์ง€๋งŒ Microsoft๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ํƒ€์ด๋ฐ๊ณผ ํ˜ธํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์‹œ๊ธฐ๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@yetanotherchris project.json์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ „์˜ ๋น„ netstandard ๋ชจ๋‹ˆ์ปค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

"frameworks": {
  "netcoreapp1.0": {
    "imports": [
      "dotnet5.6",
      "dnxcore50",
      "portable-net45+win8"
    ]
  }

์•„๋งˆ๋„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์•„์ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ท€์ฐฎ๊ฒŒ ํ•˜์ง€ ์•Š์€ ์ด์œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ RTM ์ „์— ๋‹ค๋ฅธ ์›€์ง์ด๋Š” ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@joaudette ๋ช…๋ น์ค„ ๋„๊ตฌ dotnet ์•„๋‹Œ ๋ถ„๊ธฐ ์ด๋ฆ„(DNX)์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด NUnit์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” MsTest ์™ธ๋ถ€์˜ ์‚ฌ์‹ค์ƒ์˜ ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ์ž…๋‹ˆ๋‹ค. JSON.NET ๋˜๋Š” Structuremap ํŒจํ‚ค์ง€๋ฅผ ์–ด๋””์—์„œ ์ฐพ๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. DNX๋ผ๋Š” ๋น„๊ณต์‹ ๋ฒ„์ „์˜ Structuremap๊ณผ ์—ฌ๊ธฐ์— Newtonsoft ๋ถ„๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ nuget.org์—๋Š” .NET Standard 1.0 ๋ฒ ํƒ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(.net ํ‘œ์ค€์€ ์ด์ œ ์ค‘๋ณต๋จ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ).

@neoKushan ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@yetanotherchris

(.net ํ‘œ์ค€์€ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ์ด์ œ ์ค‘๋ณต๋ฉ๋‹ˆ๋‹ค).

์™œ ๊ทธ๋ ‡๊ฒŒ ๋งํ•ฉ๋‹ˆ๊นŒ? Netstandard๋Š” ํ”„๋กœ์ ํŠธ ๋ณ€๊ฒฝ๊ณผ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ํ–ฅํ›„ csproj ํŒŒ์ผ์—์„œ netstandards๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Netstandard๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด project.json์„ ๋ฒ„๋ฆฌ๋Š” ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ์ „์ฒด .net ์ƒํƒœ๊ณ„๋ฅผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ด๊ฒƒ์ด netstandard๋„ ํ…Œ์ด๋ธ”์— ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์š”์ ์€ ์ตœ์ข… ๋ฒ„์ „์—์„œ ์™„์ „ํžˆ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฆด๋ฆฌ์Šค ํ›„๋ณด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์–ด๋ฆฌ์„์€ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

@yetanotherchris rc2๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ด๋ฏ€๋กœ ํƒ€์‚ฌ์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํŒจํ‚ค์ง€๋„ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
https://www.nuget.org/packages/Newtonsoft.Json/9.0.1-beta1
https://www.nuget.org/packages/StructureMap.Dnx/0.5.1-rc2-final

NUnit์ด ๋‚˜์ค‘์— ์ง€์›๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ง€๊ธˆ์€ .NET Core ๋ฐ ASP.NET Core ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ๋žŒ๋“ค์ด xunit์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
https://xunit.github.io/docs/getting-started-dotnet-core.html

@yetanotherchris rc1์— beta9๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋ชจ๋‘ ๋™์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. rc2๋Š” ์ตœ์ดˆ์˜ ์‹ค์ œ rc ํ’ˆ์งˆ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.
project.json ๋“ฑ์€ ๊ทธ ์ž์ฒด๋กœ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๋„๊ตฌ์ด๋ฏ€๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ RTM์ธ ๊ฒฝ์šฐ์—๋„ ๋„๊ตฌ๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์œ ์ง€๋˜๊ณ  ํ•œ๋™์•ˆ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋‹ค์‹œ ๊ฐ€์ ธ์™€๋„ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ project.json์„ ์œ ์ง€ํ•˜๊ณ  ์ œํ•œ๋œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” ๊ทธ ์•„์ด๋””์–ด๋ฅผ ์ฆ๊ฒ๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Scott Hunter, dotnetConf 2016 1์ผ ์ฐจ ๊ธฐ์กฐ ์—ฐ์„ค 12m24s

Mr. Hunter๊ฐ€ GitHub์— ์žˆ๋Š”์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ œํ’ˆ ํฌ๋Ÿผ์—์„œ ์žก๋‹ด์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ๊ทธ ์†Œ๋ฆฌ์—์„œ ๊ทธ๋Š” ์—ฌ๊ธฐ์—์„œ ํ”ผ๋“œ๋ฐฑ์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

.NET ๋ฐ Visual Studio์˜ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ฆฌ์ž๋กœ์„œ @coolcsh๊ฐ€ ์†”์งํžˆ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์ด ์žˆ๋Š”์ง€ ์˜์‹ฌ

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

๋ชจ๋‘์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://blogs.msdn.microsoft.com/webdev/2016/06/08/notes-from-the-asp-net-community-standup-june-2-2016/

๋งํ•˜์ž๋ฉด ํŒ ํ•ญ์•„๋ฆฌ์— ๋‹ฌ๋Ÿฌ๋ฅผ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. :stuck_out_tongue:

tugberkugurlu๋Š” "๊ฐ‘์ž๊ธฐ ์•”ํ‘ ๋ฌผ์งˆ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„๊ณต๊ฐœ๋กœ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋Œ“๊ธ€์„ ๋‹ฌ์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ "์šฐ๋ฆฌ ๊ธฐ์—… ๊ณ ๊ฐ๋“ค์ด ํ˜ธํ™˜์„ฑ๊ณผ ์šฐ๋ฆฌ ์ œํ’ˆ์— ๋Œ€ํ•œ ํ˜„์žฌ ํˆฌ์ž์— ๋Œ€ํ•ด ํƒ€๋‹นํ•œ ์šฐ๋ ค๋ฅผ ์ œ๊ธฐํ–ˆ๋‹ค"๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. '์ปค๋ฎค๋‹ˆํ‹ฐ'๊ฐ€ ๊ฐ€์žฅ ํฐ ๋ชซ์„ ํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ๋ถˆ๋งŒ์Šค๋Ÿฌ์›Œ ๋ณด์ด์ง€๋งŒ, ๋ญ, ๋ญ๋‹ˆ๋ญ๋‹ˆํ•ด๋„ ๊ธฐ์—… ๊ณ ๊ฐ์€ ํ”Œ๋žซํผ, ๋„๊ตฌ ๋ฐ ์ง€์›์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด ๋งŽ์€ ๋ˆ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์šฐ๋ ค๋Š” ๋ฌด์‹œ๋˜๊ฑฐ๋‚˜ ๋ฌด์‹œ๋˜์–ด์„œ๋„ ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ MS๊ฐ€ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๊ฒƒ์€ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์ •์˜ ๊ฐ€๋Šฅํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๋„๋ฉ”์ธ์—์„œ ์ƒํ˜ธ ์šด์šฉ์„ฑ๊ณผ ๊ณต์œ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ csproj๋ฅผ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ณ  ํ›จ์”ฌ ๋” ์œ ๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฒˆ ๋งํ–ˆ๋“ฏ์ด ์ €๋Š” ๋Œ€๊ธฐ์—… ๊ณ ๊ฐ์ธ ๋Œ€๊ธฐ์—…์˜ ๊ธฐ์—… ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ƒ์˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด "์•”ํ‘๋ฌผ์งˆ ๊ธฐ์—… ๊ฐœ๋ฐœ์ž"๋Š” ์ •ํ™•ํžˆ ๋ˆ„๊ตฌ์˜€์Šต๋‹ˆ๊นŒ? ๊ทธ ์ •๋ณด๋Š” ๋ช…๋ฐฑํžˆ ์ผ๊ธ‰๋น„๋ฐ€์ž…๋‹ˆ๋‹ค. 007 ๋ ˆ๋ฒจ ๋ฌผ๊ฑด.

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

@shederman ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ UWP ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด Enterprise Unity Dev?

์œ„์˜ ์–ด๋Š ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์ž์‚ฐ ๊ด€๋ฆฌ ๋ฐ ์€ํ–‰ ํ†ตํ•ฉ์„ ์œ„ํ•œ ํ•ต์‹ฌ ์‹œ์Šคํ…œ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์˜จ๋ผ์ธ ๋ฌผ๊ฑด๋„.

@shederman ์•„๋งˆ๋„ ๋‹น์‹ ์ด ๋ฌป์ง€ ์•Š์€ ์ด์œ ๊ฐ€ ์•„๋‹๊นŒ?

๋ช…ํ™•ํžˆ ํ•ด์ฃผ์„ธ์š”?

๋‹น์‹ ์ด ์ •๋ง๋กœ ์œ ์ผํ•œ ๊ธฐ์—… DEVS์˜ MS๊ฐ€ ํ˜„์žฌ ์ง€์›ํ•˜๋Š” ์‹œ์žฅ์˜ 1 %๋ฅผ ์œ„ํ•ด ๊ทธ ์ผ์„ ์ด๋™ ์ž‘์—…์ž…๋‹ˆ๋‹ค ๊ฑด๊ฐ€์š”, UWP, ์Œ์— ๋Œ€ํ•œ ๊ด€์‹ฌ ์‚ฌ์šฉ์ž ๋ฐ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์˜ 5 %๋ฅผ ์• ํ”Œ ๋ฆฌ์ผ€์ด์…˜? ๊ฐœ๋ฐœ์˜ ์ „์ฒด ์ŠคํŽ™ํŠธ๋Ÿผ ์ค‘, MS๋Š” ๋ชจ๋“  ๊ฒƒ์—ํ•˜์ง€๋งŒ ๊ทธ๋“ค์˜ ๋’ค๋ฅผ ๋Œ๊ณ ์žˆ๋‹ค?

์Œ. ์•„๋‹ˆ.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ _๊ทธ_๊ทธ๋ฃน๊ณผ ๋Œ€ํ™”ํ•œ ํ›„์— ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์งˆ๋ฌธ์„ ๋ฐ›์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Microsoft๋Š” asp ๊ฐœ๋ฐœ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์ง€์›

์˜ˆ, ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์ง€์›ํ•˜๋ ค๋ฉด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์ž์˜ 5%๊ฐ€ ์„ ํƒํ•œ ํ•˜์œ„ ์ง‘ํ•ฉ๊ณผ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์ž ์ „์ฒด์˜ ์˜๊ฒฌ์„ ์ธก์ •ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค .

๋”ฐ๋ผ์„œ ๋Œ€ํ˜• ์€ํ–‰์˜ ์˜๊ฒฌ์„ ๋“ค์œผ๋ ค๋ฉด ๋ชจ๋“  ๊ฐœ๋ฐœ์„ UWP/Unity/Mobile๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ง๋„ ์•ˆ๋ผ

์•„๋งˆ๋„ ๊ทธ๋“ค์€ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์™€ ์ด์•ผ๊ธฐํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ์ง€๋‚œ 2๋…„ ์ด์ƒ ๋™์•ˆ ํ•ด์˜จ ์ผ์ด ์•„๋‹Œ๊ฐ€?

@shederman ๊ทธ๋ž˜์„œ _๋‹น์‹ ์ด ๊ฐœ์ธ์ ์œผ๋กœ_ ๋ฌป์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์‹ ์˜ ๊ฐœ๋ฐœ ๋ฒ”์œ„๋ฅผ ๋‹ค๋ฃจ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ด€์—ฌํ•˜์ง€ ์•Š์•˜์Œ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

๋˜ํ•œ, ๊ทธ ์ˆซ์ž๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ทธ๋งŒ ๋‘์‹ญ์‹œ์˜ค. _๊ทธ๊ฑด_ ๋ง๋„ ์•ˆ๋ฉ๋‹ˆ๋‹ค.

@poke ๋ˆ„๊ฐ€ ๊ด€๋ จ

๋‚˜๋Š” ์‹ค์ œ๋กœ ์ˆซ์ž๊ฐ€ ๊ฝค โ€‹โ€‹๊ด€๋Œ€ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@shederman ๋‚ด ์ƒ๊ฐ์— ๋‹น์‹ ์€ ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค์—ฌ๋‹ค๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ 2๋…„ ๋™์•ˆ asp.net ์ชฝ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์—ˆ์ง€๋งŒ .net core๊ฐ€ ํผ์ง€๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด "์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?"๋ผ๊ณ  ๋ฌป๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐฑ๋ฃธ ๊ฑฐ๋ž˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ง ๊ทธ๋Œ€๋กœ ๋ช‡ ๋…„์„ ์š”๊ตฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด .net core์—์„œ ๋” ๋งŽ์€ ๊ฒƒ์„ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์œ„ ๋ฅผ

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

๊ทธ๊ฒƒ์„ ๋ณด๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• - ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๊ทธ๊ฒƒ์„ ๋ณด๋Š” ๋ฐฉ์‹ - ๋‹น์‹ ์€ ์งˆ๋ฌธ์„ ๋ฐ›์•˜๊ณ  ๋ช‡ ๋‹ฌ ์ „์— ๋ฐœํ‘œ๊ฐ€ ์ด๋ฃจ์–ด์ง„ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ์™€๋„ ์ƒ์˜ํ•˜์ง€ ์•Š๊ณ  ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๋‹ค๊ณ  ๋งํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋ชจ๋“  ์™ธ์นจ์— ๋Œ€ํ•ด, Microsoft๋Š” ์—ฌ์ „ํžˆ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ž‘์—… ์ค‘์ด๋ฉฐ ์•„์ง ์ตœ์ข… ์กฐ๊ฐ์ด ์ •๋ฆฌ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ง€๊ธˆ์ด ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋งํ•  ๋•Œ๋ผ๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. Scott Hunter๋Š” ์‚ฌ๋žŒ๋“ค์ด _์ •๋ง๋กœ_ project.json์„ ์˜ต์…˜์œผ๋กœ ์›ํ•œ๋‹ค๋ฉด ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ง์„ ๋ฏฟ์ง€ ๋ชปํ•˜๊ฒ ๋‹ค๋ฉด ๊ฐ€์„œ dotnetconf ๊ธฐ์กฐ์—ฐ์„ค์„ ์‹œ์ฒญํ•˜์„ธ์š”.

@neoKushan Scott์ด ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋ฉด์„œ ํ•œ ๊ฑธ์Œ ๋ฌผ๋Ÿฌ์„œ์„œ ๊ณ ๋ง™๊ฒŒ ์ƒ๊ฐํ•˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์ด ์›ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ ์ค‘์•™ ์ง‘์ค‘์‹ ์ง€์ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด project.json ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์ €๊ธฐ์„œ ํ† ๋ก . ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๊ทธ๊ฒƒ์ด ์ œ๊ธฐ๋˜์—ˆ์„ ๋•Œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๊ฐ™์€ ๋Œ€๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. "์ด๋ด, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •๋ง๋กœ ์›ํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

project.json ์ข‹์€ ๋‹จ๊ณ„์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ์ƒ๊ฐ์—๋Š” ์ˆœ์ง„ํ–ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด C++ ๋˜๋Š” F#์œผ๋กœ ์ž‘์„ฑ๋œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์›ํ•  ๊ฒƒ์ด๋ผ๋Š” ์ธ์‹์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. dnx ๋ฐ nuget์„ ์–ด์…ˆ๋ธ”๋ฆฌ ๋‹จ์œ„๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ดˆ๊ธฐ ์„ค๊ณ„ ๊ฒฐ์ • ์ค‘ ์ผ๋ถ€๋Š” ์ „์ฒด ๋‹ท๋„ท ์ƒํƒœ๊ณ„์—์„œ ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๋‹ท๋„ท์— ํ™”ํ•ฉ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์—์„œ ๊ทธ๋“ค์ด ์ด๋Ÿฌํ•œ ํž˜๋“  ์„ ํƒ์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ํฌํฌ์™€ ์žฌ์ฐฝ์กฐ๋Š” ๋‹ท๋„ท ์ƒํƒœ๊ณ„์— ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๋ฟ ์•„๋‹ˆ๋ผ ํ•ด์น  ๋ฟ์ž…๋‹ˆ๋‹ค. Node and Go(ํŠนํžˆ Go)๋Š” ๊ท ์งˆํ•˜๊ณ  ์ผ๊ด€๋œ ํ”Œ๋žซํผ/๋„๊ตฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๋ณด์ž์—๊ฒŒ ๋งค์šฐ ๋งค๋ ฅ์ ์ž…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ 5๋…„ ํ›„์—๋Š” JSON ๋Œ€ YAML์ด ๋  ๊ฒƒ์ด๊ณ  ๊ทธ ์ดํ›„์—๋Š” YAML ๋Œ€ Groovy(์˜ˆ: gradle)๊ฐ€ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด XML ๋Œ€ JSON ์ธ์ˆ˜๊ฐ€ ์–ด๋ฆฌ์„์€ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. XML์€ ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์•…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MSBuild๋Š” ๋งค์šฐ ์„ฑ์ˆ™ํ–ˆ์œผ๋ฉฐ ๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋  ๋งŽ์€ ํˆฌ์ž๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, csproj ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ๋œ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก MSBuild๋กœ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ nuget ์ข…์†์„ฑ์„ nuget.json ํŒŒ์ผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ๋ณด๋‹ค ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ "ํ–‰๋ณตํ•œ ๊ฒฝ๋กœ"์— ์žˆ์œผ๋ฉด csproj๊ฐ€ ๊ฑฐ์˜ ๋น„์–ด ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ web.config์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ csproj๋ฅผ ์กฐ์ •ํ•˜๋Š” cli ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์—๊ฒŒ๋Š” project.json์ด ๊ทธ๋ฆฌ์šธ ๊ฒƒ์ด์ง€๋งŒ ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. C# ํ”„๋กœ์ ํŠธ๋Š” ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. F# ๋•Œ๋ฌธ์— msbuild๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ปดํŒŒ์ผ ์ˆœ์„œ๋ฅผ ์œ„ํ•ด project.json์„ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋†“์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ xml์ด ์•…ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ fsproj ํŒŒ์ผ์— msbuild๋กœ ์ธํ•ด ๋งŽ์€ ํŒฝ์ฐฝ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฐ์ •์— ๋Œ€ํ•œ ๋‚˜์˜ ๋ฌธ์ œ๋Š” ์ฃผ๋กœ csproj ํŒŒ์ผ์ด xml/json์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ csproj ํŒŒ์ผ์— ํฌํ•จํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํ”„๋กœ์ ํŠธ ์ •์˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  IDE ์„ค์ •์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋นŒ๋“œ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ _ํ•˜์ง€_์•Š์€_ ๋งŽ์€ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ๋”์ฐํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๊ณ  msbuild๊ฐ€ ๋•Œ๋•Œ๋กœ ์ƒ๋‹นํžˆ ๋‚œํ•ดํ•œ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ๋งŒ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค. .NET Core๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๊ณ  ๋‹จ์ˆœํžˆ ์ž‘์—…๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋นŒ๋“œ ๋„๊ตฌ์— ๋Œ€ํ•ด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋ถˆ๊ฐ€์ง€๋ก ์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด. ๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด์—‡์ด๋ฉฐ ๋นŒ๋“œ ๋ฐฉ๋ฒ•๊ณผ ๋ณ„๋„๋กœ ๋ฌด์—‡์— ์˜์กดํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งํ•  ๊ฒƒ๋„ ์—†์ด ์ด๊ฒƒ์€ ์ดˆ๊ธฐ ์˜ต์…˜์ด ์ง€๊ธˆ msbuild์—์„œ ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋„๊ตฌ ์„ ํƒ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ csproj์˜ ํ•ต์‹ฌ ๋ฌธ์ œ๋Š”
๊ทธ๊ฒƒ์€ ๋ชจ๋“  ๊ฒƒ์„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” PatriotBob์ด ์ œ์•ˆํ•˜๋Š” ์ค‘๊ฐ„ ์ง€์ ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค ...

2016๋…„ 6์›” 21์ผ ํ™”์š”์ผ ์˜คํ›„ 1์‹œ 28๋ถ„ PatriotBob [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฐ์ •์— ๋Œ€ํ•œ ๋‚ด ๋ฌธ์ œ๋Š” ์ฃผ๋กœ csproj ํŒŒ์ผ์ด ์ ์€ ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค.
xml/json ๋ฐ csproj์— ํฌํ•จํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ •๋ณด
ํŒŒ์ผ. ์—ฌ๊ธฐ์—๋Š” ํ”„๋กœ์ ํŠธ ์ •์˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  IDE ์„ค์ •์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํฌํ•จ๋œ ๋นŒ๋“œ ๋‹จ๊ณ„, ์ฐธ์กฐ ํฌํ•จ...

๊ทธ๋ ‡๊ฒŒ _ํ•˜์ง€_์•Š์€_ ๋งŽ์€ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค์—ˆ๋‹ค
๋”์ฐํ•˜๊ณ  msbuild ์กด์žฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ๋งŒ ๋ณตํ•ฉ์ ์ž…๋‹ˆ๋‹ค.
๋•Œ๋•Œ๋กœ ์ƒ๋‹นํžˆ ์‹ ๋น„๋กญ์Šต๋‹ˆ๋‹ค. .NET Core๋ฅผ ์ข‹๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์†”์งํžˆ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด
์ž‘์—…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋„๊ตฌ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋ถˆ๊ฐ€์ง€๋ก ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‚˜๋Š”ํ•ด์•ผํ•œ๋‹ค
๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋ฌด์—‡์— ์˜์กดํ•˜๋Š”์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•. ๋งํ•  ๊ฒƒ๋„ ์—†์ด ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์„ ํƒ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ดˆ๊ธฐ ์˜ต์…˜์ด ์ง€๊ธˆ msbuild์—์„œ ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aspnet/Home/issues/1433#issuecomment -227511911 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe/AKh-zsedLYg_PToadpD-_ewZPci0oHGCks5qOB8rgaJpZM4IcGCt
.

์ „์ฒด XML์ด ๋‚˜์˜๊ณ  JSON์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” PatriotBobo์˜ ๋ง์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

npm ์˜ package.json ์—์„œ ์™„์ „ํžˆ as/w ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋‚ด ํ”„๋กœ์ ํŠธ ์„ ์–ธ, ๋‚ด ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•, ๋‚ด ํ”„๋กœ์ ํŠธ ์—…๊ทธ๋ ˆ์ด๋“œ(์˜ˆ: ๊ทธ๋ฆฐํ‚คํผ), ์ฝ๊ธฐ/์“ฐ๊ธฐ/ํŒŒ์‹ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“  ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. _๋„ˆ๋ฌด ์‰ฝ๊ฒŒ. ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚ด ์—ญ์‚ฌ๋Š” C++/java/python/node์— ์žˆ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ ๋‚ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ npm ๊ฒฝํ—˜์„ ๊ฐˆ๋งํ•ฉ๋‹ˆ๋‹ค.

project.json ๋Š” ์ด๋Ÿฌํ•œ ๋™์ผํ•œ ํŠน์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ๋กœ ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•จ๊ณผ ๊ฐ•๋ ฅํ•จ์„ ํฌ์ƒํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋ฐฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋ชจ๋ธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ .net ํ•ต์‹ฌ ํŒ€์ด ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์ด๋Ÿฌํ•œ ํŠน์„ฑ, ํƒ์›”ํ•จ ๋ฐ ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด! ๊ทธ๋Ÿฌ๋‚˜ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‹จ์ˆœํ•จ์˜ ์•„๋ฆ„๋‹ค์›€์„ ํ›ผ์†ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋˜ํ•œ, ๋‚˜๋Š” ๊ฑฐ๋Œ€ํ•œ ์Šค๋ ˆ๋“œ์˜ ์ด ์‹œ์ ์—์„œ ๋‚ด๊ฐ€ ๋‹จ์ง€ ์†Œ์Œ์ผ ๋ฟ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ค‘์žฌ์ž๋Š” ๊ทธ๊ฒƒ์„ ๋‹ซ๊ณ  ๋” ํ†ต์ œ๋œ ๋ฐฉ์‹์œผ๋กœ ์‹œ๋ จ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์ข‹์€ ํ”ผ๋“œ๋ฐฑ. ์•ฝ๊ฐ„์˜ ํŠธ๋กค๋ง๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค :$ :)

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