Runtime: ๋‹จ์ผ exe ์ž์ฒด ํฌํ•จ ๋œ ์ฝ˜์†” ์•ฑ

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

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

๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ์„ ์–ป๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋ฒˆ๋“ค๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด Windows๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ ํฐ myapp.exe ํ•˜๋‚˜.

ILMerge์™€ ๋น„์Šทํ•œ ๊ฒƒ์„ ์ฐพ๊ณ  ์žˆ์ง€๋งŒ .net ์ฝ”์–ด๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. dotnet publish ๋˜๋Š” ๋‹ค๋ฅธ ๋ช…๋ น์˜ ์ผ๋ถ€ ์˜ต์…˜ ํ”Œ๋ž˜๊ทธ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋Šฅ ์š”์ฒญ์œผ๋กœ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ.

area-Meta question

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

์ด๊ฒƒ์€ ๋”์ฐํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์™œ ์ด๊ฒƒ์ด ๋””์ž์ธ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์Šน์ธ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํด๋ผ์ด์–ธํŠธ ์ค‘ ํ•œ ๋ช…์—๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ๊ณ , ๋ฌด์—‡์„ ์—ด์–ด์•ผํ• ์ง€ ๊ทธ์—๊ฒŒ ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.
image

์ด๊ฒƒ์€ ๋‹จ์ง€ ์ถ”์•…ํ•˜๊ณ  ์™„์ „ํ•œ ์—‰๋ง์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ์‹œ๊ฐ„/
MyProgram.exe
MyLib.dll

์ด๊ฒƒ์€ ๋” ๋‚˜์€ ์ƒ๊ฐ์ด์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค

Java๋„ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
explorer_2018-04-21_16-42-33

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

์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/corert ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ์ด ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐˆ ์ž‘์—…์„ ์ฃผ์‹œํ•˜์‹ญ์‹œ์˜ค.

CoreRT๋Š”์ด ์†”๋ฃจ์…˜์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ. CoreRT๊ฐ€ ์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ์ฐพ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์—ฌ๊ธฐ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ํŠน๋ณ„ํžˆ ์‚ฌ์ „ ์ปดํŒŒ์ผ ์—†์ด์ด ๊ธฐ๋Šฅ

.NET Framework๋Š” OS์— ์ด๋ฏธ ๋งŽ์€ ํŒŒ์ผ์ด ์žˆ์œผ๋ฏ€๋กœ "์†์ž„์ˆ˜"์ž…๋‹ˆ๋‹ค.
์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋จธ์‹  ์ „์ฒด ๊ณต์œ  .NET Core๋ฅผ ์„ค์น˜ํ•˜์—ฌ .NET Core์—์„œ๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CoreCLR์„ ๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ๋ณ‘ํ•ฉ (๊ธฐ๋ณธ + ๊ด€๋ฆฌ ํฌํ•จ)ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ž‘์—…์ด ์•„๋‹ˆ๋ฉฐ ๋„ˆ๋ฌด ๋งŽ์€ ๊ณ ๊ฐ์—๊ฒŒ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๊ทธ๋‹ค์ง€ ํฅ๋ฏธ ๋กญ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐจ์ด์ ์€ ๋ชจ๋“  Windows ์ปดํ“จํ„ฐ์—๋Š” .NET Framework๊ฐ€ ์žˆ์ง€๋งŒ .NET Core๋Š” ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐํฌ๋ฅผ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฐ€์น˜๊ฐ€์žˆ๋Š” ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ ์ž๋ฆฌ์— ๋จธ๋ฌผ๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ณ ๊ฐ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ exe ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์–ธ์  ๊ฐ€. :-)

๋ฐฐํฌ๋ฅผ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฐ€์น˜๊ฐ€์žˆ๋Š” ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด

.NET Framework๋ณด๋‹ค .NET Core๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๋ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ, ๋ชจ๋“ˆ์„ฑ, ์„œ๋น„์Šค ์šฉ์ด์„ฑ, ๊ฒฉ๋ฆฌ ๋“ฑ. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๊ต์ฐจ ํ”Œ๋žซํผ ์„ฑ์„ ๋ฌด์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ exe ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ์™ธ๊ด€์ƒ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ ํŒŒ์ผ์ด ๋‹จ์ผ ํŒŒ์ผ์ด๊ฑฐ๋‚˜ ๊ทธ ์•ˆ์— ๋ช‡ ๊ฐœ์˜ ํŒŒ์ผ์ด์žˆ๋Š” ๋‹จ์ผ ํด๋” ์ธ ๊ฒฝ์šฐ์—๋Š” (๊ด€๋ จ๋œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ) ์‹ค์ œ ๊ธฐ๋Šฅ์  ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

๊ด€๋ จ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ : https://github.com/dotnet/core/issues/600

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

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

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

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

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

@thefringeninja ๊ด€๋ จ ์ง€์ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹จ์œ„๋กœ ์ž‘์—… ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด๊ณ  ๋ฐฐ์†ก ํ•œ ํ•ญ๋ชฉ์„์ธ์ง€ ์ ์œผ๋กœ ์ธ์‹ํ•ด์•ผํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์ด๊ณ  ์Šคํฌ๋ฆฝํŒ… ๋˜๋Š” ์›ํ•˜๋Š” ์ƒํƒœ์™€ ๊ฐ™์€ ์ž‘์—… ๋„๊ตฌ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.

dotnet ๋„๊ตฌ๊ฐ€ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ด๊ณ  2.0์— ๋ถˆ๊ณผํ–ˆ์ง€๋งŒ, golang๊ณผ ๊ฐ™์€ ๋Œ€์•ˆ์— ๋น„ํ•ด์ด ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ๋ถ€์กฑํ•˜๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋กœ๋“œ๋งต์— ์ถ”๊ฐ€ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

lib ๊ฐœ๋ฐœ์ž๋กœ์„œ ILMerge๋ฅผ Core๋กœ ๋˜๋Œ๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘

Dotnet.exe ๋Š” ๋‹จ์ผ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. NuGet.exe๋Š” ๋‹จ์ผ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™”์žฅํ’ˆ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๋‹จ์ผ ํŒŒ์ผ exe๋Š” 100 ๊ฐœ์˜ ํŒŒ์ผ์ด ๋“ค์–ด์žˆ๋Š” ํด๋”๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ๋‹จ์ˆœํ•จ์„ ์™ธ์นฉ๋‹ˆ๋‹ค! dotnetcore๋กœ ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ๋ช‡ ์ฃผ ๋™์•ˆ์˜ ์ž‘์—… ๋์— CLI ์ฝ˜์†” ๋„๊ตฌ๋ฅผ ๋‹จ์ผ .exe์— ๊ฒŒ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์™”์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ์ž์ฒด ํ•ต์‹ฌ ์•ฑ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐ ํ–ˆ๋‚˜์š”?

๋ฟก๋ฟก

์ด๊ฒƒ์ด ์ž์ฒด ํ•ต์‹ฌ ์•ฑ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐ ํ–ˆ๋‚˜์š”?

์ž์ฒด ํฌํ•จ ๋œ ์•ฑ์˜ ์š”์ ์€ ์ž์ฒด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์•ฑ ์ž์ฒด์— ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ƒ ์ปดํ“จํ„ฐ์— .Net Core๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์•ฑ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด ์ „์ฒด ํŒŒ์ผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํŒŒ์ผ ๋งŒ ์žˆ์œผ๋ฉด ๋ฐฐํฌ๊ฐ€ ๋” ์‰ฌ์›Œ ์ง€์ง€๋งŒ ๊ทธ๊ฒŒ ๋‹ค๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์—ฌ์ „ํžˆ ์ž์ฒด ํฌํ•จ ๋œ ์•ฑ์ž…๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์ •๊ธฐ์ ์œผ๋กœ .NET์—์„œ ๋ช…๋ น ์ค„ ๋„๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ ์ด๋ฅผ 1 EXE๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ / ๋ฐฐํฌ / ํŒจํ‚ค์ง• ๋ฐฉ๋ฒ•์ด ๋” ๊ฐ„๋‹จ ํ•ด์ง‘๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•ญ์ƒ ๋ชจ๋“  .config ๋ฐ ๊ธฐํƒ€ ํ•„์ˆ˜ ํŒŒ์ผ์„ EXE ์•ˆ์— ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ EXE๋ฅผ ๋ฏธ๋‹ˆ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์ด์ ์ด ์—ฌ๊ธฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋”์ฐํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์™œ ์ด๊ฒƒ์ด ๋””์ž์ธ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์Šน์ธ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํด๋ผ์ด์–ธํŠธ ์ค‘ ํ•œ ๋ช…์—๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ๊ณ , ๋ฌด์—‡์„ ์—ด์–ด์•ผํ• ์ง€ ๊ทธ์—๊ฒŒ ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.
image

์ด๊ฒƒ์€ ๋‹จ์ง€ ์ถ”์•…ํ•˜๊ณ  ์™„์ „ํ•œ ์—‰๋ง์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ์‹œ๊ฐ„/
MyProgram.exe
MyLib.dll

์ด๊ฒƒ์€ ๋” ๋‚˜์€ ์ƒ๊ฐ์ด์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค

Java๋„ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
explorer_2018-04-21_16-42-33

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

@Scellow @PRIMETSS ๋™์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค

์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? ์ด์— ๋Œ€ํ•œ ์ˆ˜์š”๋Š” ์ง€๋ถ•์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์ด ๋ณ„๋„์˜ ํด๋”์— ์ถ”๊ฐ€ํ•˜์—ฌ bin์— ์••์ถ•ํ•˜๊ณ  exe์™€ bin์˜ ๋‘ ํŒŒ์ผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„ํŽธํ•œ ๋ฐฐํฌ.

๋‹ค์‹œ ์—ด๊ณ  ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ€์งˆ ๋˜ ๋‹ค๋ฅธ +1.

์ž ๊ธ‰์‹ ๋ฐฐํฌ๊ฐ€ ์ž๊ธ‰ ์ž์กฑ์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๊ณ  ์—ฌ๊ธฐ์—์„œ ์ œ ๊ธธ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„๋ณด๊ณ  ์‹ถ๋‹ค.

์–ด๋–ป๊ฒŒ ์ด๊ฒƒ์ด ๋‹จ์ง€ ์™ธ๊ด€์ƒ์˜ ๋ฌธ์ œ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ฐœ๋ฐœ์ž ๋งŒ ...)
์•„๋ฌด๋„ ์„ค์น˜๋˜์ง€ ์•Š์€ ๋„๊ตฌ๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? (.NET์€ dll-hell์„ ํ•ด๊ฒฐํ–ˆ์œผ๋ฉฐ .net ์ฝ”์–ด๋Š” ๋‹ค์‹œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค)

๋‚ด ๋ช…๋ น ์ค„ ๋„๊ตฌ๊ฐ€ ์ž์ฒด ํฌํ•จ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฑด ์ •๋ง ๋‚˜์˜๋‹ค!

+1

+1 .net ์ฝ”์–ด ๋Ÿฐํƒ€์ž„์ด์—†๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Azure Batch์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ํ™œ๋™์„ ์‹คํ–‰ํ•˜๋ ค๊ณ ํ–ˆ๋Š”๋ฐ "์ž์ฒด ํฌํ•จ"๋ฒ„์ „์—์„œ ์ƒ์„ฑํ•˜๋Š” ๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์—†์Šต๋‹ˆ๋‹ค.

Total size of resourceFiles cannot be more than 32768 characters

์ด๊ฒƒ์€ ๊ณต์‹์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ์ง€๋งŒ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋…๋ฆฝ์  ์ธ ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ๋„๊ตฌ ์ธ warp์˜ ์ €์ž์ž…๋‹ˆ๋‹ค : https://github.com/dgiagio/warp

์ €๋Š” ์›Œํ”„๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋‘๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฐพ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๋“ ๊ฐ„์— ํ•˜๋‚˜์˜ exe ํŒŒ์ผ์„ ๊ฐ€์งˆ ์ˆ˜์žˆ๋Š” ๋Šฅ๋ ฅ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. NuGet ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณด์‹ญ์‹œ์˜ค. ๋‹จ์ผ .nuget ํŒŒ์ผ์ด๊ณ  ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒŒ์ผ์„ ํŒจํ‚ค์ง•ํ•˜๋Š” ํŒŒ์ผ๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์›Œํ”„๋Š” ํ•ดํ‚ค ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ :

dotnet publish --self-contained -c Release -r win10-x64

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค :

App.exe
runtime/

๋˜๋Š” GO / Rust ๋“ฑ

App.exe

๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

Warp๋Š” App.exe๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค ... ์–ด๋–ป๊ฒŒ ํ•ดํ‚ค์ž…๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ํ”„๋ ˆ์ž„ ์›Œํฌ์˜ ์ผ๋ถ€๋Š” ์•„๋‹ˆ์ง€๋งŒ "ํ•˜๋‚˜์˜ exe ํŒŒ์ผ"๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚ด ๋ง์€ ํƒ€์‚ฌ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ ๋™์ž‘์ด์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค (๋‚ด ์ƒ๊ฐ์—)

์›Œํ”„๋Š” ๋Œ€์ ‘์„๋ฐ›์Šต๋‹ˆ๋‹ค. @dgiagio ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

+1

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

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ :
dotnet ๊ฒŒ์‹œ-์ž์ฒด ํฌํ•จ
dotnet run-์ž์ฒด ํฌํ•จ MyApp.dar

์ง€๊ธˆ ์ด์— ๋Œ€ํ•œ ์ œ์•ˆ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค : https://github.com/dotnet/designs/pull/52/files?short_path=28dba55

์ถ”์  ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/coreclr/issues/20287

๋˜ํ•œ @shanselman ์—๋Š” Warp ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.hanselman.com/blog/BrainstormingCreatingASmallSingleSelfcontainedExecutableOutOfANETCoreApplication.aspx

๋‚˜๋Š” ์ œ์•ˆ์„ ์ฝ๊ณ  ์ด๊ฒƒ์„ ๋ณด์•˜๋‹ค.

image

๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ์—ผ๋‘์— ๋‘” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์••์ถ•ํ•˜๋Š” ๋Š๋ฆฐ ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.
๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ / dll๋กœ ๋ณ‘ํ•ฉ๋˜์ง€๋งŒ? ์•„๋‹ˆ๋ฉด ์ œ์•ˆ์„œ์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค์„๊นŒ์š”?

@RUSshy ๋ชจ๋“  ๊ด€๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํŒŒ์ผํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ์„ ์–ป๋„๋ก ์š”์ฒญํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ (CoreRT์—์„œ์™€ ๊ฐ™์ด)? ์ด๊ฒƒ์€ .Net Core์˜ ํ˜„์žฌ ๋‹จ์ผ ํŒŒ์ผ ์ž‘์—…์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

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

CC : @jeffschwMSFT

ํŒŒ์ผ์„ ์ถ”์ถœํ•ด์•ผํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ILMerge๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@ phillip-haydon, ์—ฌ๊ธฐ ์— ์„ค๋ช… ๋œ๋Œ€๋กœ ILMerge ๋ฐ ๋‹จ์ผ ํŒŒ์ผ ์†”๋ฃจ์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ILMerge ๋Š” ์—ฌ๋Ÿฌ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ IL์„

CoreRT๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET ์ฝ”๋“œ์˜ AOT ์ปดํŒŒ์ผ์€ ํฅ๋ฏธ๋กœ์›Œ ๋ณด์ด์ง€๋งŒ ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (MS๊ฐ€ ๊ทธ๊ฒƒ์— ์ง‘์ค‘ํ•˜๊ณ  ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค .. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์ด๊ณ  ๊ทธ๋“ค์ด GO๋กœ ์ด๋™ ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. )

์–ด์จŒ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•  ๊ธฐ์ˆ ์  ์ง€์‹์ด ์—†์ง€๋งŒ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž์ฒด ํฌํ•จ ๋œ ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ฒŒ์‹œํ•˜๊ณ  ์••์ถ•, ์ถ”์ถœ, ์˜ค๋ฒ„ ํ—ค๋“œ์—†์ด ์‹คํ–‰ ํŒŒ์ผ ๋งŒ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

@ swaroop-sridhar Linux์˜ dotnet ์ฝ”์–ด์—์„œ ์ž‘๋™ํ•˜๋Š” ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? https://github.com/dotnet/ILMerge/blob/master/ILMerge/ILMerge.csproj#L13 ์— ๋”ฐ๋ฅด๋ฉด ์ด๊ฒƒ์€ Windows / Mono ์ „์šฉ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

@thefringeninja ILMerge๋Š” Windows ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ILMerge๋ฅผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ์ด์‹ ํ•  ๊ณ„ํš์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‹จ์ผ ํŒŒ์ผ ์†”๋ฃจ์…˜์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ
๋ฐฐํฌ ๋ฐฐํฌ ๋ฐฐํฌ!1 ~ 3 ๊ฐœ์˜ ํŒŒ์ผ์ด ๋ฐฐํฌ (๊ฒŒ์‹œ, ์—…๋ฐ์ดํŠธ ํฌํ•จ)์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค!

CoreRT๋Š” AOT์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ppl์€ AOT๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ?
ํ”„๋กœ์ ํŠธ (CoreRT)๋Š” ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค (2014 ๋…„๋ถ€ํ„ฐ). ์ง€๊ธˆ์€ 2019 ๋…„์ž…๋‹ˆ๋‹ค! ( ์•ฝ 5 ๋…„ ์†Œ์š” )
pragram ์–ธ์–ด์— ๋Œ€ํ•œ ์–ผ๋งˆ๋‚˜ ์†Œ์ค‘ํ•œ 5 ๋…„!CoreRT๋Š” ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๊ณ„ํš๋„ ์—†์Šต๋‹ˆ๋‹ค !!!ppl์ด 5 ๋…„ ๋” ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@ swaroop-sridhar ์œ ๊ฐ์ž…๋‹ˆ๋‹ค. ILMerge / ILRepack์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค์ด์•„๋ชฌ๋“œ ์ข…์†์„ฑ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

.NET Core 3.0์—์„œ ์ง€์›ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค. @richlander ๊ฐ€ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
.NET Core 3.0 ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ (์˜ˆ : https://devblogs.microsoft.com/dotnet/net-core-3-and-support-for-windows-desktop-applications/ ์˜ "Side-by- ์‚ฌ์ด๋“œ ๋ฐ ์•ฑ-๋กœ์ปฌ ๋ฐฐํฌ '์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
๋˜ํ•œ ์ฝ๊ธฐ : https://www.hanselman.com/blog/BrainstormingCreatingASmallSingleSelfcontainedExecutableOutOfANETCoreApplication.aspx

.net์€ ์ž‘์€ ๋‹จ์ผ ๋…๋ฆฝ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ•ดํ‚น์„ ํ•„์š”๋กœํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋™์ž‘์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. GO์— ์˜ํ•ด ์‚ด์•„ ๋‚˜๊ณ , Rust๋„ ๋“ฑ์žฅํ•˜๊ณ , CoreRT ๋˜๋Š” ILMerge์— ์ง‘์ค‘ํ•˜๊ณ , .net ํ•ต์‹ฌ ์•ฑ๋„ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ ํ•  ๋ชจ๋“  ํŒŒ์ผ๋กœ ์ธํ•ด ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์ œ์•ˆ์„œ์— ์–ธ๊ธ‰ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ zip / unzip์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

.net์€ ์ž‘์€ ๋‹จ์ผ ๋…๋ฆฝ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ•ดํ‚น์„ ํ•„์š”๋กœํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋™์ž‘์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. GO์— ์˜ํ•ด ์‚ด์•„ ๋‚˜๊ณ , Rust๋„ ๋“ฑ์žฅํ•˜๊ณ , CoreRT ๋˜๋Š” ILMerge์— ์ง‘์ค‘ํ•˜๊ณ , .net ํ•ต์‹ฌ ์•ฑ๋„ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ ํ•  ๋ชจ๋“  ํŒŒ์ผ๋กœ ์ธํ•ด ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์ œ์•ˆ์„œ์— ์–ธ๊ธ‰ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ zip / unzip์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‹น์‹ ์ด ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ppl์€ ์ž๋ฐ”๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .net์€ ์‚ด์•„์žˆ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
go ๋˜๋Š” rust ๋˜๋Š” dlang์€ Fuck Zip / Unzip์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๋นŒ๋“œ ๋Œ€์ƒ์„ ์ง€์›ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค!

๋ฟก๋ฟก

.net์€ ์ž‘์€ ๋‹จ์ผ ๋…๋ฆฝ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ•ดํ‚น์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ .NET์—์„œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์˜์กดํ•˜๊ณ  ์ข‹์•„ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ์ถฉ์‹ค๋„๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ๋ง์ปค๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹คํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด๊ฒƒ์„ ํ•ต์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ฐœ๋ฐฉ์ ์ด๋ฉฐ ์ƒ์ž ๋ฐ–์—์„œ ์ƒ๊ฐํ•  ์˜์ง€๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งน๋ชฉ์ ์œผ๋กœ .NET์„ Go / Rust / C ++๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์ •๋‹ต์ด ์•„๋‹™๋‹ˆ๋‹ค.

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

Jetbrains๊ฐ€ kotlin JVM / kotlin NATIVE์—์„œํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ๋ฐ ์ œํ•œ๋œ ํ™˜๊ฒฝ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๋ณ„๋„์˜ .net ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํŒ€์ด ์ƒ๊ฐ ํ–ˆ์Šต๋‹ˆ๊นŒ?

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

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

https://github.com/dotnet/designs/blob/master/accepted/single-file/staging.md๋ฅผ ์ฝ์€ ํ›„ ์ œ์•ˆ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋‹จ๊ณ„๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ zip / unzip์œผ๋กœ ๋๋‚˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žƒ์–ด๋ฒ„๋ฆฐ ์‹ธ์›€, ์ž˜ํ•˜๋ฉด ํŒ€์ด ๊ทธ ๋ฌธ์„œ์— ์–ธ๊ธ‰ ๋œ ๋” ๊ฐ€๋ฒผ์šด ๊ฒƒ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒƒ๋“ค์ด Windows๊ฐ€ ์žฅ๋‚œ๊ฐ OS๋กœ ๋‚จ์•„์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

@kjkrum ๋ฌด์Šจ ์ผ์ด?

@cryru ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์—‡์„ํ•˜๋Š”์ง€ ๋ชจ๋ฅผ ๋•Œ ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Cryru ๋…๋ฆฝ ์‹คํ–‰ ํ˜• ์‹คํ–‰ ํŒŒ์ผ์„ ๋นŒ๋“œ ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ๊ณผ ๊ทธ๋ ‡๊ฒŒํ•ด์•ผํ•˜๋Š” ๋งค์šฐ ์‹ค์ œ์ ์ธ ํ•„์š”์„ฑ์„

@Cryru ๋…๋ฆฝ ์‹คํ–‰ ํ˜• ์‹คํ–‰ ํŒŒ์ผ์„ ๋นŒ๋“œ ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ๊ณผ ๊ทธ๋ ‡๊ฒŒํ•ด์•ผํ•˜๋Š” ๋งค์šฐ ์‹ค์ œ์ ์ธ ํ•„์š”์„ฑ์„

๋™์˜, ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์šด์˜ ์ฒด์ œ์—์„œ C # ํ”„๋กœ๊ทธ๋žจ์˜ ์œ„์น˜์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
C # ํ”„๋กœ๊ทธ๋žจ์€ ํ•ญ์ƒ ์ผ๋ฅ˜ ์‹œ๋ฏผ์ด ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.2 ๋“ฑ์„์ด๋˜๊ธฐ ์œ„ํ•ด์„œ๋งŒ.

์ด๊ฒƒ์€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
TLDR : dotnet publish -r win10-x64 /p:PublishSingleFile=true

์„ธ๋ถ€:
https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#single -file-executables
https://github.com/dotnet/designs/blob/master/accepted/single-file/design.md

์ด๊ฒƒ์€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
TLDR : dotnet publish -r win10-x64 /p:PublishSingleFile=true

์„ธ๋ถ€:
https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#single -file-executables
https://github.com/dotnet/designs/blob/master/accepted/single-file/design.md

์ด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€ ๋œ dotnet-core ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 3.0.100-preview5-011568 ํ•˜๊ณ  ์žˆ๋Š”๋ฐ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
error MSB4030: "/p:PublishSingleFile=true" is an invalid value for the "SelfContained" parameter of the "ResolveFrameworkReferences" task. The "SelfContained" parameter is of type "System.Boolean".

LE : ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/designs/blob/master/accepted/single-file/design.md ์— dotnet publish -r win10-x64 --self-contained /p:PublishSingleFile=true ๊ฒŒ์‹œํ•œ๋‹ค๊ณ  ๋ช…์‹œํ•œ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ๋งŒ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. --self-contained ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@mihaimyh ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋””์ž์ธ ๋ฌธ์„œ์˜ ์˜คํƒ€๋ฅผ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹ ์ €๋Š” ํ•ญ์ƒ ๋‹จ์ผ exe ์ž์ฒด ํฌํ•จ ๊ธฐ๋Šฅ์— zip / unzip ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€
์ด๊ฒƒ์ด ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ผ exe ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•!

์‚ฌ์‹ค, ์ฒ˜์Œ๋ถ€ํ„ฐ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ IL-Merge๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

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

์‚ฌ๋žŒ๋“ค์€ ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ๊ณผ AOT๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์‹œ๊ฐ„ ๋‚ญ๋น„๋ฅผ ๋ง‰์Šต๋‹ˆ๋‹ค. Microsoft

AOT๊ฐ€ ์—†๋Š” ๋‹จ์ผ ํŒŒ์ผ

๋‚˜๋Š” MS๊ฐ€ ๋“ฃ๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„์š”.

๋ฉ”์‹ ์ €๋Š” ํ•ญ์ƒ ๋‹จ์ผ exe ์ž์ฒด ํฌํ•จ ๊ธฐ๋Šฅ์— zip / unzip ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€
์ด๊ฒƒ์ด ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ผ exe ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•!

์ด๋ฏธ ์••์ถ•๋˜์–ด์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ค‘๋ณต ์ข…์†์„ฑ์„ ์ค„์—ฌ ์••์ถ•ํ•˜๊ธฐ ์ „์— ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

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

๋ฟก๋ฟก

๋‚˜๋Š” MS๊ฐ€ ๋“ฃ๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„์š”.

๋ฐ˜๋Œ€๋กœ ๊ด€๋ จ ์Šค๋ ˆ๋“œ์—์„œ ๋ณผ ์ˆ˜์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ˆ˜์ง‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ ์ค‘์š”ํ•˜์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ค‘์š”ํ•˜๋ฏ€๋กœ Microsoft์˜ ์˜๊ฒฌ์„ ๋“ค์—ˆ๋‹ค๊ณ  ์กฐ๋กฑํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์ง„์ˆ ์— ๋”ฐ๋ฅด๋ฉด Microsoft๋กœ ์˜คํ•ดํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Microsoft๋ฅผ ๋Œ€๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์› ์ผ๋ฟ์ž…๋‹ˆ๋‹ค.

๋ฉ”์‹ ์ €๋Š” ํ•ญ์ƒ ๋‹จ์ผ exe ์ž์ฒด ํฌํ•จ ๊ธฐ๋Šฅ์— zip / unzip ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€
์ด๊ฒƒ์ด ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ผ exe ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•!

์ด๋ฏธ ์••์ถ•๋˜์–ด์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ค‘๋ณต ์ข…์†์„ฑ์„ ์ค„์—ฌ ์••์ถ•ํ•˜๊ธฐ ์ „์— ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

WebApi ๋˜๋Š” MVC ๋˜๋Š” ConsoleApp์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ HelloWorld! ๋‚ด ๋œป์„ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์••์ถ• ํŒŒ์ผ์ด ๋„ˆ๋ฌด ์ปค์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
IL-Merge ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๋ถ„๊ธฐ๋ฅผ ์ค„์ด๋ฉด.

๋„ค, ์ฝ˜์†” HelloWorld๋ฅผํ–ˆ๊ณ  ๊ทธ๋ž˜ 68K
Capture
์ž์ฒด ํฌํ•จ๋˜์ง€ ์•Š์€ ๊ฒƒ์€ 67K์˜€์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ C #์€ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. <1K HelloWorld๋ฅผ ์›ํ–ˆ๋‹ค๋ฉด ์™œ C #์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?
๋” ํฐ ์•ฑ์€ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ•œ ์‹œ์ ์—์„œ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ์ง€์ • ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ •๋ง๋กœ ๋ช‡ ์‹ญ๋งŒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์‹ญ์‹œ์˜ค.
๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฉ”์‹ ์ €๋Š” ํ•ญ์ƒ ๋‹จ์ผ exe ์ž์ฒด ํฌํ•จ ๊ธฐ๋Šฅ์— zip / unzip ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€
์ด๊ฒƒ์ด ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ผ exe ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•!
WebApi ๋˜๋Š” MVC ๋˜๋Š” ConsoleApp์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ HelloWorld! ๋‚ด ๋œป์„ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์••์ถ• ํŒŒ์ผ์ด ๋„ˆ๋ฌด ์ปค์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
IL-Merge ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๋ถ„๊ธฐ๋ฅผ ์ค„์ด๋ฉด.

@sgf ์—ฌ๊ธฐ์—๋Š” ๋‹ค์†Œ ๋ณ„๊ฐœ์˜ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•ฑ์˜ ์ฝ”๋“œ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์•ฑ์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฝ”๋“œ ๊ฐ์†Œ๋ฅผ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • IL ๋ณ‘ํ•ฉ : ํ”„๋กœ์„ธ์Šค์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ ID๋ฅผ ์žƒ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์•ฑ์— ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ ๋‹จ์ผ ์‹คํ–‰ ์ž‘์—…์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋ฏธ์‚ฌ์šฉ IL ํŠธ๋ฆฌ๋ฐ : ILLinker ๋Š” ๋ฏธ์‚ฌ์šฉ IL ํŠธ๋ฆฌ๋ฐ์„ ๋ชฉํ‘œ๋กœํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ dotnet SDK ( PublishTrimmed ์†์„ฑ)์— ํ†ตํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ ILLinker์—์„œ ๋” ๋งŽ์€ ์ตœ์ ํ™”๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.
  • Zip / Unzip : dotnet publish๋Š” ํ˜„์žฌ ๊ฒŒ์‹œ ๋œ ๋‹จ์ผ ํŒŒ์ผ์„ ์••์ถ•ํ•˜์ง€ ์•Š์ง€๋งŒ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
dotnet publish๋Š” ๋‹จ์ผ ํŒŒ์ผ๋กœ์˜ ๊ฒŒ์‹œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ๋œ ํŒŒ์ผ์€ ์•ฑ ํฌ๊ธฐ๋งŒํผ ์ปค์ง‘๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ƒ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ :

  • ํ˜„์žฌ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ƒ์„ฑ ์ง€์›์€ ์ฆ‰์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ( PublishReadyToRun ์†์„ฑ)๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • AOT ์ปดํŒŒ์ผ์„ ํ†ตํ•œ ๊ฒŒ์‹œ๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ( CoreRT ) ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. AOT ์ปดํŒŒ์ผ์—์„œ๋„ ์‹คํ–‰ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ ์˜ต์…˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์˜ˆ : ์ƒ์„ฑ ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์œ„ํ•œ jit๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๊นŒ?

๋„ค, ์ฝ˜์†” HelloWorld๋ฅผํ–ˆ๊ณ  ๊ทธ๋ž˜ 68K
Capture
์ž์ฒด ํฌํ•จ๋˜์ง€ ์•Š์€ ๊ฒƒ์€ 67K์˜€์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ C #์€ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. <1K HelloWorld๋ฅผ ์›ํ–ˆ๋‹ค๋ฉด ์™œ C #์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?
๋” ํฐ ์•ฑ์€ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ•œ ์‹œ์ ์—์„œ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ์ง€์ • ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ •๋ง๋กœ ๋ช‡ ์‹ญ๋งŒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์‹ญ์‹œ์˜ค.
๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

UR img๊ฐ€ ๋ณด์—ฌ์ค€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฏธ์•ˆํ•ด, ์ž๊ธฐ contianed. Thats 68626KB, ์•ฝ 68mb = 68KK, 68K๋ฟ๋งŒ ์•„๋‹ˆ๋ผ !!!
์šฐ๋ฆฌ๋Š” <1kb๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (์ž๊ธฐ contianed ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค), <3000KB๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ 68MB๋Š” 30 ๋ฐฐ ์ด์ƒ์ž…๋‹ˆ๋‹ค.
U๋Š” ํ•ญ์ƒ HelloWorld ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค !!!

์‚ฌ๊ณผ, ๋Šฆ์€ ๋ฐค์— K์™€์˜ ์‹ค์ˆ˜
์ถ”๊ฐ€ ๋œ ์„ค๋ช… / ์ •๋ณด swaroop-sridhar์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ์ง€ ๋ชปํ–ˆ๋˜ ์ƒˆ๋กœ์šด ์Šค์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 3.preview 6์œผ๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

dotnet publish -r RID / p : PublishTrimmed = true / p : PublishSingleFile = true
์ด์ œ 29,000K๊นŒ์ง€

๋ฌผ๋ก  ๋ชจ๋“  ์•ฑ์ด Hello World๊ฐ€๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ C # Core SelfContained App์˜ ๊ฒฝ์šฐ ๋Ÿฐํƒ€์ž„๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ๋ฌผ๋ก  ์ž‘์€ ์ฝ˜์†” ๋„๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ 3K๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž„์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ์„  C #์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์–˜๋“ค ์•„ ํฅ๋ฏธ๋กœ์šด ํ† ๋ก !

image
Capture

30mb LOL, 1 ~ 3MB๊ฐ€ ๋  ๋•Œ ์ „ํ™” ํ•ด, ๋Ÿฐํƒ€์ž„์ด ๋ถ€ํ’€์–ด ์˜ค๋ฅด๊ณ , GO๋ฅผ ํ™•์ธํ•˜๊ณ , ์‚ฌ๋žŒ๋“ค์ด ์›จ์ด๋ธŒ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

https://www.jetbrains.com/lp/devecosystem-2019/

kotlin์กฐ์ฐจ๋„ ์ฃผ์‹์„ ์–ป๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  kotlin ๋„ค์ดํ‹ฐ๋ธŒ๋กœ C #์„ ๋ถ€๋„๋Ÿฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Swift๋Š” Windows https://forums.swift.org/t/swift-win32-programming/20686์— ์˜ค๊ณ 

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ :

  • ๋ฐ˜์‚ฌ ์ œ๊ฑฐ ์˜ต์…˜ ์ถ”๊ฐ€
  • JIT ๋ฌผ๊ฑด์„ ์ œ๊ฑฐํ•˜๋Š” ์˜ต์…˜ ์ถ”๊ฐ€
  • JIT์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก C # ์ฝ”๋“œ ์ตœ์ ํ™” ๊ฐœ์„ 

30mb LOL, 1 ~ 3MB๊ฐ€ ๋  ๋•Œ ์ „ํ™” ํ•ด, ๋Ÿฐํƒ€์ž„์ด ๋ถ€ํ’€์–ด ์˜ค๋ฅด๊ณ , GO๋ฅผ ํ™•์ธํ•˜๊ณ , ์‚ฌ๋žŒ๋“ค์ด ์›จ์ด๋ธŒ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

https://www.jetbrains.com/lp/devecosystem-2019/

kotlin์กฐ์ฐจ๋„ ์ฃผ์‹์„ ์–ป๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  kotlin ๋„ค์ดํ‹ฐ๋ธŒ๋กœ C #์„ ๋ถ€๋„๋Ÿฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Swift๋Š” Windows https://forums.swift.org/t/swift-win32-programming/20686์— ์˜ค๊ณ 

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ :

  • ๋ฐ˜์‚ฌ ์ œ๊ฑฐ ์˜ต์…˜ ์ถ”๊ฐ€
  • JIT ๋ฌผ๊ฑด์„ ์ œ๊ฑฐํ•˜๋Š” ์˜ต์…˜ ์ถ”๊ฐ€
  • JIT์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก C # ์ฝ”๋“œ ์ตœ์ ํ™” ๊ฐœ์„ 

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

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

๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ .NET์œผ๋กœ ํ›Œ๋ฅญํ•œ ์ผ์„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ๋” ๋งŽ์€ ์ผ์„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋ฌด์˜์‹, ๊ฑฐ์ง“๋ง, ํšจ์œจ์„ฑ์˜ ๋ถ€์กฑ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ๋Œ€๋‹ตํ•ด์•ผํ• ๊นŒ์š”?

.net ํ•ต์‹ฌ ๋ฐฉํ–ฅ์ด ์–ผ๋งˆ๋‚˜ ํ‹€๋ ธ๋Š” ์ง€ ๊นจ๋‹ซ์ง€ ๋ชปํ•˜๊ณ  ์ตœ๊ทผ์—์•ผ Distribution / IL Merge / AOT ์ž‘์—…์„ ํ†ตํ•ด์ด๋ฅผ ๊นจ๋‹ซ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ๋งˆ์ฐจ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด .net ๋Ÿฐํƒ€์ž„์ด ๋„ˆ๋ฌด ์ปค์„œ ์ ์ ˆํ•œ ํฌ๊ธฐ์˜ ํŒŒ์ผ์„ ๋ฐฐํฌ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

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

๋‚ด๊ฐ€ ๋ฌด๋ก€ํ•˜๊ฒŒ ๋“ค๋ฆฌ๋ฉด ๋ฏธ์•ˆํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

๋ฌด๋ก€ํ•˜๊ฒŒ ๋“ค๋ฆฌ๋ฉด ๋ฏธ์•ˆํ•˜์ง€๋งŒ

๋ฌด๋ก€ํ•˜๊ฒŒ ๋“ค๋ฆฌ๋Š”๊ตฐ์š”. ์ฆ‰, ๋‹น์‹ ์˜ ํ•ด๊ณ ์™€ ์„ฑ๊ธ‰ํ•œ ๊ฒฐ๋ก ์€ ์„ค๋“๋ ฅ์žˆ๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ๊ณผ, ๋Šฆ์€ ๋ฐค์— K์™€์˜ ์‹ค์ˆ˜
์ถ”๊ฐ€ ๋œ ์„ค๋ช… / ์ •๋ณด swaroop-sridhar์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ์ง€ ๋ชปํ–ˆ๋˜ ์ƒˆ๋กœ์šด ์Šค์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 3.preview 6์œผ๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

dotnet publish -r RID / p : PublishTrimmed = true / p : PublishSingleFile = true
์ด์ œ 29,000K๊นŒ์ง€

๋ฌผ๋ก  ๋ชจ๋“  ์•ฑ์ด Hello World๊ฐ€๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ C # Core SelfContained App์˜ ๊ฒฝ์šฐ ๋Ÿฐํƒ€์ž„๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ๋ฌผ๋ก  ์ž‘์€ ์ฝ˜์†” ๋„๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ 3K๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž„์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ์„  C #์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์–˜๋“ค ์•„ ํฅ๋ฏธ๋กœ์šด ํ† ๋ก !

image
Capture

ํ˜„๋Œ€ ์–ธ์–ด๋กœ์„œ ์„ธ๊ณ„๋ฅผ ํ†ต์ผํ•˜๋ ค๋Š” ์•ฝ๊ฐ„์˜ ์•ผ๋ง์ด ์žˆ์–ด์•ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ C ++ ์šฉ C #์„ ์ง‘์—์„œ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด Go, Kotlin, Swift๋กœ ํ‘ธ์‹œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
์‹œ์žฅ ์ ์œ ์œจ๊ณผ C #์„ ๋” ์นจ์‹?

.Net์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ 15 ๋…„ ์ด์ƒ์˜ ํ›Œ๋ฅญํ•œ ๊ฐœ๋ฐœ ๊ธฐํšŒ๋ฅผ ๋†“์ณค์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ .net์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค.

๋„ค, ์ „์— ๋งํ–ˆ๋“ฏ์ด ์™œ ๋ถ€์ •์ ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
.Net Core๋Š” Full Framework์—์„œ ์˜จ๋‹ค๋ฉด ํ™˜์ƒ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  .Net Standard + Core ํ†ตํ•ฉ ๋น„์ „์€ ํ•ฉ๋ฆฌ์ ์ด๊ณ  ์ง„๋ณด์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

.NET์„ GO ๋˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด / ํ”„๋ ˆ์ž„ ์›Œํฌ์™€ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์–ด์จŒ๋“ , ์‹ฑ๊ธ€ .exe์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ๊ฐœ์„ ํ•˜๊ณ ์žˆ๋Š” ์†”๋ฃจ์…˜์ด ๋ช‡ ๋…„ ์ „์˜ ๋‚ด '์š”์ฒญ'์„ ๊ฝค ์ž˜ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค Guys & Gals!

๋ฐ–

์ด ๊ธ€์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ–‰๋™ ๊ฐ•๋ น ์— ๋Œ€ํ•ด ์ƒ๊ธฐ์‹œํ‚ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

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

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

๋ฉ”์‹ ์ €๋Š” ํ•ญ์ƒ ๋‹จ์ผ exe ์ž์ฒด ํฌํ•จ ๊ธฐ๋Šฅ์— zip / unzip ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€
์ด๊ฒƒ์ด ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ผ exe ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•!
WebApi ๋˜๋Š” MVC ๋˜๋Š” ConsoleApp์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ HelloWorld! ๋‚ด ๋œป์„ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์••์ถ• ํŒŒ์ผ์ด ๋„ˆ๋ฌด ์ปค์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
IL-Merge ๋ฐฉ๋ฒ•์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๋ถ„๊ธฐ๋ฅผ ์ค„์ด๋ฉด.

@sgf ์—ฌ๊ธฐ์—๋Š” ๋‹ค์†Œ ๋ณ„๊ฐœ์˜ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•ฑ์˜ ์ฝ”๋“œ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์•ฑ์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฝ”๋“œ ๊ฐ์†Œ๋ฅผ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • IL ๋ณ‘ํ•ฉ : ํ”„๋กœ์„ธ์Šค์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ ID๋ฅผ ์žƒ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์•ฑ์— ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ ๋‹จ์ผ ์‹คํ–‰ ์ž‘์—…์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋ฏธ์‚ฌ์šฉ IL ํŠธ๋ฆฌ๋ฐ : ILLinker ๋Š” ๋ฏธ์‚ฌ์šฉ IL ํŠธ๋ฆฌ๋ฐ์„ ๋ชฉํ‘œ๋กœํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ dotnet SDK ( PublishTrimmed ์†์„ฑ)์— ํ†ตํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ ILLinker์—์„œ ๋” ๋งŽ์€ ์ตœ์ ํ™”๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.
  • Zip / Unzip : dotnet publish๋Š” ํ˜„์žฌ ๊ฒŒ์‹œ ๋œ ๋‹จ์ผ ํŒŒ์ผ์„ ์••์ถ•ํ•˜์ง€ ์•Š์ง€๋งŒ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
dotnet publish๋Š” ๋‹จ์ผ ํŒŒ์ผ๋กœ์˜ ๊ฒŒ์‹œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ๋œ ํŒŒ์ผ์€ ์•ฑ ํฌ๊ธฐ๋งŒํผ ์ปค์ง‘๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ƒ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ :

  • ํ˜„์žฌ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ƒ์„ฑ ์ง€์›์€ ์ฆ‰์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ( PublishReadyToRun ์†์„ฑ)๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • AOT ์ปดํŒŒ์ผ์„ ํ†ตํ•œ ๊ฒŒ์‹œ๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ( CoreRT ) ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. AOT ์ปดํŒŒ์ผ์—์„œ๋„ ์‹คํ–‰ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ ์˜ต์…˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์˜ˆ : ์ƒ์„ฑ ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์œ„ํ•œ jit๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๊นŒ?

ํ•„์š”์— ๋”ฐ๋ผ ๊ธฐ๋ณธ DLL์„ XXX.exe (UnManaged)์™€ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋™์  ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
nativeDLLs (UnManaged) Function-Level Linking ์ปดํŒŒ์ผ์‹œ ์ •์  ๋ถ„์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-file-l1-2-0.dll
api-ms-win-core-file-l2-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-2-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-conio-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-multibyte-l1-1-0.dll
api-ms-win-crt-private-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
aspnetcorev2_inprocess.dll
clrcompression.dll
clretwrc.dll
clrjit.dll
coreclr.dll
dbgshim.dll
dotnet-aspnet-codegenerator-design.dll
hostfxr.dll
hostpolicy.dll
mscordaccore_amd64_amd64_4.6.27317.07.dll
mscordbi.dll
mscorrc.dll
mscorrc.debug.dll
sni.dll
sos.dll
sos_amd64_amd64_4.6.27317.07.dll
ucrtbase.dll
...etc...

์ข‹์€ ์ผ์„ํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” ์•„๋งˆ๋„ 2-3MB๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ”์‹ ์ €๊ฐ€ 7zip์œผ๋กœ ๋ชจ๋‘ ํฌ์žฅํ•˜๋ฉด ์•ฝ 4.85mb๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” XXX.exe๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

IL-merge๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ ์ˆ˜์ค€ ๋งํฌ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
๊ด€๋ฆฌ DLL์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ์ด์ „ ํŠธ๋ฆญ์ด ๋‹ค์‹œ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ๊ด€๋ฆฌ DLL์„ PE.exe ์„น์…˜ (.net ์„น์…˜์œผ๋กœ ํ‘œ์‹œ)์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‚ฌ์˜ ๊ฒฝ์šฐ ๋ฐ˜์‚ฌ ์œ ํ˜•์˜ ๋ถ„์„ DLL์ž…๋‹ˆ๋‹ค. ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์™€ ๋ฆฌํ”Œ๋ ‰์…˜ ์œ ํ˜• (ํ•จ์ˆ˜ ํฌํ•จ) ๋ฐ ๋ชจ๋“  ํŠธ๋ฆฌ ์˜์กด์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

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

๋‚˜์™€ ์ด์•ผ๊ธฐ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž”์†Œ๋ฆฌ๋กœ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐ–

@sgf ๋‚˜๋Š” ๋‹น์‹ ์ด ์ข‹์€ ์ง€์ ์„ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋‚˜๋Š” ๋‹น์‹ ์ด ์ฃผ์ œ์— ์„œ๋ช…ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญํ•˜์‹  ๊ธฐ๋Šฅ์ด ํ–ฅํ›„ ๋ช‡ ๋…„ ๋™์•ˆ .NET Core์— ์ œ๊ณต ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์˜ค๋Š˜ ์ž‘์€ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์›ํ–ˆ๋‹ค๋ฉด ๋ชจ๋…ธ๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•˜๋ฉด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Mono๋Š” ์ด๋ฏธ Linking๊ณผ ํ•จ๊ป˜ AOT ์ปดํŒŒ์ผ์„ ์ง€์›ํ•˜์—ฌ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ธŒ๋ผ์šฐ์ € .net ๋Ÿฐํƒ€์ž„ ๊ตฌํ˜„์— ๋ชจ๋…ธ๊ฐ€ ์„ ํƒ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. https://www.mono-project.com/docs/advanced/aot/ ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด Blazor ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ง์ปค๋ฅผ ๊ฐ€์งˆ ์ˆ˜์žˆ๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  2. Microsoft๋Š” .NET ๋Ÿฐํƒ€์ž„์„ ํ•˜๋‚˜์˜ "๋ชจ๋“  ๊ฐ•๋ ฅํ•œ"๋Ÿฐํƒ€์ž„์œผ๋กœ ํ†ตํ•ฉํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋…ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” .NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ œ๊ณต ํ•  ์ˆ˜์žˆ๋Š” ๋‹จ์ผ ๋Ÿฐํƒ€์ž„์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์‹ค์€ AOT ๋ฐ ์—ฐ๊ฒฐ / ์ฝ”๋“œ ์ œ๊ฑฐ ๋“ฑ์„ ์ง€์›ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ–ฅํ›„ ๋ช‡ ๋…„ ๋™์•ˆ .NET Core ๋Ÿฐํƒ€์ž„์ด ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์–ป๊ฑฐ๋‚˜ Mono ๋ฐ .NET Core ๊ธฐ๋Šฅ์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์œผ๋กœ ํ†ตํ•ฉ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์‹œ๊ฐ„.

๋” ์ž˜ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

+ 2 ยข

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

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

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

์ผ๋ถ€ ์˜์—ญ์—์„œ ๋ฏธ๋ž˜์— ๋Œ€ํ•ด ์ˆจ์„ ์‰ฌ์ง€ ์•Š๊ณ  ์žˆ์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ ์—ฌ์ „ํžˆ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

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

@ Alan-FGR

๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์–ด์„œ ๊ณต์œ  ํ•  ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ •์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” MS๊ฐ€ ํ˜„์žฌ์˜ dotnet ์ฝ”์–ด ๋Ÿฐํƒ€์ž„์˜ ๋‹จ์ ์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ๊ทธ๋“ค์ด ๋ฏธ๋ž˜์— ๋ชจ๋…ธ ๋Ÿฐํƒ€์ž„๊ณผ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

.net core 3.0.0 ๋ฏธ๋ฆฌ๋ณด๊ธฐ 6์˜ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” .NET Core 3.0 Preview 6์„ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํ–ฅ์ƒ๋œ ์‹œ์ž‘์„์œ„ํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ ์ปดํŒŒ์ผ, ๋ง์ปค ๋ฐ EventPipe ๊ฐœ์„ ์„ ํ†ตํ•ด ํฌ๊ธฐ์— ๋งž๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ตœ์ ํ™”ํ•˜๊ธฐ์œ„ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ARM64์—์„œ Alpine ์šฉ ์ƒˆ๋กœ์šด Docker ์ด๋ฏธ์ง€๋„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

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

@ Alan-FGR ๋™์˜, IIS๊ฐ€ ์•ฝ 8 %์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๊ฐ€์ง€๊ณ  ํ•˜๋ฝํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์›น ํฌ์ปค์Šค๋Š” ๋‹ค์†Œ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ASP.NET์€ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ C # ๋˜๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐœ์„ ์œผ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. C #์€ ์ฝ˜์†” ์•ฑ, Windows ์„œ๋น„์Šค, ๋ชจ๋ฐ”์ผ ์•ฑ ๋ฐ PC ๊ฒŒ์ž„์—์„œ ์œ ์ง€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์†์ ์ธ ์กด์žฌ๋Š” Unity์™€ Xamarin ๋•๋ถ„์ž…๋‹ˆ๋‹ค. C #์€ ๊ฐœ๋ฐœํ•˜๊ธฐ์— ์ •๋ง ์ฆ๊ฑฐ์šด ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ˆํƒ€๊นŒ์šด ์ผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” Microsoft๊ฐ€ Windows XP์— ์ตœ๊ณ  ์ˆ˜์ค€์„ ๋‚จ๊ฒผ๋‹ค๊ณ  ์—ฌ์ „ํžˆ ์ƒ๊ฐํ•˜๋Š” ์˜ค๋žœ Java ๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”์— ๋”ฐ๋ผ ๊ธฐ๋ณธ DLL์„ XXX.exe (UnManaged)์™€ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋™์  ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
nativeDLLs (UnManaged) Function-Level Linking ์ปดํŒŒ์ผ์‹œ ์ •์  ๋ถ„์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๋™์  ๋ณ‘ํ•ฉ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ˜ธ์ŠคํŠธ์™€ ํ•จ๊ป˜ ์ •์ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

IL-merge๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ ์ˆ˜์ค€ ๋งํฌ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜์‚ฌ์˜ ๊ฒฝ์šฐ ๋ฐ˜์‚ฌ ์œ ํ˜•์˜ ๋ถ„์„ DLL์ž…๋‹ˆ๋‹ค. ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์™€ ๋ฆฌํ”Œ๋ ‰์…˜ ์œ ํ˜• (ํ•จ์ˆ˜ ํฌํ•จ) ๋ฐ ๋ชจ๋“  ํŠธ๋ฆฌ ์˜์กด์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

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

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

๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์–ด์„œ ๊ณต์œ  ํ•  ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ •์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” MS๊ฐ€ ํ˜„์žฌ์˜ dotnet ์ฝ”์–ด ๋Ÿฐํƒ€์ž„์˜ ๋‹จ์ ์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ๊ทธ๋“ค์ด ๋ฏธ๋ž˜์— ๋ชจ๋…ธ ๋Ÿฐํƒ€์ž„๊ณผ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

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

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. IIS๊ฐ€ ์•ฝ 8 %์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๊ฐ€์ง€๊ณ  ํ•˜๋ฝํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์›น ํฌ์ปค์Šค๋Š” ๋‹ค์†Œ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ASP.NET์€ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ C # ๋˜๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐœ์„ ์œผ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. C #์€ ์ฝ˜์†” ์•ฑ, Windows ์„œ๋น„์Šค, ๋ชจ๋ฐ”์ผ ์•ฑ ๋ฐ PC ๊ฒŒ์ž„์—์„œ ์œ ์ง€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@kjkrum ๊ทธ๊ฒŒ ์š”์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์›น์—์„œ 8 %์˜ ์‹œ์žฅ ์ ์œ ์œจ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Windows ๋ฐ ๋ชจ๋ฐ”์ผ ์•ฑ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์›น ๊ธฐ์ˆ ์€ ์ตœ์†Œํ•œ Windows ์„œ๋ฒ„ ํŒ๋งค์— ๋„์›€์ด๋˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ๊ด€์‹ฌ์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์— ๋„ˆ๋ฌด ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์–•์€ ์ „๋žต์ด๋ฉฐ ์ด๊ฒƒ์ด ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ์š”์ธ์ด๋ผ๊ณ  ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MS๋Š” ๋‹ท๋„ท ๊ธฐ๋ฐ˜๊ณผ ๋งŽ์€ ์œ ๋งํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๊ฐ€์šด๋ฐ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์ง€๋งŒ ์ง€๋ฐฐ์  ์ธ ๊ธฐ์ˆ ์„ ๊ฐ€์งˆ ๊ธฐํšŒ๋ฅผ ๋†“์น˜๊ณ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ผํ™”์ด๋ฏ€๋กœ ์•„๋งˆ๋„ ๋ฌด์˜๋ฏธํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์— C #์„ ์‚ฌ์šฉํ–ˆ๋˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค (์ฃผ๋กœ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž)์€ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ํ•œ๊ณ„ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์˜ฎ๊ฒจ๊ฐ”์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Rust, D, Go ๋ฐ C ++๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ •๊ธฐ์ ์œผ๋กœ C ++๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Rust๋ฅผ ๋ฐฐ์šฐ๊ณ  ์žˆ์ง€๋งŒ, ํ’ˆ์งˆ์ด ์ข‹์€ ์ œํ’ˆ์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ํ›„๋ฐฉ์— ๊ณ ํ†ต ์Šค๋Ÿฝ์ง€๋งŒ ํ›จ์”ฌ ๋” ๋‚ซ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์— C #์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์†์ ์ธ ์กด์žฌ๋Š” Unity์™€ Xamarin ๋•๋ถ„์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๋งŽ์€ ๊ธฐ์ˆ ์  ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ถ•๋ณต๊ณผ ์ €์ฃผ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด Unity๋Š” ํ‰ํŒ์ด ๋งค์šฐ ์ข‹์ง€ ์•Š์ง€๋งŒ ์šด ์ข‹๊ฒŒ๋„ .NET / C #์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ XNA๋Š” ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž ์‚ฌ์ด์—์„œ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ํฐ ๋ช…์„ฑ์„ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ .NET Core 3.0์œผ๋กœ์ด ๋•…์„ ๋ณด๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ‘

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. 141mb exe ์ธ ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๋กœ ๋๋‚˜๋ฉด ๊ธฐ๋Šฅ์€ ์‹คํŒจ์ž…๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ๋น„์šฉ์€ 141mb * 2์ž…๋‹ˆ๋‹ค.

image

๋„ค, ํ™•์‹คํžˆ ์ œ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์ž์ฒด ํฌํ•จ ๋ฐฐํฌ๋ณด๋‹ค ์—ฌ์ „ํžˆ ์ž‘์Šต๋‹ˆ๋‹ค.

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

์˜ค์ด๊ฒŒ ๋„ค๊ฐ€ ์›ํ•˜๋Š”๊ฑฐ์•ผ? ์•ˆํƒ€๊น๊ฒŒ๋„ ๋ถ€ํ‘ผ ์–ดํ”Œ์ด ์ธ๊ธฐ๊ฐ€์žˆ๋Š” ์ค„ ๋ชฐ๋ž์–ด์š”

๊ณ„์‚ฐ๊ธฐ๋Š” JIT๋„ ํ•„์š”์—†๊ณ  Reflection๋„ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‚ด๊ฐ€ ํ‹€๋ ธ๋˜ ๊ฒƒ ๊ฐ™์•„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ทธ๋งŒ๋‘ฌ์•ผํ•œ๋‹ค

@RUSshy ๋‹ค๋ฅธ ์ž์ฒด ํฌํ•จ ๋ฐฐํฌ๋ณด๋‹ค ๋” ๋ถ€

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. 141mb exe ์ธ ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๋กœ ๋๋‚˜๋ฉด ๊ธฐ๋Šฅ์€ ์‹คํŒจ์ž…๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ๋น„์šฉ์€ 141mb * 2์ž…๋‹ˆ๋‹ค.

C : Users [YourUserName] AppDataLocalTemp.net์— ํŒŒ์ผ ์••์ถ•์„ ํ’‰๋‹ˆ ๋‹ค.

๋‹จ์ผ exe๊ฐ€ ํ’€๋ฆด ์œ„์น˜๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์‚ฌ์šฉ์ž์—๊ฒŒ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด์—†๋Š” / var / ....๋กœ ์ถ”์ถœํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@eiva ์–ด๋–ค OS
https://github.com/dotnet/core-setup/issues/7940 ํŠธ๋ž™์ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ DOTNET_BUNDLE_EXTRACT_BASE_DIR ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฒˆ๋“ค ํŒŒ์ผ์ด ์ถ”์ถœ๋˜๋Š” ์œ„์น˜๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ swaroop-sridhar ๋‹ต์žฅ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
"์ œํ•œ๋œ"์„œ๋น„์Šค ๊ณ„์ •์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” centos.7์ž…๋‹ˆ๋‹ค.

@ jnm2 C #์„ ์‚ฌ๋ž‘ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์†”์งํžˆ ๋งํ•ด์„œ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ 128 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ๋ผ๋Š” ๊ฒƒ์€ ๊ด‘๊ธฐ์ž…๋‹ˆ๋‹ค.

@TechnikEmpire "I love C #"์ด ์œ„์—์„œ ๋งํ•œ ๋‚ด์šฉ์„ ์ƒ๋‹นํžˆ ์ง‘์ค‘์ ์œผ๋กœ ์ค„์—ฌ ์ค€๋‹ค๋Š” ์ ์„ ์ง€์  ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค .D

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

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

๊ด€๋ จ ๋ฌธ์ œ

Timovzl picture Timovzl  ยท  3์ฝ”๋ฉ˜ํŠธ

jzabroski picture jzabroski  ยท  3์ฝ”๋ฉ˜ํŠธ

matty-hall picture matty-hall  ยท  3์ฝ”๋ฉ˜ํŠธ

yahorsi picture yahorsi  ยท  3์ฝ”๋ฉ˜ํŠธ

bencz picture bencz  ยท  3์ฝ”๋ฉ˜ํŠธ