์ด ๋ฌธ์ ๋ .NET Core 3.0 ๋จ์ผ ํ์ผ ๋ฐฐํฌ ๊ธฐ๋ฅ์ ์งํ ์ํฉ์ ์ถ์ ํฉ๋๋ค.
๋ค์์ ๊ธฐ๋ฅ์ ๋ํ ๋์์ธ ๋ฌธ์ ๋ฐ ์ค๋น ๊ณํ ์
๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ์ด ์ด๋์ ํฐ๋ธ๋ CoreRT์ ์ด๋ป๊ฒ ๋น๊ต๋ฉ๋๊น? ๋น์ทํ ๋ ธ๋ ฅ์ ํ๋ ๊ฒ ๊ฐ์ฃ ?
' ์๋ง๋ ๋ค์ดํฐ๋ธ ์ฌ์ฉ์ ์ฝ๋ '์ ๊ด๋ จ์ด ์์ต๋๊น? ์ฆ, AOT๋ฟ๋ง ์๋๋ผ ์ฝ๋๋ฅผ JIT ์ปดํ์ผํ ์ ์์ต๋๊น?
๋ํ ๋ฐํ์ ๊ตฌ์ฑ ์์(' ๋ค์ดํฐ๋ธ ์ฝ๋(๋ฐํ์, ํธ์คํธ, ํ๋ ์์ํฌ์ ๋ค์ดํฐ๋ธ ๋ถ๋ถ.. ')๊ฐ CoreCLR ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ ๊ฒ์ ๋๊น?
๋น์ ์ ํ๋ฅญํ ์ง๋ฌธ์ ํ๊ณ ์์ง๋ง ์ด๊ฒ์ ์์ง ์ด๊ธฐ ๋์์ธ์ด๊ธฐ ๋๋ฌธ์ ๋๋ ์์ง ์ข์ ๋๋ต์ ํ์ง ๋ชปํฉ๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ์ด ์ด๋์ ํฐ๋ธ๋ CoreRT์ ์ด๋ป๊ฒ ๋น๊ต๋ฉ๋๊น? ๋น์ทํ ๋ ธ๋ ฅ์ ํ๋ ๊ฒ ๊ฐ์ฃ ?
๋ค์ ์ ์ฌํ ๊ฒฐ๊ณผ(๋จ์ผ ํ์ผ)๊ฐ ์์ ์ ์์ง๋ง ๋์์ธ์๋ ์๋ํ๊ฑฐ๋ ์๋ํ์ง ์๋ ๋ค๋ฅธ ์ฑ๋ฅ ํน์ฑ ๋๋ ๊ธฐ๋ฅ์ด ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฅํ ์ค๊ณ๋ ๊ธฐ๋ณธ์ ์ผ๋ก .NET Core ์์ฒด ํฌํจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํ์ผ์ ๋จ์ผ ํ์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ 10MB์ด๊ณ ๋ ๋๋ฆฌ๊ฒ ์์๋ ์ ์์ง๋ง ํ๋ฌ๊ทธ์ธ ๋ก๋, ๋ฐ์ฌ ๋ฐฉ์ถ ๋ฐ ๊ณ ๊ธ ์ง๋จ์ ํฌํจํ์ฌ CoreCLR์ ์ ์ฒด ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค. CoreRT๋ ์คํํธ๋ผ์ ๋ค๋ฅธ ์ชฝ ๋์ผ๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค. ํ ์๋ฆฌ MB์ด๊ณ ์์ ์๊ฐ์ด ๋งค์ฐ ๋น ๋ฅด์ง๋ง JIT๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํ๊ฑฐ๋ ๋ฆฌํ๋ ์ ๋ฐฉ์ถ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋น๋ ์๊ฐ์ด ๋๋ถ๋ถ์ ๊ฒ๋ณด๋ค ๋๋ฆฝ๋๋ค. NET ๊ฐ๋ฐ์๋ ์ต์ํฉ๋๋ค. ํ์ฌ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ์ ๋ ์ ์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ ํ ์ฌํญ์ด ์์ง๋ง .NET Core 3.0์์๋ ๊ฐ์ ๋์ง ์์ ์ ์์ต๋๋ค(๋ฐ์ฌ๋ฅผ ์ํ ์ฃผ์ ํ์, ์ผ๋ถ interop ์๋๋ฆฌ์ค ๋๋ฝ, Linux์ ์ ํ๋ ์ง๋จ). ๋ํ ๋ ์ฌ์ด ์ด๋๊ฐ์ ์์ด๋์ด๊ฐ ์์ต๋๋ค. ์ฌ๋๋ค์ด ์ ์ถฉ์์ ๋ง๋ค๊ณ /ํผํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ด์ ๋ํด ๋ฃ๊ณ ์ถ์ต๋๋ค.
'์๋ง๋ ๋ค์ดํฐ๋ธ ์ฌ์ฉ์ ์ฝ๋'์ ๊ด๋ จ์ด ์์ต๋๊น? ์ฆ, AOT๋ฟ๋ง ์๋๋ผ ์ฝ๋๋ฅผ JIT ์ปดํ์ผํ ์ ์์ต๋๊น?
"๋ค์ดํฐ๋ธ ์ฌ์ฉ์ ์ฝ๋"๋ ๊ทํ์ ์ฑ์ C++ ๋ค์ดํฐ๋ธ ์ฝ๋(๊ทํ ๋๋ ํ์ฌ ๊ตฌ์ฑ ์์๊ฐ ์์ฑ)๊ฐ ์์ ์ ์์์ ์๋ฏธํฉ๋๋ค. ํด๋น ์ฝ๋๋ก ํ ์ ์๋ ์์ ์ ์ ํ์ด ์์ ์ ์์ต๋๋ค. .dll๋ก ์ปดํ์ผ๋ ๊ฒฝ์ฐ ์คํํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋์คํฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๋๋ค. .lib์ด๋ฉด ๋งํฌํ ์ ์์ง๋ง ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ํ ๋ฐํ์ ๊ตฌ์ฑ ์์('๊ธฐ๋ณธ ์ฝ๋(๋ฐํ์, ํธ์คํธ, ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๋ถ๋ถ..')๊ฐ CoreCLR ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ตฌ์ฑ ์์๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
์์ ๋ชจ๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์ฐ๋ฆฌ๋ ์ด๋ค repos๊ฐ ๊ด๋ จ๋์ด ์๋์ง ์์๋ผ ๊ฒ์ ๋๋ค. "ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๋ถ๋ถ"์๋ ClrCompression ๋ฐ Unix PAL๊ณผ ๊ฐ์ CoreFX ๊ธฐ๋ณธ ํ์ผ์ด ํฌํจ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ ์์ ์๊ฐ์ด ์ฝ๊ฐ ๋๋ฆฌ๋๋ผ๋ ๋ฐฐํฌ์ ์ฉ์ด์ฑ์ ์ํด ๋งค์ฐ ์ค์ํ ์ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ผ๋ถ๋ฅผ ํฌ๊ธฐํ๋๋ก ๊ฐ์๋ฐ๋ ๊ฒ๋ณด๋ค ์์ ํ ํ์ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ๊ณ ์ถ์ต๋๋ค.
์ฐ๋ฆฌ์๊ฒ ํฅ๋ฏธ๋ก์ด ๋ช ๊ฐ์ง ์๋๋ฆฌ์ค. ์ด๊ฒ์ ํฌ๋ก์ค ํ๋ซํผ ์ธก๋ฉด์์ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
ํ๋ซํผ๋ง๋ค ๋ณ๋์ "ํ์ผ"์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๊น?
๋ค์ดํฐ๋ธ ์ฝ๋์ ๊ด๋ จํ์ฌ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ค์ดํฐ๋ธ ๊ตฌ์ฑ ์์๋ฅผ ์ด๋ป๊ฒ ์ ํํ ์ ์์ต๋๊น?
์ฐ๋ฆฌ์๊ฒ ํฅ๋ฏธ๋ก์ด ๋ช ๊ฐ์ง ์๋๋ฆฌ์ค. ์ด๊ฒ์ ํฌ๋ก์ค ํ๋ซํผ ์ธก๋ฉด์์ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
ํ๋ซํผ๋ง๋ค ๋ณ๋์ "ํ์ผ"์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๊น?
๋ค์ดํฐ๋ธ ์ฝ๋์ ๊ด๋ จํ์ฌ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ค์ดํฐ๋ธ ๊ตฌ์ฑ ์์๋ฅผ ์ด๋ป๊ฒ ์ ํํ ์ ์์ต๋๊น?
@ayende , ๋๋ @morganbr ์ฝ๋ฉํธ ์์ ์ธ์ฉํ๊ณ ์์ต๋๋ค :
๊ฐ๋ฅํ ์ค๊ณ๋ ๊ธฐ๋ณธ์ ์ผ๋ก .NET Core ์์ฒด ํฌํจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํ์ผ์ ๋จ์ผ ํ์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค.
์์ฒด ํฌํจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ํ์ฌ ํ๋ซํผ ๊ฐ ์ด์ผ๊ธฐ๋ ํ๋ซํผ๋ณ ๋ฐํ์๊ณผ ํจ๊ป ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋์์ผ๋ก ์ง์ ํ๋ ค๋ ํ๋ซํผ๋ณ๋ก ๋ฐฐํฌ ํจํค์ง๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค.
@morganbr ์๊ฐ์ ๋ด์ด ์ด๋ ๊ฒ ์์ธํ ๋ต๋ณ์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋์์ธ์ด ์ด๋๋ก ๊ฐ๋์ง ๋ณด๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ ์ ๋ง ํฅ๋ฏธ๋ก์ด ์ด๋์ ํฐ๋ธ์ ๋๋ค.
๋จ์ผ ํ์ผ์ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์๊ฒ ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ๊ทํ์ ๋ต๋ณ์ ์ ํ์ ํญ์ ์ขํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@morganbr , ์ด๋ฌํ ์ง๋ฌธ์ด ๋ ๋ง์ ์ฒญ์ค์๊ฒ ๋ ๋์ ์ง๋ฌธ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น? ์ฆ, ์ด GitHub ๋ฌธ์ ์ ๋ํด ์๊ณ ์๋ ์ฌ๋๋ค๋ณด๋ค ๋ ๊ด๋ฒ์ํฉ๋๊น?
์๋ฅผ ๋ค์ด ๊ฐ๋ฅํ ์ค๊ณ๋ ๊ธฐ๋ณธ์ ์ผ๋ก .NET Core ์์ฒด ํฌํจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํ์ผ์ ๋จ์ผ ํ์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ผ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ์์ถํ๋ ๊ฒ์๋ณด๊ณ ; ๋๋ ํ์ผ์ ์์ถ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
@tpetrina , ๊ฐ์ฌํฉ๋๋ค! ํฌ์ธํธ 3์ ๋ช ๊ฐ์ง ๋์์ธ ๊ฐ๋๋ฅผ ๋ค๋ฃน๋๋ค.
@TheBlueSky , ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ ์ฐ๋ฝํ์ง๋ง GitHub ์ปค๋ฎค๋ํฐ์ ์ด์ ์ ์ธ ์ฌ๋๋ค๋ก๋ถํฐ ์๊ฒฌ์ ์ป๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
@benaadams , ์์ถ์ ํ ์ด๋ธ์ ์์ง๋ง ํ์ฌ ์ ์ฒด ๋์์ธ๊ณผ ์ง๊ตํ๋ค๊ณ ์๊ฐํ๊ณ ์์ต๋๋ค. ๊ฐ๋ฒผ์ด ์คํ์ ๋ฐ๋ฅด๋ฉด ์์ถ์ ๋ช ์ด์ ์์ ์๊ฐ(๋ฐ ๋น๋ ์๊ฐ)์ ํฌ์ํ์ฌ ์ฝ 50% ํฌ๊ธฐ ๊ฐ์๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ ๊ฒ ํ๋ค๋ฉด ์ ํ ์ฌํญ์ด ๋์ด์ผ ํ ๋งํผ ์ถฉ๋ถํ ๊ธ์ง์ ์ธ ์ ์ถฉ์์ ๋๋ค.
@morganbr ์์ถ์ ์ฌ์ฉํ ๋ ์์ ์๊ฐ์ด ๋ช ์ด์ ๋๊น? UPX ๊ฐ ์์ถ ํด์ ์๋๋ฅผ
๊ณ ๋ Pentium 133์์ ~10MB/์ด, Athlon XP 2000+์์ ~200MB/์ด.
@morganbr , ๋์๊ฒ ๋๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ์๋น์ค(๊ธฐ๋ณธ์ ์ผ๋ก Kestrel์ ์คํํ๋ ์ฝ์ ์ฑ). Windows ์๋น์ค/๋ฆฌ๋
์ค ๋ฐ๋ชฌ์ผ๋ก ์คํํ๊ฑฐ๋ ๋์ปค์์ ์คํํฉ๋๋ค.
2) ์
3) ์, ์ผ๋ฐ์ ์ผ๋ก AssemblyContext.LoadFrom
๋ฅผ ์ฌ์ฉํ์ฌ ์ด์
๋ธ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์ต์ข
์ฌ์ฉ์๊ฐ ์ ๊ณตํฉ๋๋ค.
4) ์, ์์๋ฉ๋๋ค. ์ฌ์ค, ์ด์จ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ ์ฒด ํ๋ ์์ํฌ๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํ๋ฏ๋ก ๊ทธ ๊ด์ ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ต๋๋ค.
5) ์๋น์ค๋ก์ ์ฐ๋ฆฌ๋ ์์ ์๊ฐ์ ๊ทธ๋ค์ง ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. 5์ด๊ฐ ์ ๋นํฉ๋๋ค.
6) 75MB๊ฐ ํ๊ณ์ผ ๊ฒ์
๋๋ค. ๋ชจ๋ ํจํค์ง๊ฐ ์์ถ๋์ด ๋ฐฐ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์ค์ ์์ถ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ง์ด ๋ค๋ฆ
๋๋ค.
7) ๋ฆด๋ฆฌ์ค ๋น๋์ ๊ฒฝ์ฐ ๋ ๊ธด(ํจ์ฌ ๋ ๊ธด) ๋น๋ ์๊ฐ์ด ํ์ฉ๋ฉ๋๋ค.
8) ์, ์ ๋์ ์ผ๋ก. ํฌ๊ธฐ๋ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ง๋ง ์์์๋ก ์ข์ต๋๋ค.
๋ด๊ฐ ์ธ๊ธํ์ง ์์๊ณ ๋งค์ฐ ์ค์ํ ๊ฒ์ ์ด๊ฒ์ ๋๋ฒ๊น
๊ฐ๋ฅ์ฑ์
๋๋ค.
์ด๊ฒ์ด ์คํ ์ถ์ ์ ์๋ง์ผ๋ก ๋ง๋ค์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค pdb
ํ์ผ์ด๋ ์ผ์ข
์ ๋๋ฒ๊น
๊ธฐํธ๋ฅผ ํฌํจํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์์ถ์ ๊ดํด์๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ค์ ์ ๋ฌ ๋ฉ์ปค๋์ฆ์ด ์ด๋ฏธ ์์ถ๋์ด ์๋ค๋ ์ฌ์ค์ ๊ณ ๋ คํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ๋๊ฒ ํจํค์ง.
์ฌ์ฉ์๋ ์์ถ์ ํธ๋ ๋ฐ์๋ ๋ฅ์ํ๋ฏ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
์ธก๋ฉด์์ ์์ถ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ณ ๋ง์, @ayende! ๋๋ฒ๊น ๊ฐ๋ฅ์ฑ์ ์ธ๊ธํ์ด์ผ ํ๋ ๊ฒ์ด ๋ง์ต๋๋ค. ๋๋ฒ๊น ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ช ๊ฐ์ง ์ฌ์ํ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"pdb ํ์ผ ํฌํจ"์ด๋ผ๊ณ ๋งํ ๋ ๋จ์ผ ํ์ผ _inside_๋ฅผ ์ํ์ญ๋๊น ์๋๋ฉด ๋จ์ผ ํ์ผ ๋น๋๋ฅผ ๋๋ฒ๊ทธํด์ผ ํ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ํ์ผ์ ์์ฑํ๊ณ ๋งค๋ฌ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ํ์ญ๋๊น?
1) ์ฐ๋ฆฌ์๊ฒ๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. E&C๋ ์ผ์์ ์ธ ๋ฐฐํฌ๊ฐ ์๋ ์ค์ ๋ฐฐํฌ์๋ง ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ ๊ด๋ จ์ด ์์ต๋๋ค.
2) ์ด์์ ์ผ๋ก๋ PDB๋ฅผ ํฌํจํ ๋ชจ๋ ๊ฒ์ ๋ํด ํ๋์ ํ์ผ์ด ์๊ณ ์ธก๋ฉด์ ํ๋์ ํ์ผ๊ณผ pdb ์ธํธ๊ฐ ์๋ ๊ฒ์ด ์๋๋๋ค. ์๋ฒ ๋๋ PDB ์ต์
์ด ์ด๋ฏธ ์์ต๋๋ค. ์๋ํ๋ค๋ฉด ํ๋ฅญํ ๊ฒ์
๋๋ค.
3) ๋๋ฒ๊ทธ์ ๋ํด ๋งํ ๋ ๋๋ ๋๋ฒ๊ฑฐ๋ฅผ ๋ผ์ด๋ธ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ๋ณด๋ค ์์ฐ ์๊ฐ์ ๋ํด ๋ ๋ง์ด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋ณด๋ค ๊ตฌ์ฒด์ ์ผ๋ก, ํ์ผ ๋ฐ ์ค ๋ฒํธ๋ฅผ ํฌํจํ๋ ์คํ ์ถ์ ์ ๋ณด, ๋คํ๋ฅผ ์ฝ์ ๋ ๊ธฐํธ๋ฅผ ํ์ธํ ์ ์๋ ๋ฑ
์ฐ๋ฆฌ์๊ฒ ๋ ๋ค๋ฅธ ์ง๋ฌธ์ ๊ฐ๋ณ ๊ตฌ์ฑ ์์(์๋ง๋ ๋จ๊ณ์ )์ ๋ํด์๋ ์ด ์์ ์ ์ํํ ์ ์๋์ง ์ฌ๋ถ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ง์ ์ข ์์ฑ์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ dll์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ๋ค์ ํจํค์งํ ์ ์๋ค๋ฉด ๋ฒ์ ๊ด๋ฆฌ ๋ฑ์ ์๊ณ ๋ฅผ ๋ ์ ์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ๋ค์ด ์ฐจ๋ก๋ก exe๋ก ํจํค์ง๋ ์ ์๋ค๋ฉด ํจ์ฌ ๋ ์ข์ ๊ฒ์ ๋๋ค.
@tpetrina @ayende @bencyoung @Kosyne @expcat ๋น์ ์ ์ง๋ฌธ 3์ ์๋ผ๊ณ ๋ตํ์ต๋๋ค("๋น์ ์ ์ฑ์ ํ๋ฌ๊ทธ์ธ์ด๋ ๋น์ ์ ์ฑ ๋น๋์ ์๋ ํฌํจํ์ง ์์ ๋ค๋ฅธ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?") - ๋น์ ์ ์ฌ์ฉ์ ๋ํด ๋ ์์ธํ ์๋ ค์ฃผ์ค ์ ์์ต๋๊น? ์ฌ๋ก?
๋จ์ผ ํ์ผ ๋ฐฐํฌ์ ์ฃผ์ ์ฅ์ ์ ๋ฐฐํฌํ ํ์ผ์ด ํ๋๋ฟ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ฑ์ ๋ณ๋์ ํ์ผ์ ํ๋ฌ๊ทธ์ธ์ด ์๋ ๊ฒฝ์ฐ ์ฌ๋ฌ ํ์ผ์ด ์๋ ๋จ์ผ ํ์ผ ๋ฐฐํฌ์์ ์ป์ ์ ์๋ ๊ฐ์น๋ ๋ฌด์์ ๋๊น? "app.exe+plugin1.dll+plugin2.dll"์ด "app.exe+coreclr.dll+clrjit.dll+...+plugin1.dll+plugin2.dll"๋ณด๋ค ๋์ ์ด์ ๋ ๋ฌด์์ ๋๊น?
app.exe
+ 300+ dll - ์ค๋๋ ์ ํ์ฌ ์ํ๋ ์ ๋ง ์ด์ํฉ๋๋ค.
app.exe
+ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ์์ ์ด ์ ์ํ๋ 1-5๊ฐ์ dll์ด ํจ์ฌ ์ฝ์ต๋๋ค.
์ฐ๋ฆฌ์ ์๋๋ฆฌ์ค๋ ์ฌ์ฉ์๊ฐ ํน์ ํ์ฅ์ ํ์ฉํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ exe
๋ง ๋ฐฐํฌํ๊ณ ์ฌ์ฉ์๋ ํ์์ ๋ฐ๋ผ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ทธ๋ ๊ฒ ํ _๊ณํ_์ ์๋์ง๋ง, ํ์ํ ๊ฒฝ์ฐ ๊ทธ๋ ๊ฒ ํ๊ธฐ๋ฅผ _ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค.
@ayende ์ฐ๋ฆฌ์ ๋์ผํ๊ฒ ๋์ํ์ต๋๋ค.
๋ํ dll ์์ค์์ ์ด๋ฅผ ์ํํ ์ ์๋ค๋ฉด ํด๋ผ์ด์ธํธ ์ด์ ๋ธ๋ฆฌ์ ์ถฉ๋ํ์ง ์๋๋ก ์ด์ ๋ธ๋ฆฌ ๋ด๋ถ์ ์ข ์์ฑ์ ํจํค์งํ ์ ์์ต๋๋ค. ์ฆ, NewtonSoft.Json์ ๋ฒ์ ์ ์ ํํ๋ฉด ํ์ฌ ๋์ผํ ํด๋์ ์๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ, ํ๋ฌ๊ทธ์ธ ๋ฐ ํ์ฌ ์ด์ ๋ธ๋ฆฌ์ ๋ํด ์ ์ํ๊ณ ์์ง๋ง ์ด๋ฅผ ํฌํจํ ์ ์๋ค๋ฉด ํ์ฌ์์ ์ ์ฐ์ฑ์ ํ๋ณดํ๊ณ ๋ฒ์ ํธํ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
@ayende ์ ๋์ํฉ๋๋ค.
๋ต๋ณํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํด์ผ ํ๋ ์ฌ๋๋ค์ ์์ ๋ฐ๋ผ ์ฐ๋ฆฌ๊ฐ ๊ด๋ฆฌํ ์ ์๋ ๊ฐ์ฅ ํธํ๋๋ ์ ๊ทผ ๋ฐฉ์์ด ์์ํ๊ธฐ์ ๊ฐ์ฅ ์ ํฉํ ๊ณณ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฅผ ์ํด "ํฌ์ฅ ๋ฐ ์ถ์ถ" ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
์ด๊ฒ์ ๋ณธ์ง์ ์ผ๋ก ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ .NET ํ์ผ์ ์ถ์ถ๊ธฐ ์คํ ํ์ผ์ ๋ฆฌ์์ค๋ก ํฌํจํ๋ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค. ์คํ ํ์ผ์ด ์คํ๋๋ฉด ํด๋น ํ์ผ์ ๋ชจ๋ ์์ ๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ ๋ค์ ์ฑ์ด ๋จ์ผ ํ์ผ์ด ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฒ์๋ ๊ฒ์ฒ๋ผ ์คํ๋ฉ๋๋ค. ์์ถ์ผ๋ก ์์ํ์ง๋ ์์ง๋ง ๋ณด์ฆ๋๋ค๋ฉด ํฅํ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ด ๊ณํ์ ๊ฐ์ฅ ๊น๋ค๋ก์ด ์ธ๋ถ ์ฌํญ์ ํ์ผ์ ์ถ์ถํ ์์น์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ค์์ ํฌํจํ๋ ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ฑํ์ฌ ์ด ๋ชจ๋ ๊ฒ์ ์ค๋ช ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํจ๊ป ๋ณด๋ฉด c:\users\username\AppData\Local\dotnetApps\elevated\MyCoolApp\1.0.0.0_abc123\MyCoolApp.dll
(์ฑ ์ด๋ฆ์ด MyCoolApp์ธ ๊ฒฝ์ฐ ๋ฒ์ ๋ฒํธ๋ 1.0.0.0์ด๊ณ ํด์/guid๋ abc123์ด๋ฉฐ ์์น๋ ๋ฒ์ ์ผ๋ก ์ถ์๋์์ต๋๋ค.)
์ถ์ถ๊ธฐ์ ํ์ผ์ ์ฝ์ ํ๋ ์์ ๋ ํ์ํฉ๋๋ค. Windows์์๋ ๋จ์ํ ๊ธฐ๋ณธ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง Linux ๋ฐ Mac์์๋ ์ฌ์ฉ์ ์ง์ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ํธ์คํธ(์ถ์ถ๋ ํ์ผ ์ฐพ๊ธฐ) ๋ฐ ์ง๋จ(DAC ๋๋ ๊ธฐํ ํ์ผ ์ฐพ๊ธฐ)์์ ์กฐ์ ์ด ํ์ํ ์๋ ์์ต๋๋ค.
CC @swaroop-sridhar @jeffschwMSFT @vitek-karas
๋๋ ์ด ์น๋ฃ๋ฒ์ด ์ง๋ณ๋ณด๋ค ๋ ๋์๋ค๊ณ ๋๋๋ค. ์ธ๋ถ ๋๋ ํ ๋ฆฌ(OS๋ง๋ค ๋ค๋ฆ), ์ ๋ฐ์ดํธ, ์ ๊ฑฐ ๋ฑ์ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฒ์์ ์ด ๊ธฐ๋ฅ์ ์ํ๋ ์ด์ (๋ชจ๋ ๊ฒ์ ๋จ์ํ๊ณ , ํด๋ ๊ฐ๋ฅํ๋ฉฐ, ๋ ๋ฆฝ์ ์ด๊ณ ๊นจ๋ํ ์ํ๋ก ์ ์ง)์ ๋ฐ๋ํฉ๋๋ค.
์ด๊ฒ์ด ์ ๋์ ์ผ๋ก ์ด ๋ฐฉ์์ด์ด์ผ ํ๋ ๊ฒฝ์ฐ ๋ด ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋จ์ผ ๊ธฐ๋ณธ ์คํ ํ์ผ๊ณผ ์์ถ์ ํผ ํ์ผ์ด ํด๋น ์คํ ํ์ผ๊ณผ ํจ๊ป ๋๋ ํ ๋ฆฌ์ ์๊ฑฐ๋ ํด๋น ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋๋ก ๊ฐ์ง ๊ฒฐ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ํจ์ฌ ์ ํธํฉ๋๋ค.
์ ๋ง ๊ทธ๋ฐ๊ฑด์ง ๋ค๋ฅธ ๋ถ๋ค์ ์๊ฒฌ๋ ๊ถ๊ธํฉ๋๋ค.
์ฌ๊ธฐ์ ๋์ํด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ ํฅ๋ฏธ๋ก์ด ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด exe์ ํจ๊ป ๊ตฌ์ฑ ํ์ผ์ ๋ฐฐ์นํ๋ฉด "์ค์ " ๋๋ ํ ๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ณณ์ ์๊ธฐ ๋๋ฌธ์ ์ด exe๊ฐ ์ ํ๋์ง ์์ต๋๋ค.
๋์คํฌ ๊ณต๊ฐ์ ์ก์ธ์ค ์ ์ฑ
๋ฑ์ผ๋ก ์ธํด ์์์ ํ์ผ ์ ๊ธ์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. pp.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง ์ด์ ์ ๊ฐ์งํ ์ ์๋ ๋ค์ํ ์คํจ ๋ชจ๋๊ฐ ์ถ๊ฐ๋๋ค๋ฉด ์ฌ์ฉํ์ง ์์ ๊ฒ์
๋๋ค.
@Kosyne ์ ๋์ - ์ ์๋ ์ด๊ธฐ ์๋ฃจ์ ์ ์ผ์ข ์ "์ค์น ํ๋ก๊ทธ๋จ"์ ๋จ์ํ ์๋ํํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ํ ๋ช ์ ๊ฐ๋ถ๋ก ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ์ ํ๊ณ์๋ค๋ฉด ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๊ทธ ์๋ํ๋ฅผ ์ค์ค๋ก ์ํํ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋จ์ผ ์คํ ์ ์์ ์ฃผ์ ๋ชฉํ๋ ๊ด๋ฆฌ๋์ง ์๋ ์์คํ ์์ ์คํ ํ์ผ์ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. ์ ํํ ๋์ "์ค์น" ๋๋ ํ ๋ฆฌ์ ๋ํ ์ฐ๊ธฐ ๊ถํ์ด ์๋์ง ๋๊ฐ ์๊ฒ ์ต๋๊น? ๋ฌผ๋ก ์์ ํ ์์ฒด์ ์ผ๋ก ์ธ๊ณต๋ฌผ์ ๋จ๊ธฐ์ง ์์์ผ ํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ ์๋).
์์ ์ฌํญ์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๊ธฐ์กด ์ ์์ ์ฝ๊ฐ ์์ ํ ๊ฒ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์์ถ์ ํ๊ณ ๊ฑฐ๊ธฐ์์ ์คํํ ์ ์์ต๋๊น?
๋๋จธ์ง ์๊ฒฌ์ ๋์ํฉ๋๋ค. ๋ค๋ฅธ ์์น๋ก ์์ถ์ ํธ๋ ๊ฒ์ _์ด๋ฏธ_ ์ฌ์ฉํ ์ ์๋ ๊ฒ์
๋๋ค.
์ถ์ถ๋ ๊ฐ์ ์๋นํ ์ฝ๊ฒ ์คํํ ์ ์๋ ์์ฒด ์์ถ ํด์ zip์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ด๊ฒ์ด ๋๋ตํ๊ธฐ ์ํ ๊ฒ์ด๋ฉฐ ์ค์น์ ๋ ๋ค๋ฅธ ์ด๋ฆ์ผ ๋ฟ์ด๋ผ๋ ๋ง์ ์ฐ๋ ค์ ๋๋ตํ์ง ์์ต๋๋ค.
ํ์ผ์ ์์น๊ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๋ค์์ ์๋ฏธํฉ๋๋ค.
์ฌ์ฉ์ ์ค ํ ๋ช ์ด ์ค์ ๋ก HD๋ฅผ ์คํํ ์ ์๋ ์์คํ ์์ DVD์์ ์ํํธ์จ์ด๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
๋๋ ๋ชจ๋ ๊ฒ์ ๊ธฐ์ต ์์ํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์๊ฐ์ ๋ํ ์ฐ๋ ค๋ ๊ทธ๋ฆฌ ํฌ์ง ์์ต๋๋ค. ๋ค์ ์์ํ ๋๋ง๋ค ์ด ๋น์ฉ์ ์ง๋ถํ๊ฑฐ๋ ํ์ํ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ด๋ฅผ ์ํํ๋ ๋จ๊ณ๋ฅผ ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ๊ธฐ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์ค์ ํฌ๊ธฐ์ ๋๋ค. ์ด๊ฒ์ด ๋จ์ง (ํจ๊ณผ์ ์ผ๋ก) ์ค์น ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ์๋ฐฑ MB์ ํฉ๋ฆฌ์ ์ธ ์ฑ์ ๋ํ ํ์ผ ํฌ๊ธฐ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ ์๋ฏธํฉ๋๋ค.
์ ์๋ ์๋ฃจ์ ์ ๊ตฌ์ถํ๋ ๋ฐ CLR ๋ณ๊ฒฝ์ด ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฏธ ์ด์ ๊ฐ์ ์๋ฃจ์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด๊ฒ์ CoreCLR์ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํนํ, ์ด์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ ์๋นํ ์ข๊ณ ๊ตฌ์ฒด์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
@GSPP ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ 7z-Extra
๋ก ํ ์ ์๋ ์ผ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๊ฒฝ์ฐ๋ผ๋ฉด ์์ ๊ฐ์ง _์๋_ ๊ฒ์ด ๋ซ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
์ด ํํฐ์ ๋ฆ์ด์ ์ฃ์กํฉ๋๋ค. ์ถ์ ์ค์ธ ์ค๋ณต ํฐ์ผ์ ๊ฒ์๋ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ ์ฌ๊ธฐ๊น์ง ์์ต๋๋ค.
์ฌ๊ธฐ์์ ์ต์ ๋๊ธ์ ์ฝ์ ํ ํฌ์ฅ ๋ฐ ์ถ์ถ์ ๊ณ ๋ คํ๊ณ ์๋ ๊ฒ์ ๋ณด๋ ์ ๊ฐ์
๋๋ค. ์ด๊ฒ์ ์ง๋์น ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ ์ฝ์ ์ฑ์ฉ SFA ๋ฐฐํฌ ๊ธฐ๋ฅ์ผ๋ก ์์ํ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ๋จ์ผ ํ์ผ์ ์๋ ์ผ๋ถ ๋คํธ์ํฌ, IO ๋ฐ ์ผ๋ถ ์ธ๋ถ ์ข
์์ฑ(nuget ๋ฑ)์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ์ ์ธ ์ฝ์ ์ฑ์ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ๋งํ๋ ค๋ ๊ฒ์ ๋ชจ๋ ์ฌ๋์ ์๊ตฌ ์ฌํญ์ ์์งํ๋ ๋์ ์๋ฌด๋ ์๊ตฌํ์ง ์๋ ์ฌํญ์ ์์งํ๋ ๋์ ๋ชจ๋ ์ฌ๋์๊ฒ ์๋ฏธ๊ฐ ์๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐ์ถํ๋ ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต์ผ๋ก ์๊ฒ ์์ํ๋ผ๋ ๊ฒ์
๋๋ค.
์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ 7z-Extra๋ก ํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๋ ์๋ฃจ์ ์ด ์ค๋๋ ๋ง์ด ์กด์ฌํ๋ค๋ ๊ฒ์ ๋ง์ต๋๋ค. ๋ง์ ๊ฒ ์ค ๋ ๋ค๋ฅธ ์: https://www.boxedapp.com/exe_bundle.html
์ฌ๊ธฐ์ ์ถ๊ฐ๋ ๊ฐ์น๋ ์ ๋ฌธ๊ฐ๊ฐ ์๋ ์ฌ์ฉ์๋ ์ฝ๊ฒ ์ํํ ์ ์๋๋ก dotnet ๋๊ตฌ์ ํตํฉํ๋ ๊ฒ์ ๋๋ค. ์ ๋ฌธ๊ฐ ์ฌ์ฉ์๋ ๊ทํ๊ฐ ์ง์ ํ ๋๋ก ๊ธฐ์กด ๋๊ตฌ๋ฅผ ํจ๊ป ์ฐ๊ฒฐํ์ฌ ์ค๋๋ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก, ๋๋ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ์ฌ๋ฐ๋ฅธ ์ ํ์ ํ๊ณ ์๋์ง ๋ช ํํ์ง ์๋ค๋ ์ ์ ๋์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํต์ฌ ํ ๋ด์์ ์ด์ ๋ํด ๋ง์ ํ ๋ก ์ ํ์ต๋๋ค.
์ธํด์ ๋ฐฐ์นํ๊ณ ๊ธ๋ก๋ฒ ๋๊ตฌ(๊ถ์ฅ๋์ง๋ง ์ง์๋์ง๋ ์์)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฉฐ ์ค์น๋ ์๋นํ ์ฌ์ธ ์ ์์ต๋๋ค.
ํจ๊ณผ์ ์ผ๋ก, ์ฐ๋ฆฌ๋ dotnet publish-single-file
์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ผ๋ฉฐ ์ด๋ ๋ฌด๋ ๋ค์์ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ํํ ๊ฒ์
๋๋ค.
์ด ์๋๋ฆฌ์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ํ๋ ์์ํฌ๋ ๋ฐํ์์ ์ค์ ๋ก ํ์ํ ๊ฒ์ ์๋ฌด๊ฒ๋ ์์ผ๋ฉฐ, ์ด๊ฒ์ ํ๋ ์์ํฌ ์ธ๋ถ์ ๋ช
์์ ์ผ๋ก ๋ง๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํจ์ฌ ๋ ๋ง์ ์์ ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
ํ๋ ์์ํฌ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ ๊ฒฝ์ฐ ์ป์ ์ ์๋ PR(๋ชจ๋ ๊ด๋ จ ํ์ฌ, ๋ฐฑ์๋ ์ปดํฉํธ, ๋ณด์ ๋ฑ)์ ์ป์ "ํ์"๊ฐ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋ถ์
ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๋ด๊ฐ ์ด ๊ธฐ๋ฅ์ ์ํ๋ ๋งํผ ์ธ๋ถ์์ ์ ํ ์ ์๋ ์ด๋ค ๊ฒ(๊ทธ๊ฒ์ด _ํญ์_ ์์ ๊ฒ์ด๋ผ๋ ์๋ฏธ)์ ๊ฐ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ ๋์ ์์ค์ ์ง๋ฌธ์ ํ๊ณ ์ถ์ต๋๋ค. ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ฅผ ์ํ๋ ๊ณ ๊ฐ์ ์ฃผ๋ ๋๊ธฐ๋ ๋ฌด์์
๋๊น?
์ฃผ๋ก:
์ผ๋ถ ์ฌ๋๋ค์ ์ด ๊ธฐ๋ฅ์ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ ๊ฒ์ผ๋ก ์ฝ๊ฑฐ๋ ์ ์ด๋ ์ฌ๊ธฐ์ ํต์ฌ ๊ธฐ๋ฅ ์ธํธ์ ํฌํจํ๋ ๊ฒ์ด ์ข์ ๋ชฉํ๊ฐ ์๋ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ ํฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋น์ค ๋๋ ํ์ ๋ชจ๋ ์ญํ ์ ํ๋ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ๋งค์ฐ ๊ฐ๋ ฅํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ ์ ์ ๋ฐ๋ณตํ๊ณ ์ถ์ต๋๋ค. ์์ฑ์๊ฐ ๊ฐ๋ฐ์๊ฐ ์๋ ์๋ ์์ต๋๋ค. ์ค์น(์๋ ๋๋ ๊ธฐํ)๋ก๋ง ํด๊ฒฐํ ์ ์๋ ์ข
์์ฑ ์๊ตฌ ์ฌํญ ๋๋ ์ฌ์ฉ์์ ์ถ๊ฐ ๋ณด์ ์์น์ด ํ์ํ ์ ์๋ ๋์คํฌ์ ์ฌํ ์คํ ์ํฐํฉํธ ๋ฑ์ ์ ๋ฌํ๊ณ ์ถ์ง ์์ต๋๋ค.
ํ์ฌ๋ก์๋ .NET์ด ์ด ํ์ ์์ฅ์ ์ ํฉํ ์ ํ์ด ์๋๋๋ค. ๊ทธ๋ฌ๋ (๊ทธ๋ฆฌ๊ณ IMO์ด์ด์ผ ํจ) ๊ทธ๋ด ์ ์์ต๋๋ค.
์ปดํ์ผ๋ ์คํ ํ์ผ์ ๋ค์์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
Re @swaroop-sridhar ๊ฐํ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ๊ณ ์ ํ ์ฑ๋ฅ ์๊ตฌ ์ฌํญ์ด ์์ผ๋ฏ๋ก ํต์ฌ ์๋ฃจ์ ์ ๋ค๋ฃฌ ํ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋งค๋ฌ๋ฆฐ ๊ณผ์ผ์ ๊ณจ๋ผ ๊ฑฐ๊ธฐ์์ ์์ํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@swaroop-sridhar ์ ์๊ฒ ์ด๊ฒ์ ์ต์ข
์ฌ์ฉ์๋ฅผ ์ํ ํจํค์ง๊ณผ ์ฌ์ฉ ์ฉ์ด์ฑ์ ๊ดํ ๊ฒ์
๋๋ค.
์์คํ
์ ๋ฐ์ ๊ฑธ์น ์ค์น๋ฅผ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ํด๋ฆญํ๊ณ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด๋ ์ํํธ์จ์ด๋ฅผ ํฌํจํ ์ ์๋๋ก ํ๊ณ ๋จ์ผ ํ์ผ ์ ๋์จ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ํจ์ฌ ์ฝ๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค.
@strich ์๋ฒ ๋ฉ์ ๋ํ ์์ ์ ์ข์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ์ ๊ตฌ์ฑ ์์๋ก ์ฌ์ฉ๋๋ฉฐ ๋ฐฐํฌ ์ค๋ฒํค๋๋ฅผ ์ค์ด๋ฉด ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฌธ์ ๋ ์ด๊ฒ์ด ์ค์ํ ๊ธฐ๋ฅ์ธ์ง ์๋์ง๊ฐ ์๋๋๋ค. ๋ฌธ์ ๋ ์ ์๋ ์๋ฃจ์
(์ด ์์ ์์ ๋ณธ์ง์ ์ผ๋ก ์์ถ)์ด _ํต์ฌ์_ ์์ด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค.
ํต์ฌ์ ์๋ ๊ฒ์ ๋ณ๊ฒฝ์ ๋ํด ํจ์ฌ ๋ ๋์ ๊ธฐ์ค์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์ธ๋ถ ๋๊ตฌ๋ก ์ฌ์ฉํ๋ฉด ์์ ๋ฐ ํ์ฅ์ด ๋ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ ์ข์ต๋๋ค.
์์งํ ๋งํด์ ๋ ๋์ ์ต์
์ ๋ณด๋ ๊ฒ์ด ํจ์ฌ ๋ซ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ผ ๋์ ๋ฉ๋ชจ๋ฆฌ์์ dll์ ๋ก๋ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค(์ผ๋ถ ์์
์ด ํ์ํ์ง๋ง ๊ฐ๋ฅํจ).
๊ทธ๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ์์ ๋ฉ๋ชจ๋ฆฌ์์ ์์ถ ํ๊ธฐ๋ฅผ ์ํํ๊ณ ๋์คํฌ ํํธ ์์ด _์ ์ฒด_ ์ผ์ ์คํํ ์ ์์ต๋๋ค.
์ด๋ ํต์ฌ์ ์์ด์ผ ํ๋ ๊ฒ์ธ๋ฐ, ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๋ฉด ๋ฐํ์์ ์์ ํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๊ทธ ์์ฒด๋ก ๊ฐ์น๊ฐ ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ด ์๋๋๋ค.
๋ฐ๋ผ์ Hashicorp's Consul๊ณผ ๊ฐ์ Go ๋๊ตฌ์ ๊ฒฝํ์ ์ดํด๋ณด๋ ๊ฒ์ด ์ข์ ์์ ๋๋ค. ๋ชจ๋ ์์คํ ์ ๋๋กญํ ์ ์๋ ๋จ์ผ exe ํ์ผ์ด ์คํ๋ฉ๋๋ค. ์ค์น ํ๋ก๊ทธ๋จ์ด ์๊ณ , ํด๋๋ฅผ ๋ณต์ฌํ์ง๋ ์๊ณ , ์๋ฐฑ ๊ฐ์ ํ์ผ ๋ชฉ๋ก์์ ๊ตฌ์ฑ ํ์ผ์ ์ฐพ์ ํ์๋ ์๊ณ , ์ ๋ง ์ข์ ์ต์ข ์ฌ์ฉ์ ๊ฒฝํ์ ๋๋ค.
ํ๋ฌ๊ทธ์ธ dll์์๋ ์๋ํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ด ์ ๊ทผ ๋ฐฉ์์ด ์๋ํ ์ง ํ์ ํ ์ ์์ต๋๋ค(๋ฐ๋ผ์ ํ๋ฌ๊ทธ์ธ ์ญ์ ๋ ์ข ์์ฑ ์ ์ฒด๊ฐ ์๋๋ผ ๋จ์ผ ํ์ผ์ด๊ธฐ๋ ํจ). ๊ทธ๋ฌ๋ ๋ชจ๋ ์งํ ์ํฉ์ ์ํด. ์ฐ๋ฆฌ๋ Fody.Costura๋ฅผ ์ดํด๋ณด์๊ณ ์ผ๋ถ ํญ๋ชฉ์์๋ ์ ์๋ํ์ง๋ง .NET Core์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
๋ฐ๋ผ์ ์ข์ ์๋ Hashicorp์ Consul๊ณผ ๊ฐ์ Go ๋๊ตฌ์ ๊ฒฝํ์ ์ดํด๋ณด๋ ๊ฒ์ ๋๋ค.
์ด, ์์ฌ ๊ฐ์ ๋๊ตฌ์ ๊ฒฝ์ฐ ์ด์์ ์ธ ์๋ฃจ์ ์ ์ด ์์ฒด ์ถ์ถ ์ฆํฅ ์ฐ์ฃผ๊ฐ ์๋๋ผ corert์ ๋๋ค.
@mikedn ์ ๊ทธ๋? AOT ๋๋ JIT ์ปดํ์ผ์ด ๋ฐฐํฌ ๋ฐฉ๋ฒ๊ณผ ์ด๋ค ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@strich ์ ๋ง์ ๋ ๋ฒ์งธ๋ก ํ๊ณ ์ถ์ต๋๋ค. ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ๋ฐฐํฌ๋ฟ๋ง ์๋๋ผ ๋ช ๋ น์ค์ด ์๋ ์์ ๋๊ตฌ์ด๊ฑฐ๋ ์ต์ํ ์๋ช ์ด ์์๋๋ ๋ชจ๋ ์ฝ์ ์ฑ์ ์ ์ ํ ๊ณต๊ธฐ๊ฐ ๋ ๊ฒ์ ๋๋ค. ์ค์์น.
์ ๊ทธ๋? AOT ๋๋ JIT ์ปดํ์ผ์ด ๋ฐฐํฌ ๋ฐฉ๋ฒ๊ณผ ์ด๋ค ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ํ๋ ๊ฒ์ ์ ํํ๊ฒ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋จ์ผ exe ํ์ผ์ ๋ชจ๋ ์์คํ (์ ์ ํ OS๊ฐ ์๋ ๋ชจ๋ ์์คํ , ๊ฒฐ๊ตญ ๊ธฐ๋ณธ ํ์ผ)์ ๋๊ณ ์คํํ ์ ์์ต๋๋ค. ๋ํ ๋ฆฌ์์ค๋ฅผ ๋ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์์ผ๋ฏ๋ก ์์ฌ์ ๊ฐ์ ์์ด์ ํธ์๊ฒ๋ ์ข์ ๊ฒ์ ๋๋ค. ์์ฒด ์ถ์ถ ์๋ฃจ์ ์ด์์ผ๋ก Go๊ฐ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
@mikedn ์ถ์ธกํ์ง๋ง
1) ์์ง ํ๋ก๋์
ํํ๋ก ์กด์ฌํ์ง ์์ต๋๋ค(๋ด๊ฐ ์๋ ํ)!
2) ๋์ ๊ธฐ๋ฅ์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค(IL ์์ฑ, ์์ ๋ฐ์ฌ)
3) ์ฐ๋ฆฌ๋ ์ฌ์ ํ ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค(๋ค์ ์ด์์ ์ผ๋ก ์์ถ๋จ)
์ด ๋ฌธ์ ๋ ์ฌ๋๋ค์๊ฒ ์ํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ฌป๋ ๊ฒ์ด๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ์ ์๊ฒฌ์ ์ ์ํ ๋ฟ์ ๋๋ค! ์ด ์ด์ ์ ์ป๊ธฐ ์ํด ๋ค๋ฅธ ๋ฐํ์ ๋ชจ๋ธ๋ก ์ ํํด์ผ ํ๋ ๊ฒ์ ์๋๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ๋ค์ ์ง๊ต์ ๊ด์ฌ์ฌ๋ค.
AOT ๋๋ JIT ์ปดํ์ผ์ด ๋ฐฐํฌ ๋ฐฉ๋ฒ๊ณผ ์ด๋ค ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
JIT๊ฐ ์์ผ๋ฉด ๋๋ฒ๊น ์คํ ๋ฆฌ์ ๊ฐ์ ๋ด์ฉ์ ์ถฉ๋ถํ ์ฝ๊ฒ ์ป์ ์ ์์ต๋๋ค. JIT ๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ๋ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ Go์์ ์ฐพ์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์์ง๋์ด๋ง์ด๋ฏ๋ก ๋ ์ด๋ ค์ด ๋ฌธ์ ์ ๋ ๋ง์ ์์ง๋์ด๋ฅผ ํฌ์ ํ๊ณ ์๋ก์ด ๋ณต์ก์ฑ์ผ๋ก ์ด์๊ฐ๊ฑฐ๋ ๋ค๋ฅธ ๊ณณ์์ ๋ฒ์๋ฅผ ์ขํ ์ ์์ต๋๋ค. Self-extractor๋ ํ์ํ ๊ธฐ์ ์ ๊ฐ์ง ์์ง๋์ด์ ์๊ฐ ์ ํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฒ์๋ฅผ ์ค์ด๋ ๊ฒ์ ๋๋ค.
Go ํ๋ก์ ํธ(JIT ์๊ตฌ ์ฌํญ ์์)์ ์ ์ฌํ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ง ์ฌ๋๋ค์ "์คํ์ " ๋ ์ด๋ธ๋ง ์์ผ๋ฉด CoreRT์ ๋งค์ฐ ๋ง์กฑํ ์ ์์ต๋๋ค. ์์ฆ ์ ์๋ํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค . ์ ์ฒด CoreCLR๊ณผ ๋์ผํ ๊ฐ๋น์ง ์์ง๊ธฐ, ์ฝ๋ ์์ฑ๊ธฐ, CoreFX ๋ฐ CoreLib์ ๋๋ถ๋ถ์ ์ฌ์ฉํ๊ณ ์์ฒด ํฌํจ๋ ์์ ์คํ ํ์ผ(ํ ์๋ฆฌ ๋ฉ๊ฐ๋ฐ์ดํธ)์ ์์ฑํฉ๋๋ค.
๊ทธ๊ฒ์ ์ค์ ๋ก ์์ง ์์ฐ ํํ๋ก ์กด์ฌํ์ง ์์ต๋๋ค(๋ด๊ฐ ์๋ ํ)!
์, ๋ด ์๊ฒฌ์ ์ฃผ๋ก MS ์ฌ๋๋ค์ ๋์์ผ๋ก ํ์ต๋๋ค . ๊ทธ๋ค์ ์ด ๋ชจ๋ ๋ณ๋ ฌ, ๊ด๋ จ, ์งํ ์ค์ธ ํ๋ก์ ํธ/์์ด๋์ด(corert, illinger)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด์ ํ๋ ๋ ์ถ๊ฐํฉ๋๋ค. ์ด ์์ฒด ์ถ์ถ ๊ธฐ๋ฅ์ ์ด๋ฏธ ๋ง์ ์ฌ๋๋ค์ด ์ง์ ํ๋ฏ์ด "์, ์ฐ๋ฆฌ๋ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ์์ " ๊ทธ๋ฐ ๊ฒ. ๊ทธ๋ฆฌ๊ณ ํ์ผ์ "์จ๊ฒจ์ง" ๋๋ ํ ๋ฆฌ๋ก ์ถ์ถํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋จ์ ๋ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ง์ ๋์ ๊ธฐ๋ฅ(IL ์์ฑ, ์์ ๋ฐ์ฌ)์ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๊ฒ์ ์ปค๋ฎค๋ํฐ ์ ์ฒด๊ฐ ๋ค์ ์๊ฐํด ๋ณผ ์ ์๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ๊ฒ ํ ์ ์์ผ๋ฉด ์ ์ฉํ์ง๋ง ๋จ์ผ ํ์ผ ๋ฐฐํฌ์ ๊ฐ์ ๋ค๋ฅธ ์๊ตฌ ์ฌํญ๊ณผ ์ถฉ๋ํฉ๋๋ค. ์ฌ์ ํ ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ฅผ ์ป์ ์ ์์ง๋ง ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ฆ, ๋ค์ ํฐ ํ์ผ์ ๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์ผ๋ก ๊ด์ฐฎ๋ค๋ฉด ๊ทธ๊ฒ์ ์๋ฒฝํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๊ฒฝํ์ ํ์ผ์ด ์ปค์ง์๋ก "๋จ์ผ ํ์ผ" ์ธก๋ฉด์ด ๋ ์ ์ฉํด์ง๋๋ค.
@MichalStrehovsky ํ์คํ ๋ค๋ฅธ ์ต์ ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์คํ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ(.NET Core๋ก ์ด๋ํ ๋๊ฐ ๋์๋ค๊ณ ํ์ ํ๋ ๊ฒ์ ์ถฉ๋ถํ ์ด๋ ต์ต๋๋ค) ์์ ํด๋๋ก ์ถ์ถํ๋ ๊ฒ์ด ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ์๋ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ต์ ์ ๊ฒฝ์ฐ๋ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๊ณ ๊ณ์ ์งํํ๋ ๊ฒ์ ๋๋ค.
๋น๋ก ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋๋ก ์งํ๋๋ค๋ฉด ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋๋ค :)
@mikedn ๋์ํฉ๋๋ค. ๋ค์ค ๋ณ๋ ฌ ์๋ฃจ์ ์ ํจ์ฌ ๋ ํผ๋์ค๋ฝ์ต๋๋ค. ์ฐ๋ฆฌ์ ์ด์์ ์ธ ์๋ฃจ์ ์ ์ผ์ข ์ ์ํผ ILLinker/weaver ์ ๊ทผ ๋ฐฉ์์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์คํํ๊ณ ์ฐ๋ฆฌ๊ฐ ์ด๋๋ก ๊ฐ๋์ง ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ด ์ถ์๋ ๊ฒ์ ๋ํด ์ ๋ง ํฅ๋ถ๋์ง๋ง @morganbr์ ๊ฒ์ํ ์ด๊ธฐ ์ ์์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํฅ๋ถ๋์ง ์์ต๋๋ค. ๊ทํ๊ฐ ์ ๊ธฐํ ์ง๋ฌธ ๋ชฉ๋ก์ ๋ํ ์ ๋ต๋ณ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ฒ์ํ ๊ฒ๊ณผ ์ ์ฌํ์ง๋ง(๊ทธ๋์ ๊ณตํต์ ์ผ๋ก ์ํ๋ ๊ธฐ๋ฅ ์ธํธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค), IMHO๊ฐ ์ ์ํ '๋์คํฌ์ ์์ถ ํ๊ธฐ' ์๋ฃจ์ ์ ์ ๊ฐ ๋ณด๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฒ์ด ์ ํ ์๋๋๋ค. ๊ตฌํ๋๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋งํ๋ฏ์ด '์ง๋ณ'๋ณด๋ค ๊ฑฐ์ ๋ ๋์ ๊ฒ์ ๋๋ค. @jkotas
@strich ๋ฐ @ayende์ ๋์ํฉ๋๋ค.
์ปดํ์ผ๋ ์คํ ํ์ผ์ ๋ค์์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
๋ชจ๋ ๊ด๋ จ ์ข
์์ฑ ํจํค์ง
์คํ ์ํฐํฉํธ ์์(๋์คํฌ ์ฐ๊ธฐ ์์)
๋์คํฌ ๋์ ๋ฉ๋ชจ๋ฆฌ์์ .dll์ ๋ก๋ํ๋ ๊ฒ์ ์ฝ์ง ์์ ์ ์์ง๋ง, ์ด๋ IMO๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ ์ ์๋ ์์ ์ ์๊ณผ ๋น๊ตํ์ฌ MSFT ์ ์์ค ๊ฐ๋ฐ์์ ๊น์ ์ ๋ฌธ ์ง์์ ๊ฐ์ง ๋งํ ๊ฐ์น๊ฐ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ธ๋ถ ๋๊ตฌ(์ด๋ฏธ ๊ฐ์ง๊ณ ์์, https://github.com/dgiagio/warp ์ฐธ์กฐ). ์ด๊ฒ์ด ๋ฌ์ฑ๋๋ฉด ์ฒซ ๋ฒ์งธ ์คํ๊ณผ ํ์ ์คํ ์ฌ์ด์ ์๊ฐ ์ฐจ์ด๊ฐ ์ผ๋ง๋ ๋๋์ง ๊ถ๊ธํฉ๋๋ค. ์๊ฐ/์๋ฅผ ๋ค์ด Linux 3.17+์๋ dlopen์์ ์ฌ์ฉํ ์ ์๋ memfd_create๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค๋ฅธ ์ฃผ์ ๋ก ํ๋ฌ๊ทธ์ธ ์ง์ ์๊ตฌ ์ฌํญ์ด ๋์์ธ ์ ์์ ๊ณผ๋ํ๊ฒ ์ธ๋ฑ์ฑํ๋์ง ๊ถ๊ธํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ตํธ์ธํ์ฌ ์ด ๊ธฐ๋ฅ์ด ํ์ํ ์ฌ๋๋ง ์ ์ฌ์ ์ธ ๋ถ์ด์ต(ํธ๋ฆฌ ์์ดํน ๋ถ์กฑ ๋ฑ)์ ์ผ์ผํค๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋(๋๋ค์?)์ ๋ฐฐํฌ ๊ฐ๋ฅํ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ ์ด์ (?)
@swaroop-sridhar @MichalStrehovsky ๋ก ํ ๊ฑธ์ ๋ฌผ๋ฌ๋๋ฉด, ํ๋์ ์๋ฃจ์ ์ผ๋ก ๋ชจ๋ ์ฌ๋์ ์์ฉํ๊ธฐ ์ด๋ ค์ธ ๋งํผ ์ถฉ๋ถํ ๋ค๋ฅธ ๋ชฉํ/์๊ตฌ๋ฅผ ๊ฐ์ง ์ ์๋ ๋ ๊ฐ์ง ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ด ๋ธ๋ ์ธ ๋คํ๊ฐ ์๋ฏธ๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ฐ๋ณด๊ฐ ๋๋ ค๋ ๊ฒ์ด ์๋๋ผ ์ด ์ฃผ์ ์ ๋งค์ฐ ๊ด์ฌ์ด ์๊ธฐ ๋๋ฌธ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ญ์์ค. ๋ชจ๋ ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์ปค๋ฎค๋ํฐ์ ์๊ฒฌ์ ์์ฒญํฉ๋๋ค! :)
ํ๋ฌ๊ทธ์ธ ์ ๋ณด.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๊ฐ ์ํ๋ ์ ์ผํ ๊ฒ์ Assembly.LoadFrom
๋๋ LoadLibrary
ํธ์ถ์์ ์ฐจ๋จ๋๋ _not_ ๊ฒ์
๋๋ค.
๋ค๋ฅธ ๊ฑด ํ์ ์๊ณ ๋๋จธ์ง๋ ํผ์ ํ ์ ์์ด์.
@ayende "LoadFrom ๋ฑ์์ ์ฐจ๋จ๋จ"์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ข ๋ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
์๋ฅผ ๋ค์ด, ์ด์ ๋ํ ์ ์ ์ค ์ผ๋ถ๋ CoreRT๋ฅผ ํฌํจํ๋๋ฐ, ์ด๋ ์ฐ๋ฆฌ๊ฐ (์๋ง๋) ๊ด๋ฆฌ๋๋ dll์ ๋ก๋ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ด๋ฆฌ๋๋ dll์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๊ณ ์ด์
๋ธ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ค์ดํฐ๋ธ dll์์ LoadLibrary
๋ฅผ ํธ์ถํ ์ ์๋ ํ ํ๋ฌ๊ทธ์ธ ๋ฉ์ปค๋์ฆ์ผ๋ก ๊ด์ฐฎ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์๋๋ฆฌ์ค๋ _๊ณ ๋ คํด์ผ ํ๋ ๊ฒ์ด ์๋๋ผ _์ฐจ๋จ_๋์ด์๋ ์๋๋ ๊ฒ์ ๋๋ค.
๋๋ ์ฝ๋๋ฅผ ํํค์น๋ ๋ฐ ์๊ฐ์ ๋ณด๋๊ณ , ์ธ๋ป ๋ณด๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ด _๊ฐ๋ฅ_ํด์ผ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค(Windows์ ๋ํด์๋ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ธฐ๋ง ํ๋ฉด ๋จ).
MemoryModule
(https://github.com/fancycode/MemoryModule)์ ๊ฐ์ ๊ฒ์ ํธ์ถํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํฉ๋๋ค.๋๋ ์ด๊ฒ์ด ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง _์์_ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, ICLRRuntimeHost2::ExecuteAssembly
๋ ๋ฒํผ๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ ๋์คํฌ์ ์๋ ํ์ผ๋ง ์ ๊ณตํฉ๋๋ค.
๊ทธ๊ฒ์ (๋ด๊ฐ ํ์ ํ๋ ๋ง์ ๊ฒ ์ค) ์ค์ ๋ก ์๋ํ๊ฒ ๋ง๋๋ ์ฒซ ๋ฒ์งธ ์ผ ์คํ ํผ๊ฐ ๋ฉ๋๋ค.
๊ด๋ จ ํญ๋ชฉ์ ์คํจํ ์ ์๋ ํ์ผ๋ก ์ฐธ์กฐํ ์ ์๋ ์ฝ๋๊ฐ ๋ง์ด ์๋ค๊ณ ํ์ ํฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ด ์ ๊ฐ ๋จ์ผ ํ์ผ ์คํ์ ์ํ๊ณ ์ ๊ทธ๋ฐ ์ข ๋ฅ์ ์๋ฃจ์ ์ ์ธ๋ถ์์๊ฐ ์๋๋ผ CoreCLR์์ ์ํํด์ผ ํฉ๋๋ค(zip ์์ ์์์ ๊ฐ์ด).
MemoryModule๊ณผ ๊ฐ์ ๊ฒ์ ํธ์ถํ์ญ์์ค.
MemoryModule์ ์ฌ์ฉํ์ฌ ๋ก๋๋ ๋ฐ์ด๋๋ฆฌ๋ ์ง๋จํ ์ ์์ผ๋ฉฐ(์: ์ผ๋ฐ ๋๋ฒ๊ฑฐ, ํ๋กํ์ผ๋ฌ ๋ฑ์ด ์๋ํ์ง ์์) MemoryModule์ ๋ด์ฅ๋ ๋ชจ๋ OS ๋ณด์ ์กฐ์น(์: ๋ฐ์ด๋ฌ์ค ๋ฐฑ์ ๋ฑ)๋ฅผ ๊ฑด๋๋๋๋ค. ์ง์๋๋ ์๋ฃจ์ ์ผ๋ก ์ ๊ณตํ ์ ์๋ ํญ๋ชฉ์ด ์๋๋๋ค.
๋๋ ์ด๊ฒ์ด ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ด๋ค.
ํ์ฅ๋์ง ์์ ๋จ์ผ ํ์ผ ๋ฒ๋ค์์ ์คํ์ ์ง์ํ๋ ค๋ฉด ์๋ก์ด API(๊ด๋ฆฌํ ๋ฐ ๋น๊ด๋ฆฌํ ๋ชจ๋)๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ์กด ํ๋ก๊ทธ๋จ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "๊ทธ๋ฅ ์๋"ํ์ง ์์ต๋๋ค.
์ํฐ ๋งฌ์จ์ด ๊ฒ์ฌ ์ธํฐํ์ด์ค๊ฐ
์ต๊ทผ์ฒ๋ผ MemoryModule์์ Windows ์์ง๋์ด๊ฐ ๊ตฌํํ์ต๋๋ค.
mem์์ ๋ก๋๋ ์ด์
๋ธ๋ฆฌ๋ฅผ ํฌํจํ ๋ชจ๋ .net ์ด์
๋ธ๋ฆฌ?
https://twitter.com/WDSecurity/status/1047380732031762432?s=19
ํธ์ง: ํ MemoryModule์ ๊ธฐ๋ณธ ๋ชจ๋์ ๋ก๋ํ๊ธฐ ์ํด OS์ ๋ด์ฅ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ์ง๋ง ๋ถ๋ช ํ ๊ทธ๋ ์ง ์์ต๋๋ค. ์์ ์ ์์ ๋ฌด์ํ๊ธฐ์ ์ถฉ๋ถํ ์ด์ ์ผ ๊ฒ์ ๋๋ค.
2018๋ 12์ 5์ผ ์์์ผ 01:46 Jan Kotas [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
MemoryModule๊ณผ ๊ฐ์ ๊ฒ์ ํธ์ถํ์ญ์์ค.
MemoryModule์ ์ฌ์ฉํ์ฌ ๋ก๋๋ ๋ฐ์ด๋๋ฆฌ๋ ์ง๋จํ ์ ์์ต๋๋ค(์:
์ผ๋ฐ ๋๋ฒ๊ฑฐ, ํ๋กํ์ผ๋ฌ ๋ฑ)์์ ์๋ํ๊ณ MemoryModule
๊ตฌ์ถ๋ ๋ชจ๋ OS ๋ณด์ ์กฐ์น(์: ๋ฐ์ด๋ฌ์ค ๋ฐฑ์ ๋ฑ)๋ฅผ ๊ฑด๋๋๋๋ค. ๊ทธ๋ ์ง ์๋ค
์ง์๋๋ ์๋ฃจ์ ์ผ๋ก ์ ๊ณตํ ์ ์๋ ๊ฒ์ ๋๋ค.๋๋ ์ด๊ฒ์ด ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ด๋ค.
๋ง์ต๋๋ค. ์๋ก์ด API(๊ด๋ฆฌํ ๋ฐ ๋น๊ด๋ฆฌํ ๋ชจ๋)๊ฐ ํ์ํฉ๋๋ค.
ํ์ฅ๋์ง ์์ ๋จ์ผ ํ์ผ ๋ฒ๋ค์์ ์คํ์ ์ง์ํฉ๋๋ค. ๊ธฐ์กด
ํ๋ก๊ทธ๋จ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ "๊ทธ๋ฅ ์๋"ํ์ง ์์ต๋๋ค.โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotnet/coreclr/issues/20287#issuecomment-444314969 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AEBfudvVHxpbeKa-L_vTQjbnNZZsn6Meks5u1xdlgaJpZM4XK-X_
.
๋ชจ๋ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ฅผ ์ง์ํ๊ธฐ ์ํ ์
๋ฐ์ดํธ๋ ๊ณํ์ ๊ณง ๊ฒ์ํ ์์ ์
๋๋ค.
@NinoFloris ์ฐธ์กฐ dotnet/coreclr#21370
์ด ํ ๋ก ์ ๋ฆ์๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฏ๋ก ๋์์ด ๋์ง ์์ผ๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
@mikedn ์ด ๋งํ ๊ฒ์ ๋ฐ๋ณตํ๊ธฐ ์ํด, ์ด๋ฌํ ๋ชจ๋ ๋ณ๋ ฌ ์๋ฃจ์ ์ ๊ฐ๋ ๊ฒ์ ํผ๋์ค๋ฌ์ธ ์ ์์ผ๋ฉฐ, ๋ฏธ๋์ MS์ ์ด์ ์ด ์ด๋์ ์์ ๊ฒ์ธ์ง์ ๋ํ ์ง๋ฌธ์ ๋์ง๋๋ค. CoreRT์์ ์ํ๋ ๋ฐ์ด๋ ์์ ์ ๊ณต์ ๋ก๋๋งต ์์ด ์ฌ์ ํ ์คํ์ ์ด๋ผ๋ ๋ ์ด๋ธ์ด ์ง์ ๋์ด ์๊ณ CoreCLR(CPAOT, ํ์ฌ ๋จ์ผ ํ์ผ ๊ฒ์)์์ ์ ์ฌํ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋น์ฆ๋์ค ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๋ค์๋ ๋ง์ ์๋ชป ์ ํํ๊ณ ์ถ์ง ์์ต๋๋ค(Silverlight...).
CoreRT์ ๋ฐ์ด๋ ๋ฐํ์์ ๊ณ ์ํ๊ณ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ๋น๋ํ๋ฉด์ ์ ์ฒด ํ๋ ์์ํฌ ๊ธฐ๋ฅ์ ์ํ๋ ์ฌ๋๋ค์ ์ํด CoreRT์ JIT ํตํฉ(๊ทธ๋ฆฌ๊ณ ์ค๋น๋ ๋๊น์ง ์ธํฐํ๋ฆฌํฐ ์์
ํ์ฅ) ์์
์ ์ง์คํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? JIT ๊ธฐ๋ฅ์ ์ํ๋ ๊ฒฝ์ฐ ๋ฉํ๋ฐ์ดํฐ์ JIT๋ฅผ CoreRT ๊ณ ์ ํ๊ฒ ์ปดํ์ผ๋ ์คํ ํ์ผ ๋ด๋ถ์ ์ ์งํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ์์๊น์?
์ด๊ฒ์ด ๋ชจ๋ ์ธ๊ณ์ ์ต๊ณ ๊ฐ ์๋๊ฒ ์ต๋๊น? ์. ๊ฐ์ฅ ์์ ์คํ ํ์ผ, ๊ฐ์ฅ ๋น ๋ฅธ ์์ ์๊ฐ, JIT๋ฅผ ๋ฐฐ์นํ๊ณ ์ ์ฒด ํ๋ ์์ํฌ ๊ธฐ๋ฅ์ ์ ์งํ๋ ค๋ ์ฌ๋๋ค์ ์ํด ๋ฉํ๋ฐ์ดํฐ ๋ฐ IL ์ฝ๋๋ฅผ ์ ์งํจ์ผ๋ก์จ CoreRT์ AOT ์ฝ๋ ์ ํ์ ํ์ฅํ ์ ์์ต๋๋ค.
IMO๋ ์ฅ๊ธฐ์ ์ธ ๋ชฉํ๋ฅผ ๋ฐฉํดํ ์ ์๋ ๋จ๊ธฐ ๊ธฐ๋ฅ ๋์ '์ต์์' ์๋ฃจ์
์ ์ด์ ์ ๋ง์ถฐ์ผ ํฉ๋๋ค.
๋ด๊ฐ ํ๋ ธ์ ์๋ ์์ง๋ง CoreCLR์ ์ผ๋ถ๋ก ๋จ์ผ ํ์ผ ๊ฒ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ ๊ฐ์ด CoreRT์์ ๋ฉ์ด์ง๊ฒ ๋๋ฏ๋ก ๋ง์ ๊ฒฝ์ฐ์ ์ ์ฌ์ ์ผ๋ก ๋ ๋์ ์๋ฃจ์ ์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์. ์ด๊ฒ์ด "์ด์ .NET ์ฝ๋๋ฅผ ๋จ์ผ ํ์ผ๋ก ๊ฒ์ํ ์ ์์ต๋๋ค"๋ผ๋ ์ํ๊ฐ ๋ถ์์ง๋ง ๊ฑฐ๋ํ ํ์ผ์ ๋ง๋ค๊ณ ์์ ์ฑ๋ฅ ๋ฑ์์ ์ด๋ ค์์ ๊ฒช์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฌ๋๋ค์ด ์ด "๋น๋ํด์ง .NET ๋ฐํ์"์ ๋ํด ๋ถํํ๊ธฐ ์์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. . .NET์ ์ค์ ๋ก CoreRT์์ ์ ํํ ์ด์ ๋ํ ํ๋ฅญํ ์๋ฃจ์ ์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์์ง๋ง, ๊ณต์ ์ง์/๊ณต์ ์ ํ ์ฝ์์ ๋ถ์กฑํฉ๋๋ค.
์๋ง๋ ๋ด ๊ด์ฌ์ฌ๋ ๋ณ๋ ฌ ์ ํ(๋ค์ @mikedn ์ธ์ฉ)์ ์ค์ด๊ณ ์ฌ๊ธฐ์ ์๋ ์ ํ(๋ก๋๋งต ๊ณต์ ํฌํจ)์ ๋ํ ๊น์ ์ฝ์, ํ์ฅ ๋ฐ ์ง์์ ๋ ์ค์ ์ ๋๊ณ ์ถ๋ค๋ ๊ฒ์ ๋๋ค.
๋ ๋ณ๋ ฌ ์ ํ
.NET Core๋ผ๋ ํ๋์ ์ ํ๋ง ์์ต๋๋ค. CoreRT๋ ๋ณ๋์ ์ ํ์ด ์๋๋ฉฐ ์์ผ๋ก๋ ์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํ๋์ ์ ํ์ ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ๋ค์์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ ์ต์ ์ ๋ช ๊ฐ์ง ์์ ๋๋ค. ์ํฌ์คํ ์ด์ GC ๋ฐ ์๋ฒ GC; ๋ ๋ฆฝํ ์ฑ ๊ฒ์ ๋ ํ๋ ์์ํฌ ์ข ์ ์ฑ ๊ฒ์.
@jkotas ์ดํดํ๊ณ ์ต์
์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ํ๋ฅญํ๋ค๋ ๋ฐ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. "์ ํ"์ด๋ผ๋ ๋จ์ด๋ฅผ "์ต์
/์๋ฃจ์
"์ผ๋ก ๋ฐ๊พธ๋ฉด .NET Core ์ ์ฒด ์ ํ ๋ด๋ถ์ ์ต์
/์๋ฃจ์
์ผ๋ก CoreRT์ ๋ํ ์ฐ๋ฆฌ ์ ํ์ ์ฝ์์ด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ๊ฒ์ธ์ง ์์ ํ ์์ง ๋ชปํ๋ค๋ ์ฐ๋ ค๊ฐ ์์ต๋๋ค. ์์ผ๋ก ๋ช ๋
๋์ ์์ ํ๊ฒ ์ง์๋ฐ์ ์ ์์ต๋๋ค. API๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์ธกํ ์ ์๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ง๋ค๊ณ API๋ฅผ ์ ๋ขฐํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ชจ๋ฅด๋ ์ํ์์ ๊ฐ์๊ธฐ ์ฌ์ฉ ์ค๋จ๋๋ค๋ฉด ์ด๋จ์ง ์์ํด ๋ณด์ธ์. MS๊ฐ ์๋ ์ํฐํฐ์๊ฒ๋ ์ ํ์ ์ผ๋ถ์ธ ๋๊ตฌ/์ต์
์ด ๋์ผํ๊ฒ ๋๊ปด์ง๋๋ค. CoreCLR๋ก๋ (์ ์ด๋ ํ์ฌ๋ก์๋) ํ ์ ์๋ CoreRT์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์์กดํ๊ณ ์์ต๋๋ค(๊ทธ ์ค ํ๋๋ PACE๋ก ์คํ ํ์ผ์ ๋ณดํธํ๊ณ ๋ง์ ๋ฉํ๋ฐ์ดํฐ, IL ๋ฑ์ ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ์
๋๋ค. ์ฌ์ด ์ ์ ๋งํฌ, ๊ธฐ๋ณธ ํ๋ซํผ์ ๋ํ ๋ ์ฌ์ด ์ดํด, ๋๋
ํ๋ฅผ ์ปดํ์ผ๋ฌ์ ์ง์ ๊ตฌ์ถํ ๊ฐ๋ฅ์ฑ ๋ฑ). ๊ธฐ๋ณธ์ ์ผ๋ก CoreRT์ ๋ํ ๊ทํ์ Michal ๋ฐ ๋ค๋ฅธ ์ฌ๋๋ค์ ์์
์ IMO๊ฐ ์ฒ์ ์ค๊ณ๋ ์ดํ๋ก .NET ์ํ๊ณ์์ ์ผ์ด๋ ์ต๊ณ ์ ์ผ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ๋์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ก์ด ๋๊ตฌ/์ต์
์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ์์ ๋๋ง๋ค ๋ด๋ถ์ ์ผ๋ก CoreRT ์ต์
์ด ์์ฑ๋๊ณ ํ์ฅ๋๋ ๋์ CoreRT์ ๊ฒฝ์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ผ๋ฉฐ ๋ฆฌ์์ค ํ ๋น์ด ์๋ชป๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค. ์ฃ์กํฉ๋๋ค. ํ ๋ก ์ ๋๋ ค๋ ์๋๋ ์๋์์ต๋๋ค. CoreRT ์์
์ด ์ผ๋ง๋ ๊ฐ์ฌํ์ง, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ ์ค ์ผ๋ถ๋ ์ด๊ฒ์ด ํ๋ซํผ์ ๋ฏธ๋๊ฐ ๋์ด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค.
๋๋ ์ด ํ ๋ก ์ ๋ ์ด์ ๋๋ฝํ์ง ์์ ๊ฒ์
๋๋ค. ํ์ ์ํด ์ต์ ์ ๋คํ๊ณ ๋น์ ์ด ๋ฌด์์ ์๊ฐํด ๋ด๋ ๊ธฐ๋ํ๋ฉฐ, ๋๋ ๊ทธ๊ฒ์ด ํ๋ฅญํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
@christianscheuer ์ด ๋ฌธ์ ๋ฐ ๊ธฐํ CoreRT ๊ด๋ จ ๋ฌธ์ ์ ๋ํ ๊ทํ์ ํผ๋๋ฐฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋น์ ์ ์ด ํ ๋ก ์ ์ ํ ๋๋ฝํ์ง ์์ต๋๋ค.
CoreRT์ ๊ฒฝ์ํ๋ ๊ฒ์ฒ๋ผ ๋ด๋ถ์ ์ผ๋ก ๋ณผ ์ ์๋ ์๋ก์ด ๋๊ตฌ/์ต์ ์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ์์ต๋๋ค.
ํต์ฌ ํ ์ฌ์ด์์ ์ฐ๋ฆฌ๋ ๋ค์ํ๊ณ ์ผ์ฌ ์ฐจ๊ฑฐ๋ ๋ ๋ฏธ์น ์ต์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋๋ "๋์คํฌ์ ์์ถ ํ๊ธฐ"๋ฅผ CoreRT ์ ์ฒด AOT์ ์ค์ํ ๊ฒฝ์์๋ก ์๊ฐํ์ง ์์ต๋๋ค. ๊ฐ๊ฐ์ .NET ์ฌ์ฉ์/์ฑ์ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
๋ค์ํ ์ฑ๋(github ๋ฌธ์ ๋๋ ๊ณ ๊ฐ๊ณผ์ ๋๋ฉด ๋ํ ํฌํจ)์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ์ฐ๋ฆฌ ์ ํ ๊ด๋ฆฌ ํ์ ์ฌ๊ธฐ์ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ์๋ฃจ์ ์ด ๊ฐ์ฅ ํฐ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค๊ณ ์ ์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๊ถ๋ฆฌ์ ๋ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์์ ์ฌ์ ํ ๊ฒ์ฆํ๊ณ ์์ต๋๋ค.
์ด ์์ ์์ CoreRT ๊ธฐ์ ์ด ์ง์๋๋ .NET Core ์ ํ์ ์ผ๋ถ๋ก ์ ๊ณต๋ ๋๋ฅผ ์ฝ์ํ ์ ์์ต๋๋ค. ๊ณ ์ ํ ์ฅ์ ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ๊ถ๊ทน์ ์ผ๋ก ํํ์ ๋ฐ๋ ์ค์ํ .NET ์ฌ์ฉ์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ํด ์ด์ ๊ฐ์ ์ง์ ์๋ฃจ์ ์ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
ํฌํจ๋ ๋ฆฌ์์ค๋ก ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ถ์ถํ์ฌ ์์ ํด๋์ ๋ณต์ฌํ๋ ๊ฒ์ Microsoft์ ํ์ ์๋ฃจ์ ์ด ์๋๋๋ค. ์ด๋ฅผ ํ์๋ก ํ๋ ๋ชจ๋ ๊ณ ๊ฐ์ด ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
"์ง์ ํ" ๋จ์ผ ํ์ผ ์๋ฃจ์ ์ด ํ์ํ๋ฉฐ ๋ง์ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค.
@jkotas ๊ทํ์ ์๊ฒฌ์ ์ ์๊ฒ ์ฌ์ค์ ๋๋ค. ํ์ฌ์ .NET ๊ฐ๋ฐ์(LOB/๋ฐฑ์คํผ์ค/ํตํฉ)๊ฐ CoreRT๋ก ์ ํํ๋๋ก ์ค๋ํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ ๊ทธ๋ค์๊ฒ ๋๋ฌด ๋ง์ ๋์ฝ์ด ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค(ํนํ ์คํ์ ๋ ์ด๋ธ์ด ์ฃผ์ด์ง). ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ค์์์ ๊ฐ์น๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด ์ค๋ ๋์ ๊ฐ์ Core์ ๋ํ ๋น๊ต์ ๊ฐ๋จํ (์ฌ์ฉํ๊ธฐ) ์๋ฃจ์ ์ด ๋ ผ์ ์ค์ ๋๋ค. ๊ฐ์ฌ ํด์
@popcatalin81 ์ ๋ ์ค์ ๋ก ์ฌ๊ธฐ์์ ๊ทํ์ ์์ ์ ํฌ๊ฒ ๋์ํ์ง ์์ต๋๋ค.
์์ ์๊ฐ์ ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ฅ๊ธฐ ์คํ ์๋น์ค์ ์์ ์๊ฐ์ 50% - 100% ๋๋ฆฌ๋ ๋์ ๋ฐฐํฌ์ ์ด์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
์๋น์ค ์์ ์๊ฐ์ 30์ด๋ฅผ ์ถ๊ฐํ๋๋ผ๋ ์ฅ๊ธฐ์ ์ผ๋ก ์๋น์ค์๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ฌ์ฉ์ ๋๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ํฌ๋ฌ๊ฐ ๋ ์ ์์ง๋ง 3.0์ด ๋์ฌ ๋๊น์ง ๊ฑฐ์ ๋ชจ๋ CoreCLR ์ฑ์ ์ฝ์ ๋๋ ์๋น์ค์
๋๋ค.
CoreCLR์ ์ด๋ฏธ ํ๋ ์์ํฌ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋ฒ๋ค๋ก ๋ฌถ์ ์ ์๋ ๋ชจ๋๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค(์์ฒด ํฌํจ ๋ฐฐํฌ).
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ(RavenDB), ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๋ชฉ์ ์ผ๋ก ๊ทธ๊ฒ์ _์ ๋ขฐ_ํฉ๋๋ค. ์ฒซ์งธ, ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์๊ด์์ด ์์ฒด ํ๋ ์์ํฌ๋ฅผ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ _์ค์ํ_ ์ด์ ์
๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ ์ญ์ ์ผ๋ก ์ค์น๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๊ณ ๋ฐ๋ผ์ ๊ด๋ฆฌ์๊ฐ ํ๋ ์์ํฌ๋ก ๊ฒฐ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด .NET 4.0์ ๋๋๋ก, ์ฌ์ง์ด 4.5๊ฐ ๋์จ ์ง ๋ช ๋
์ด ์ง๋ ํ์๋ ๊ณ ํต์ค๋ฌ์ ์ต๋๋ค.
๋ ๋ค๋ฅธ ์ค์ํ ์ธก๋ฉด์ ํ๋ ์์ํฌ์ _์์ ์_ ํฌํฌ๋ก ์คํํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ณ๊ฒฝํด์ผ ํ๋ ์ผ์ ์ง๋ฉดํ์ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๊ทธ ์ผํ์ผ๋ก ์ฐ๋ฆฌ๋ ํจ์น ์ฃผ๊ธฐ์ ๋ํ ์์ ๊ถ์ ๊ฐ์ง๋ฉฐ ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ฅผ ๋ฐฉํดํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
๋๋ VFS๋ฅผ _์๊ฐํ์ง_ ์์ง๋ง ์ด๊ฒ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐฉ์์ผ๋ก ๋ฌถ์ธ ์ด์ ๋ธ๋ฆฌ/๋ค์ดํฐ๋ธ dll/๋ฆฌ์์ค์ ๋๋ฌํ๊ธฐ ์ํด ์ ์ฉ API/์ ํ๋ฅผ ํต๊ณผํด์ผ ํ๋ ๊ฒ์ ์๋ฒฝํฉ๋๋ค.
์ดํ ๋์ @briacht ๊ฐ ์ด ๋ฌธ์ ์ ๋ํด ์ง์ ํ๊ธฐ ๋๋ฌธ์ ํ ๋ก ์์ ์ ๋ง ๋ฆ์์ต๋๋ค.
๋ด 2์ผํธ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค!
๋จผ์ @morganbr ์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ๋๋ค.
๋ด๊ฐ ๋งํ๋ ์ ํ๋ฆฌ์ผ์ด์ Greenshot, ํ์ฌ ๋ฆด๋ฆฌ์ค๋ ๋ฒ์ ์ ์ฌ์ ํ โโ.NET Framework 2.0์ ๋์์ผ๋ก ํ๊ณ ์์ง๋ง(์ ๋ง ๊ทธ๋ ์ต๋๋ค) ์ต์ ๋ฒ์ ์์๋ ๋ฌธ์ ์์ด ์๋ํฉ๋๋ค(์ข์ ํ์ ํธํ์ฑ)! Zhe ๋ค์ด๋ก๋๋ ์ค์น ํ๋ก๊ทธ๋จ์ ํฌํจํ์ง๋ง .NET Framework๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ 1.7MB์ ๋๋ค. ์ด๊ฒ์ด ์์๋๋ ๋๋ ํ ๋ฆฌ์๋ 1๊ฐ์ .exe์ 4๊ฐ์ .dll์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ํ์ ๋๋ ํ ๋ฆฌ์๋ 11๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ด์ ๋๊ธ์ ์ฝ๊ณ ์์๋๋ฐ ๋ง์ ๋๊ธ์ด ๋ด๊ฐ ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ด๊ฒ์ ํ์ฌ ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ์๋ฃจ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ ์ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ ๋ 8์์ Microsoft์ ์ผ๋ถ ์ฌ๋๋ค๊ณผ ํ์ฌ ์ฃผ์ ์ ๋ํด ๋ ผ์ํ๊ณ ์์์ต๋๋ค. ์ ์ ์ฃผ์ ์ด์ ์ ๋ฐฐํฌ๋ฅผ ์ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ์ ๋ณต์ก์ฑ์ ์ค์ด๊ณ ์์ํ๋ ๋์ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ด์ ๋ธ๋ฆฌ ๋ก๋ฉ์ ์ค์ด๊ธฐ ์ํด ๋ชจ๋ ๊ฒ์ ํจ๊ป ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ด ์์ฉ ํ๋ก๊ทธ๋จ์.
.NET Framework 4.7.1 ๋ฐ dotnet core 3.0์ ๋๋ํ ๋์์ผ๋ก ํ๋ Greenshot์ ๋ค์ ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด dotnet core 3.0์ ๋ํ ๊ฒฐ๊ณผ ๋ค์ด๋ก๋์๋ ํ์ฌ ์ฝ 103๊ฐ์ dll(!!!), 1๊ฐ์ exe ๋ฐ 15๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. . ์ ์ฒด ํฌ๊ธฐ๋ ์ฝ 37MB์ด๊ณ ๊ฐ์ฅ ํฐ ํ์ผ์ MahApps.Metro.IconPacks.dll(12MB!!)๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์์ด์ฝ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ์ด๋ ์๋ง๋ ํ์ผ์ ์ฝ 4%์ผ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ๋ง์ dll๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋ ์ฌ์ฉ๋์ 50%๊ฐ ๋ง๋ค๊ณ ๊ฐ์ ํฉ๋๋ค!
์ฌ์ฉ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ณ ์ถ์ง ์๋ค๋ฉด .zip์ ๋ค์ด๋ก๋ํ๊ณ ์ฝ 118๊ฐ ํ์ผ ์ฌ์ด์์ ์คํ ํ์ผ์ ์ฐพ์ผ๋ฉด ๋ฉ๋๋ค. ์ ๋ง ์ข์ ๊ฒฝํ์ด ์๋๋๋ค! ํฌ๊ธฐ๋ ์ฝ 35MB(17x) ๋ ํฐ๋ฐ ์ฌ์ฉ์์๊ฒ ์ด๋ค ์ด์ ์ด ์์ต๋๊น?
dotnet core 3.0์ด ๋ฑ์ฅํ๊ธฐ ๋ช ๋ฌ ์ ์ ์ ๋ Fody.Costura๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๊ธฐ์ ์ค๋ช ๋ ์์ ์ ๊ฑฐ์ ์ํํ๊ณ ์์์ต๋๋ค. ๋น๋ ์ ํจํน ๋ฐ ์์ ์ ์ธํจํน! ๊ทธ๋ฌ๋ ํดํน์ผ๋ก ํ์ผ์ ์ถ์ถํ์ง ์๊ณ ๋จ์ผ ์คํ ํ์ผ์ ๋ง๋ค ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ํ ๊ฝค ๋ง์ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผฐ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ด๊ฐ ์ ํธํ๋ ์๋ฃจ์ ์ด ์๋๋๋ค.
๋๋ ๋ด๊ฐ ๋งํ ์ ์๋ ๋ค์๊ฐ ํ์ค์ ์ธ ์๋ฃจ์
์ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค: ๊ทธ๊ฒ์ ๋จ์ง ์๋ํฉ๋๋ค โข
ํ์ค ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ผ๋ฏ๋ก ์คํ ํ์ผ, ์ถ๊ฐ ์ ๋ณด, ๋ผ์ด์ ์ค ํ์ผ ๋ฑ์ ๋ฃจํธ์ ๋ฐฐ์นํ๊ณ ๋ค๋ฅธ ํ์ผ(dotnet ์ฝ์ด, ์ข
์์ฑ ๋ฑ)์ ๋ํด ๋ค๋ฅธ "์๋ ค์ง" ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋๊ตฌ ์์
์ด ๋ ์ฌ์์ง๊ณ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒ๊ณผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๊ฒฐ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋๋ก๋ ๋๋ ํ ๋ฆฌ์์ zip์ ์คํํด๋ ์ผ๋ถ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
Fody.Costury์ ์ ์ฌํ ์๋ฃจ์ ์ ๊ฐ๊ฒ ๋๋ฉด ์ธ์ ๊ฐ๋ Greenshot ๋ฐฐํฌ๋ฅผ ๋จ์ํํ๊ธฐ ์ํด ์ด๋ฏธ์ง์ ์ฌ์ฉํ ์ ์์ง๋ง ํฌ๊ธฐ์ ๋ก๋ฉ ์๊ฐ์ด ์ง์ ์ ์ผ๋ก ์ค์ด๋ค์ง๋ ์์ต๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์๋ ์๊ฐ์ ๋ณด๋ผ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
@ayend ๋๋ ๋์ํ์ง ์์ ์ ์๊ฒ ํด์ฃผ์ธ์ :)
๊ทธ๊ฒ์ด ์ง์ ํ ์๋น์ค์ด์ง๋ง ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ ๊ธฐ๋ฐ ์ฅ๊ธฐ ์คํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผํ์ฑ ์์ ๋น์ฉ์ ์ํฅ์ ๋ฐ์ง ์์ง๋ง ๋์์ ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ผ ํ์ผ ๋ฐฐํฌ ๋ชจ๋ธ์ ์ด์ ์ ๊ฐ์ฅ ๋ง์ด ๋ณผ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋๋๋ค. ( ๊น๋ง๊ท๋ ํ์ค์ด ์๋ ์์ธ์ ๋๋ค ;) )
๋ด๊ฐ ๋ณด๊ธฐ์ ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ ์ฃผ๋ก ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ์ ํธ๋ฆฌํฐ๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ์ด๋ฌํ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋, ๋ณต์ฌ, ์คํํ ์ฌ์ฉ์. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊น์ด ์ฅ๋์ .Net Core 3.0์ด UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ง์์ ์ ๊ณตํ ๋ ์ด ๋ฐฐํฌ ๋ชจ๋ธ์ ๋งค์ฐ ๋ณดํธํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์กฐํด์ผ ํ ๊ฒ์ ์ด ๋ชจ๋ธ์ ์ด๋ค ์ฑ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ์ฃผ์ ์ฑ์ ์ฌ์ ํ โโ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํฉ๋๋ค.
์ด์ ๋ฌธ์ ๋ ์์ ํด๋์ ๋ณต์ฌ๋ ์ด ์๋ฒ ๋๋ ์ด์ ๋ธ๋ฆฌ ๋ชจ๋ธ์ด ์ธ๊ธฐ๋ฅผ ์ป์ผ๋ฉด ์ ์๋ํ ๊น์?์ ๋๋ค.
์ ์๊ฐ์๋ ํ์ฌ ๋ชจ๋ธ์ ๋ํ ๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋๋ ์ด ๋ชจ๋ธ์ด ๋ชจ๋ ์ข ๋ฅ์ ์ฑ์ ์ฐจ์ ์ฑ ์ด๋ผ๊ณ ๋งํ๋ ค๋ ๊ฒ์ด ์๋๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ๊ณ ๊ณผ๊ฑฐ์ full.Net Framework์ ์ง์ ์ฌ์ฉํ์ผ๋ฉฐ ํน์ ์ฑ์ ์ ํฉํฉ๋๋ค.
์ต์ ์ ๊ตฌํ์ ๋ง์ปค๊ฐ ๋ชจ๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋จ์ผ ํ์ผ๋ก ๋ณํฉํ๋ ๋ฒ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@popcatalin81 ๊ด์ ์ด ํ๋์ธ ์ธ์์ ๊ฐ๋ํ ์ธ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ๋ฐฐํฌ ๋ชจ๋ธ์ด ์ ์ผํ ๋ชจ๋ธ์ด๋ผ๊ณ ์๊ฐํ ๋งํผ ์ค๋งํ์ง ์์ต๋๋ค.
๋ด๊ฐ ์ผ๋์ ๋ ๊ฒฝ์ฐ๋ ๋ค์ด๋ก๋ ๋ฐ ๋ ๋ฒ ํด๋ฆญ ์๋๋ฆฌ์ค์
๋๋ค.
์ง๊ธ ๋น์ฅ ์คํํ๋ ค๋ฉด ์
ธ ์คํฌ๋ฆฝํธ์ ์์ถ์ ํ๊ณ ํด๋ฆญํด์ผ ํฉ๋๋ค. 100๊ฐ์ ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ์ฌ๋ฐ๋ฅธ ํ์ผ์ ์ฐพ๋ ๊ฒ์ด ๊ท์ฐฎ์ ์ผ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
์์ ํ์ผ์ ๊ตฌ์ฑ ์ ๋ณด. ๋๋ ๊ทธ๊ฒ์ ๋ํด ๋งค์ฐ ๋ฐ๋ํ ๊ฒ์ด๋ค. ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ๋ค๋ฅธ ํญ๋ชฉ์
๋๋ค._๋ฐ๋์_ ์ฌ์ฉ ์ค์ธ ์ค์ ํ์ผ ์์ ์์ด์ผ ํ๋ฉฐ, ์ด๋๊ฐ์ ์จ๊ฒจ์ ธ ์์ง ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ํ์ํ ๋ IsolatedStorage
ํ์ผ์ด ์ผ๋ง๋ ๋์์ง ์ด๋ฏธ ๋ณด์์ต๋๋ค.
์ด์ ๋ฒ์ ์ RavenDB์์๋ ๋๋ ํ ๋ฆฌ ๋ ์ด์์์ ๋ ๋จ์ํ๊ฒ ๋ง๋ค๊ณ ํ์๋๋ ํ์ผ ์๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ง์ ํญ๋ชฉ์ ๋ณํฉํ์ผ๋ฉฐ, ์ด๋ ์ํํธ์จ์ด ์ฌ์ฉ์ ์ฌ๊ฐํ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ILMerge๋ฅผ ์ฌ์ฉํฉ๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด ๊ทธ ์ด์ ๋ ๋ฌด์์ ๋๊น? ํจ์ ์ด ์๋ค๋ฉด ์ค์ค๋ก ๊ต์กํ๊ณ ์ถ์ต๋๋ค.
๋๋ ์ ์๋ "ํฉ ๋ฐ ์ถ์ถ" ์ ๊ทผ ๋ฐฉ์, ํนํ if๊ฐ ๋์คํฌ์์ ํ์ผ์ ์ถ์ถํ๋ ๋ถ๋ถ์ ์ข์ํ์ง ์์ต๋๋ค. ๊ฐ๋จํ์ง๋ง ๋ฌธ์ ๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. ๋์คํฌ๋ก ์ถ์ถํ์ง ์๊ณ "๋ฉ๋ชจ๋ฆฌ"์์ ๋ชจ๋ ์๋ํด์ผ ํฉ๋๋ค.
corert ๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๋ Costura.Fody ์ ๊ฐ์ ๊ฒ์ด์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ํ์ ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ค๊ณ ์๋ํด์ผ ํฉ๋๋ค(์ฌ์ฉํ์ง ์๋ ์ฐธ์กฐ, ์ฃฝ์ IL ์ ๊ฑฐ).
๋ต์ฅ
dotnet core 3.0์ด ๋ฑ์ฅํ๊ธฐ ๋ช ๋ฌ ์ ์ ์ ๋ Fody.Costura๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๊ธฐ์ ์ค๋ช ๋ ์์ ์ ๊ฑฐ์ ์ํํ๊ณ ์์์ต๋๋ค. ๋น๋ ์ ํจํน ๋ฐ ์์ ์ ์ธํจํน!
Costura๋ ๊ธฐ๋ณธ์ ์ผ๋ก "๋์คํฌ์ ์์ถ์ ํ์ง" ์์ต๋๋ค. ๋ฆฌ์์ค์์ ์๋ฒ ๋๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ (๋ฉ๋ชจ๋ฆฌ์์) ์ถ์ถํ๊ณ ๋ฐ์ดํธ๋ฅผ ํตํด ๋ก๋ํฉ๋๋ค.
@SimonCropp ์ปจํ ์คํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋์คํฌ์ ์์ถ์ ํ๊ณ ์คํธ๋ฆผ์์ ๋ก๋ํ๋ ๋ ๊ฐ์ง ์ต์ ์ ๋ชจ๋ ํ์ํ๊ณ ์์ต๋๋ค. ์์ํ IL์ ๋ํ ์คํธ๋ฆผ์ ๋ก๋ฉ์ ์ปค๋ฒํ๋ ๊ฒ์ ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต์์ ๊ฐ๋ฅํ ์ ์์ต๋๋ค.
@jeffschwMSFT btw ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋งค๋๋ฝ๊ฒ ๋ณํฉํ๋ ๊ธฐ๋ฅ ์ธํธ(๋ฐ ์ ํ์ ํธ๋ฆฌ ํ๋ค๊ธฐ)๋ ์ผ๋ฅ ์๋ฏผ์ผ๋ก์ ๋ณด๊ณ ์ถ์ ๊ฒ์ ๋๋ค. costura๋ ์ ๊ฐ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํ๋ก์ ํธ ์ค ํ๋์ง๋ง ์ง์ํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ํ๋ก์ ํธ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ฐ๋ผ์ MS๊ฐ ๋์(๋ฒ ํ ๋ฒ์ ํฌํจ)์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์๋ฉด ๊ฒํ ํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ๊ณ Costura Readme ๋ฐ Nuget ์ค๋ช ์ "MS ๋์์ด ์์ต๋๋ค"๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
๊ฐ๋ฅ์ฑ์ ์์ง๋ง diff ๋ผ์ด์ ์ค์ ๋ฐ๋ผ Costura์ ์ฝ๋๋ฅผ ๋ฆด๋ฆฌ์คํด์ผ ํ๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์.
mono/illinker๋ฅผ .NET Core ๋๊ตฌ ์ฒด์ธ์ ํตํฉํ๊ธฐ ์์ํ ๋ @SimonCropp ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ฒํ ์ ์์ ์๋ฝํ๊ฒ ์ต๋๋ค.
Costura๋ ๊ธฐ๋ณธ์ ์ผ๋ก "๋์คํฌ์ ์์ถ์ ํ์ง" ์์ต๋๋ค. ๋ฆฌ์์ค์์ ์๋ฒ ๋๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ (๋ฉ๋ชจ๋ฆฌ์์) ์ถ์ถํ๊ณ ๋ฐ์ดํธ๋ฅผ ํตํด ๋ก๋ํฉ๋๋ค.
๋ ์ข์ ๊ฒ์ AppDomain.AssemblyResolve
์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋๋งจ๋๋ก ๋ก๋ํ๋ฏ๋ก ํ์ํ ๋๋ง๋ค ์ด์
๋ธ๋ฆฌ(๋ฉ๋ชจ๋ฆฌ๋ก)๋ง ๋ก๋ํ๊ธฐ ๋๋ฌธ์ ์์์ ๋๋ฌด ๋ง์ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ ๋ํ์ ๋ฆ์์ต๋๋ค. ์ด๋ฏธ ๋ค๋ค๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
์ฌ๊ธฐ์ ์ธ๊ณต๋ฌผ์ด ๊ฒฐ์ ์ ์ด๋ผ๊ณ ๊ฐ์ ํ ์ ์์ต๋๊น? ๋ฐ๋ผ์ ๋์ผํ ๋น๋๋ ํญ์ ๋์ผํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํฉ๋๊น? ๋ฐ์ดํธ ๋จ์. ํ์ค๊ณผ ํจ๊ป ์ ๊ณต๋๋ ์ฒดํฌ์ฌ๊ณผ ํจ๊ป ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ฐฐํฌํ ์ ์๋ค๋ ๊ฒ๋ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@morganbr ์ฌ๊ธฐ์๋ ๋ง์ ์ฝ์๊ฑฐ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ง๊ธ๊น์ง ๋ด๋ฆฐ ๊ฒฐ์ ์ ๊ธฐ๋กํ ์ ์์ต๋๊น?
@edblackburn ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋ ๋์์ธ์ ํจ๊ป ๋ชจ์ผ๊ณ ์์ต๋๋ค. @swaroop-sridhar๋ ์ง๊ธ ๋์์ธ์ ์ฃผ๋ํ๊ณ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ILMerge๋ฅผ ์ฌ์ฉํฉ๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด ๊ทธ ์ด์ ๋ ๋ฌด์์ ๋๊น? ํจ์ ์ด ์๋ค๋ฉด ์ค์ค๋ก ๊ต์กํ๊ณ ์ถ์ต๋๋ค.
@simplejackcoder ILMerge ๋ ๋ง์ ์ด์ ๋ธ๋ฆฌ์ IL์ ํ๋๋ก ๊ฒฐํฉํ์ง๋ง ๊ทธ ๊ณผ์ ์์ ๋ณํฉ๋ ์ด์ ๋ธ๋ฆฌ์ ์๋ ID๋ฅผ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ ์ด์ ๋ธ๋ฆฌ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์ ์ ์คํจํฉ๋๋ค.
์ด ๋ ธ๋ ฅ์ ๋ชฉํ๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ณํฉํ๋ ๊ฒ์ด ์๋๋ผ ์ด์ ๋ธ๋ฆฌ ID๋ฅผ ์ ์งํ๋ฉด์ ํจ๊ป ํจํค์งํ๋ ๊ฒ์ ๋๋ค. ๋ํ ์ด์ ๋ธ๋ฆฌ๋ฟ๋ง ์๋๋ผ ๊ธฐ๋ณธ ๋ฐ์ด๋๋ฆฌ, ๊ตฌ์ฑ ํ์ผ, ๋ฐํ์ ๋ฐ ์ฑ์ ํ์ํ ๊ธฐํ ์ข ์์ฑ์ ํจํค์งํด์ผ ํฉ๋๋ค.
IL ๋ณํฉ์ ์ด์ ์ ์ํ ์ ์๋ ์ฑ์ ์ ์ฉํ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ๋ฌธ์ ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋๋ค.
๋์์ธ ๋ฆฌ๋ทฐ๋ https://github.com/dotnet/designs/pull/52 ์ ๊ฒ์๋ฉ๋๋ค.
์์ผ๋ก๋ PR์ ๋ํ ๋
ผ์๋ฅผ ๊ณ์ํ์.
๋จ์ผ ํ์ผ์ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์๊ฒ ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ๊ทํ์ ๋ต๋ณ์ ์ ํ์ ํญ์ ์ขํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
- ์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
- ์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
- ์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
- ๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
- ์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
- ์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
- ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
- ์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
--single-file
๋ฅผ ์ง์ ํ์ฌ ํ๋์ ์คํ ํ์ผ์ ์ป๊ณ ์ถ์ต๋๋ค. Windows์ ๊ฒฝ์ฐ .exe
๋ก ๋๋ ๊ฒ์ผ๋ก ์์ํ๊ณ Linux์ ๊ฒฝ์ฐ ์คํ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ ๊ฒ์
๋๋ค.--optimizing-level=5
๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํ ์์ค์ ์ค์ ํ๋ ํ๋๊ทธ์ผ ์ ์์ต๋๋ค.@BlitzkriegSoftware ๊ฐ์ฌํฉ๋๋ค.
์ฌ๊ธฐ ์ ์ ์๋ ๋์์ธ์ด ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃน๋๋ค. ๋์์ธ์ ์ดํด๋ณด์ญ์์ค. ํผ๋๋ฐฑ์ ํ์ํฉ๋๋ค.
๋จ์ผ ํ์ผ์ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์๊ฒ ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ๊ทํ์ ๋ต๋ณ์ ์ ํ์ ํญ์ ์ขํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
- ์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
- ์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
- ์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
- ๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
- ์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
- ์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
- ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
- ์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
๊ทํ๊ฐ ๋ฐ์ ํผ๋๋ฐฑ์ ์ฃผ๋ก 2019๋ ์ด์ ์ ๊ฐ๋ฐ์ ์ํ ๊ฒ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์น ์๋น์ค, ์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ๊ธฐํ ์๋น์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ .net core 3.0์์๋ WPF ๋ฐ UI ์ฑ์ฉ ์๋ฃจ์ ์ด ํ์ํฉ๋๋ค. .Net Framework 4.8์ .Net Standard 2.1์ ์ง์ํ์ง ์์ผ๋ฉฐ .net ํ๋ ์์ํฌ(์ฃฝ์ ํ๋ ์์ํฌ)์์ .net ์ฝ์ด๋ก ์ฑ์ ์ ๊ทธ๋ ์ด๋ํด์ผ ํ๋ฏ๋ก ์ง๊ธ๊น์ง WPF ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ILMerge๋ฅผ ๋์ฒดํ ์๋ฃจ์ ์ด ํ์ํฉ๋๋ค.
์๋ ์์ถ ํ๋ฆผ ํจํค์ง๋ ์ด๋ฌํ ์ข ๋ฅ์ ํ๋ก๊ทธ๋จ์ ๋ํด ์ด์ ์ ๋ค๋ฅธ ์ค๋ช ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ๋ถ๋ช ํ ์ข์ ์๋ฃจ์ ์ด ์๋๋๋ค.
์ ์์๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๊ณ ์ฌ์ฉํ์ง ์์ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋์ด ์์ ์ ์์ง๋ง ์ฐ๋ฆฌ๋ ์๋๋๋ค.
์ค์ ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑฐ๋ ๊ณ์ ์๋ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋๊ตฌ ์ฒด์ธ์ผ๋ก ํจ๊ป ๊ฒฐํฉ๋์ง ์์ ์ฐ๋ฆฌ์ ๊ฐ์ ์๋๋ฆฌ์ค์ ๋ํ ๊ด๋ จ ์ฌํญ์ด ๋ง์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ฉ๋ฉด ์ด๊ฒ์ ๋์ ๋ฌด์ง์ผ ์๋ ์์ง๋ง์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ ค๊ณ ๋ ธ๋ ฅํ์ง๋ง ๋์๊ฒ ๋ช ํํ์ง ์์ต๋๋ค. ILLink, Microsoft.Packaging.Tools.Trimming, CoreRT, .NET Native ๋ฐ ์ด ๋ฌธ์ ์์ ๋ฐ์ํ๋ ๋ชจ๋ ๋ฌธ์ ์ฌ์ด์ ๋จ์ผ ํธ๋ฆฌ ํ๋ค๋ฆผ, ๋น ๋ฅธ ์์(AoT ๊ฐ๋ฅ์ฑ ์์), ํฉ๋ฆฌ์ ์ธ ํฌ๊ธฐ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ป์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. .NET Core ์ธ๋ถ(UWP์ฉ ์๋).
ํฉ ๋ฐ ์ถ์ถ ๋ฐฉ์์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์์นด์ด๋ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์ด๋ฅผ ๋ฌ์ฑํ ์ ์์์ต๋๋ค.
ํฉ ๋ฐ ์ถ์ถ ๋ฐฉ์์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์์นด์ด๋ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ์ด๋ฅผ ๋ฌ์ฑํ ์ ์์์ต๋๋ค.
๋ ๋์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํํ ์ ์๋ ์ฌ๋ฌ ๋๊ตฌ๊ฐ ์ด๋ฏธ ์์ต๋๋ค.
@Safirion , @mattpwhite , @x2bool , @thegreatco ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด๋ก๋ถํฐ ๋ค์ํ ์ฌ์ฉ ์๋๋ฆฌ์ค(์ฝ์ ์ฑ, WPF, GUI ์ฑ ๋ฑ)๋ฅผ ๋ณผ ์ ์์ง๋ง ์ ๋ฐ์ ์ธ ์๊ตฌ ์ฌํญ์ ๋น์ทํด ๋ณด์
๋๋ค.
๋๋ ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋์์ธ ๋ฌธ์ ์์ ํด๊ฒฐํ๋ ค๊ณ ์๋ํ ์๊ตฌ ์ฌํญ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํฉ ๋ฐ ์ถ์ถ ๋ฐฉ์์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์, ์ด ์ค๋น ๋ฌธ์ ์์ ์ค๋ช ํ ๋๋ก ๋ชฉํ๋ ํ์ผ ์ถ์ถ์ ๋ํ ์์กด๋๋ฅผ ์ ์ง์ ์ผ๋ก ์ต์ํํ๋ ๊ฒ์ ๋๋ค.
์ ์์๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๊ณ ์ฌ์ฉํ์ง ์์ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ์ง ์์ต๋๋ค.
@mattpwhite , ์ด ์๋ฃจ์ ์ด ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ์ง ์๋๋ค๊ณ ์๊ฐํ๋์ง ๋ช ํํ ํ๊ณ ์ถ์์ต๋๋ค.
์ค์ ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑฐ๋ ๊ณ์ ์๋ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋๊ตฌ ์ฒด์ธ์ผ๋ก ํจ๊ป ๊ฒฐํฉ๋์ง ์์ ์ฐ๋ฆฌ์ ๊ฐ์ ์๋๋ฆฌ์ค์ ๋ํ ๊ด๋ จ ์ฌํญ์ด ๋ง์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@mattpwhite , ILLink(ํธ๋ฆฌ ์์ดํน), crossgen(์คํ ์ค๋น๊ฐ ๋ ๋ค์ดํฐ๋ธ ์ฝ๋ ์์ฑ) ๋ฐ ๋จ์ผ ํ์ผ ๋ฒ๋ค๋ง ์ธก๋ฉด์ .net core 3์ฉ์ผ๋ก ๊ฐ์ํ๋ ๋ฐฉ์์ผ๋ก msbuild/dotnet CLI์ ํตํฉํ๊ธฐ ์ํ ์์ ์ด ์งํ ์ค์ ๋๋ค. ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค(์: ํน์ msbuild ์์ฑ ์ค์ ).
์ด๋ฌํ ๋ชจ๋ ๋๊ตฌ์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, crossgen์ ๋ฏธ๋ฆฌ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์์์ ๋์ง๋ง ๋ฐ์ด๋๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ์ํค๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๋จ์ผ ํ์ผ ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ฑ์ ๋จ์ผ ํ์ผ์ ๊ฒ์ํ ์ ์์ง๋ง ๊ธฐ๋ณธ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋์คํฌ ๋ฑ์ ์ ์ถ๋๊ธฐ ๋๋ฌธ์ ์์ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
@swaroop-sridhar, ์๊ฐ์ ๋ด์ด ์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ด ์๋ฃจ์ ์ด ๋ค์ ๊ธฐ๋ฐ์ ์ ํฉํ์ง ์๋ค๊ณ ์๊ฐํ๋์ง ํ์ธํ๊ณ ์ถ์์ต๋๋ค.
์์ฒด ํฌํจ๋ ๋ชจ๋ ๊ฒ์ ๋ํ ์ถ์ถ์ด ์ฌ์ ํ ๊ทธ๋ฆผ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์๊ณ crossgen์ ์ํ(๋๋ ์ถ์ ์ JIT ์๊ฐ์ ์ค์ผ ์ ์๋ ๋ค๋ฅธ ๊ฒ)๊ฐ ๋ช ํํ์ง ์์์ต๋๋ค. ํ์ฌ ๋์์ธ์ด ๋งํฌํ๋ ์คํ ์ด์ง ๋ฌธ์๋ฅผ ์ฝ๋ ๊ฒ์ ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ๋ ํฅ๋ฏธ๋กญ๊ฒ ๋ง๋๋ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. ์ด๋ฅผ ๊ฐ์ํ ๋ ์ฐ๋ฆฌ๋ ์์ผ๋ก ํ๋์ ์ด๋ฌํ ํ์ ์์ฅ์ ์ํด .NET Framework๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ์ ๊ฐ ์๋ชป ์ดํดํ์ ์๋ ์์ต๋๋ค.
์ด๋ฌํ ๋ชจ๋ ๋๊ตฌ์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, crossgen์ ๋ฏธ๋ฆฌ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์์์ ๋์ง๋ง ๋ฐ์ด๋๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ์ํค๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์, ์ด๋ค ์ค ์ผ๋ถ๋ ์๋ ์ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ดํดํ์ต๋๋ค. JIT๊ฐ ์ ํต์ ์ผ๋ก ์๋ํ๋ ๋ฐฉ์์ผ๋ก ngen์ ํญ์ CLI/GUI ์ฑ์ ์น๋ฆฌ์์ต๋๋ค. ๊ณ์ธตํ๋ ์ปดํ์ผ๊ณผ ๋ฐํ์ ์์ฒด๋ฅผ ๋ก๋ํ๋ ๊ฒ์ด ๋์ผํ ์์์์ ์คํ๋๋ ๋ค๋ฅธ ๋ง์ .NET Framework ํ๋ก์ธ์ค์ ์ํด ๋ฐ๋์ ๋ถํ ์ํ๋์ง ์๋๋ค๋ ์ฌ์ค์ ์ผ๋ถ ์กฐํฉ์ผ๋ก ์ธํด Core์์ ๋ช ํํ์ง ์์ ์ ์์ต๋๋ค.
@swaroop-sridhar ํ์ฌ ์น์ธ๋ ์ ์์ ๋ํด ์ ๊ฐ ๊ฐ์ฅ ์ฐ๋ คํ๋ ๊ฒ์ ์ด ๋จ๊ณ์ ๋๋ค.
๋๋จธ์ง 216๊ฐ ํ์ผ์ ์์ ์ ๋์คํฌ์ ์ถ์ถ๋ฉ๋๋ค.
"Hello World"๋ฅผ ์คํํ๋ ๋ฐ 216๊ฐ์ ํ์ผ์ด ํ์ํ๋ค๋ ์ฌ์ค์ ์ ์ธํ๊ณ , ๋์คํฌ์ ์ผ๋ถ ์์น์ ์์ถ์ ํ๋ฉด ๊ฐ๋จํ ๋ช ๋ น์ค ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๊ฑฐํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ฌ๋๋ค์ด ์ค์น ํ๋ก๊ทธ๋จ์ ํตํด ์ ๊ณต๋์ง ์์ ๋๊ตฌ๋ฅผ ์ญ์ ํ ๋ ์์ ํ ์ ๊ฑฐํ๊ธฐ ์ํด ๋ค๋ฅธ ํ์ผ์ ์ฐพ์ ํ์๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
IMHO, ์ฐ๋ฆฌ๋ golang๊ณผ ์ ์ฌํ ๊ฒ์ ๊ฒฝํ์ ๋ชฉํ๋ก ํด์ผ ํฉ๋๋ค. golang ๊ฒฝํ๊ณผ ์์ ํ ์ผ์นํ๋ ค๋ฉด crossgen
๊ฐ ์์ด์ผ ํ์ง๋ง(JIT ๋ฐ ๊ณ์ธตํ๋ ์ปดํ์ผ์์ ์ง๊ธฐ ๋๋ฌธ์ 1:1 ์ผ์น๋ _์ข์_ ๊ฒ์ด ์๋๋ผ๊ณ ์ฃผ์ฅํ ์ ์์), ๊ทธ๊ฒ ์์ด๋ ์ข์ ๋ถ๋ถ์ ์ป์ ์ ์์ต๋๋ค. ๋๋ ๋น์ทํ ๊ฒฝํ์ ํ๊ธฐ ์ํด ์๋
๋์ ๋ง์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๊ฒ์ ์ด์
๋ธ๋ฆฌ ๋ก๋์ ํํฌ๊ฐ ์๋ ์๋ฒ ๋๋ ๋ฆฌ์์ค์์ต๋๋ค(ILMerge๋ ๊น๋ค๋กญ๊ณ Costura.Fody๋ ์์ง ์กด์ฌํ์ง ์์์ต๋๋ค). ์ ์์์ ์ค๋ช
๋ ๋ด์ฉ์ ํด๋น ๊ธฐ๋ฅ์ ์์ ํ ๋ณต์ ํ์ง๋ ์์ต๋๋ค. .NET Core๋ ๋ฏธ๋๊ฐ ๋งค์ฐ ๊ฐ๋ ฅํ์ง๋ง ๋ช
๋ น์ค ๋๊ตฌ ๊ฐ๋ฐ์ ๋ํ ์ฌ์ฉ์ ์ฝ 100๊ฐ์ ์ข
์์ฑ์ ๋ฌ๊ทธํ๊ฑฐ๋ ์์ผ๋ก ํ๋๋ฅด๋ ๋ถํธ์คํธ๋ฉ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์คํฌ์ ์ด๋๊ฐ์ ๋ฑ์ด๋ด์ผ ํ๋ ํ ์ ํ์ ์
๋๋ค.
๋ด dotnet/coreclr#1 ์ฌ์ฉ ์ฌ๋ก๋ ๋ช
๋ น์ค ์ ํธ๋ฆฌํฐ, ํ๋์ ํ์ผ์ด๋ฉฐ ์ถ์ถํ์ง ์๋ ๊ฒ์ด ์ ํธ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฌ์ธ์ ๋ ์ฌ์ธ์ ์๋ ์์ถ ํ๊ธฐ์ ๋ํ ๋ช
๋ น ์ค์์น์ ์ผ๋ถ๋ก ์ ํ์ ์ ๊ณตํ๋ค๋ ์ ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค. ์๋ ์์ถ ํ๋ฆผ์ ๊ฒฝ์ฐ ์์ถ์ ํผ ํ์ผ์ ์ ๋ฆฌํ๋ undo
๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ฑฐํ๋ค๋ ๊ฒ์ ํ๋์ ํ์ผ์ ์ญ์ ํ์ฌ ์ผ๋ฐ ์ ํธ๋ฆฌํฐ ํด๋์ ์์ฃผํ๊ธฐ์ ์ ํฉํ๊ฒ ๋ง๋๋ ๊ฒ์ ์๋ฏธํ์ง๋ง, ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์น์๋ ์์ฒด ํด๋๊ฐ ์์ด์ผ ์ ๋ฆฌ๊ฐ ๋ ์ฌ์์ง๊ณ ์ ๊ฑฐ๊ฐ ๊ณต์ ํ์ผ์ ์ ๊ฑฐํ๋ ์๋๋ฆฌ์ค. ๊ทธ๋ฅ ๋ช ๊ฐ์ง ์๊ฐ. ๋ด๊ฐ ๋งํ๋ฏ์ด ํ๋์ ํ์ผ ์ ํธ๋ฆฌํฐ(์ค์น ํ์ ์์)๋ ํ๋ก์ ํธ์ฉ ์ ํธ๋ฆฌํฐ(๋๊ตฌ ์ ์์๋ก์)๋ฅผ ์์ฃผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค. ๊ทธ๋ฌ๋ ๋ ์๋๋ฆฌ์ค ๋ชจ๋์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ค๋ฆ
๋๋ค .
๋จ์ผ ํ์ผ์ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์๊ฒ ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ๊ทํ์ ๋ต๋ณ์ ์ ํ์ ํญ์ ์ขํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
- ์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
- ์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
- ์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
- ๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
- ์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
- ์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
- ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
- ์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
IMHO, ์ฐ๋ฆฌ๋ golang๊ณผ ์ ์ฌํ ๊ฒ์ ๊ฒฝํ์ ๋ชฉํ๋ก ํด์ผ ํฉ๋๋ค.
@thegreatco : ์, ๋ค์ดํฐ๋ธ ์ฝ๋๋ก์ ์ ์ฒด ์ปดํ์ผ์ ๋จ์ผ ํ์ผ ์ฑ์ ๋น๋ํ๋ ๋ฐ ์ข์ ์ต์ ์ ๋๋ค. GO์ ๊ฐ์ ์ธ์ด๋ AOT(Ahead-of-Time) ์ปดํ์ผ์ ๊ธฐ๋ณธ ๋ชจ๋ธ๋ก ์ฌ์ฉํ์ฌ ๋น๋๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ JIT ์ปดํ์ผ์ ํตํด ๋ฌ์ฑ๋๋ ๋์ ์ธ์ด ๊ธฐ๋ฅ์ ๋ํ ํน์ ์ ํ์ด ์์ต๋๋ค.
CoreRT ๋ AOT ์ปดํ์ผ ์ฑ์ ์ํ .Net Core ์๋ฃจ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ CoreRT๋ฅผ ์ฌ์ฉํ ์ ์์ ๋๊น์ง ์ด ๋ฌธ์ ์์ ๋ค๋ฅธ ์๋จ์ ํตํด ๋จ์ผ ํ์ผ ์ฑ์ ๊ตฌํํ๋ ค๊ณ ํฉ๋๋ค.
"Hello World"๋ฅผ ์คํํ๋ ค๋ฉด 216๊ฐ์ ํ์ผ์ด ํ์ํ๋ค๋ ์ฌ์ค ์ธ์๋
HelloWorld์ ํ์ํ ํ์ผ ์๋ฅผ ์ค์ด๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค."
ํน์ ์์น์ ๋์คํฌ์ ์์ถ์ ํ๋ฉด ๊ฐ๋จํ ๋ช ๋ น์ค ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๊ฑฐํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
- ๋จ์ผ ํ์ผ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์ด ๋ค์ ๋จ๊ณ ๋ก ์ด๋ํจ์ ๋ฐ๋ผ ๋์คํฌ์ ์ ์ถ๋๋ ํ์ผ ์๊ฐ ์ค์ด๋ค๊ณ ๋๋ถ๋ถ์ ์ฑ์์ ์ด์์ ์ผ๋ก๋ 0์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ธฐ ๋จ๊ณ์์๋ ์ฌ๋ฌ ํ์ผ(๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋ ํ์ผ)์ด ์ ์ถ๋์ด์ผ ํฉ๋๋ค.
- ๋์คํฌ์ ์ ์ถ๋ ํ์ผ์ ์์น๋ ํญ์ ๊ฒฐ์ ์ ์ด๋ฉฐ ๊ตฌ์ฑ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ถ๋ ํ์ผ์ ๊ฐ๋จํ ์คํฌ๋ฆฝํธ๋ก ์ ๋ฆฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ด์์ ์ด์ง ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
@mattpwhite์ ๋ํ ์ค๋ช ๊ฐ์ฌํฉ๋๋ค.
์, ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๋์ค ๋จ๊ณ๊น์ง ๋ ๋ฆฝํ ์ฑ์ ๋์คํฌ๋ก ์ถ์ถ๋ ํ์ผ์ ๋ณผ ์ ์์ต๋๋ค. ์์ ์ค๋ช ์์ ์์ฑํ ๊ธฐ์ ์ค ์ผ๋ถ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ์ํฉ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
@BlitzkriegSoftware์ ์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ์ฌ์ธ์ ๋ ์ฌ์ธ์ ์์ฒด ์ถ์ถ์ ๋ํ ๋ช ๋ น ์ค์์น์ ์ผ๋ถ๋ก ์ ํ์ ์ ๊ณตํ๋ค๋ ์ ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค.
๋จ์ผ ํ์ผ๋ก ๊ฒ์๋ ์ฑ์ ์ถ์ถ์ด ํ์ํ์ง ์ฌ๋ถ๋ ์ฑ ์ฝํ ์ธ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค(์: ๊ธฐ๋ณธ ํ์ผ์ด ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ). ๋ฒ๋ค๋ฌ ๋์์ธ์ ๋ชจ๋ ํ์ผ์ ์ถ์ถํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ช ๊ฐ์ง ๊ตฌ์ฑ ์ ์ ๊ณตํฉ๋๋ค. ์ฑ์ด ๋ฐํ์์ ํ์ผ์ ๋ํ ์ถ์ถ์ ์ฌ์ฉํ์ง ์์์ผ ํ๋ค๋ ์์ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
<propertygroup>
<SingleFileExtract> Never | Always | AsNeeded </SingleFileExtract>
</propertygroup>
์ฌ๊ธฐ์์ ์ดํด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. SingleFileExtract=Never๋ฅผ ์ปดํ์ผํ ๋ ์ฑ์ ์ถ์ถ(๋ค์ดํฐ๋ธ ๋ฐ์ด๋๋ฆฌ)์ ํตํด์๋ง ์ฒ๋ฆฌํ ์ ์๋ ํ์ผ์ด ํฌํจ๋์ด ์์ผ๋ฉด ๋จ์ผ ํ์ผ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
์๋ ์์ถ ํ๋ฆผ์ ๊ฒฝ์ฐ ์์ถ์ ํผ ํ์ผ์ ์ ๋ฆฌํ๋ ์คํ ์ทจ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
ํฉ๋ฆฌ์ ์ผ๋ก ๋ค๋ฆฌ๋ค์. ์ถ์ถ์ ์ ํํ ์์น(์๋ ๊ฒฝ์ฐ)๋ ๊ฒฐ์ ์ ์ด๋ฉฐ ๊ตฌ์ฑ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ฑ๊ณผ ์ถ์ถ๋ ๋ชจ๋ ์ข ์์ฑ์ ์ ๊ฑฐํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
@DoCode์ ์๋ตํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ์๋๋ฆฌ์ค๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ค๋ ์ ์์ ํฅ๋ฏธ๋กญ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์์ฒด์ ๋ช ๊ฐ์ง ์ข
์์ฑ์ด ์๋ ๊ฒฝ์ฐ(๊ธฐ๋ณธ ์ฑ๊ณผ ๊ณต์ ๋์ง ์์) ํ๋ฌ๊ทธ์ธ์ ๋จ์ผ ํ์ผ๋ก๋ ๊ฒ์ํด์ผ ํฉ๋๊น(ํฌํจ๋ โโ์ข
์์ฑ ํฌํจ)? ๊ฐ์ฌ ํด์.
์ @swaroop-sridhar, ๊ทธ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ์ ์ข ์์ฑ์ด ํฌํจ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ณต์ ์ข ์์ฑ๋ง ๋จ์ผ ํ์ผ ๊ธฐ๋ณธ ์ฑ ์ธ๋ถ์ ์์ด์ผ ํฉ๋๋ค.
์ค๋ @madskristensen ์ Visual Studio ๋ฐ ์ธ๊ธฐ ์๋ Newtonsoft.Json NuGet ํจํค์ง์ ๋ํ ์ค๋ช ์ ๊ณต์ ํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋๋๋ก ๋น์ทํ ์ํฉ์์ ๊ฐ์ ์ํฉ!
@DoCode ๊ฐ์ฌํฉ๋๋ค. ๋จ์ผ ํ์ผ ์ฑ์ด ๊ตฌํ๋๊ณ ์์ ๋๋ฉด ๋จ์ผ ํ์ผ ํ๋ฌ๊ทธ์ธ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ณํํฉ๋๋ค. ๋์์ธ ๋ฌธ์๋ ์ฌ๊ธฐ์์ ํ๋ฌ๊ทธ์ธ์ ๋ํด ์ด์ผ๊ธฐํฉ๋๋ค.
@swaroop-sridhar ์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ์ธ ์ฐธ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ์คํ ์ทจ์ ๋ช ๋ น์ด ์์ผ๋ฉด ํนํ ์๋ ๋จ๊ณ์์ ์ ์ฉํฉ๋๋ค.
1 - ์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
2 - ์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
๋ค
3 - ์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
์, ํ์ง๋ง ์ด๋ฏธ ์๋ ค์ง ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์ฌ์ ์์กดํ์ง ์์ต๋๋ค.
4 - ๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ ์ํฅ์ด ์์ต๋๊น?
๋ค
5 - ์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ ๊ฒฝ์ฐ ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
์๋, ์ด๋ฏธ ์กฐ๊ธ ๋๋ฆฌ๋ค
6 - ์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
ํ๋ก์ ํธ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ๊ฐ๋จํ ๋ช ๋ น์ค ๋๊ตฌ์ ๊ฒฝ์ฐ ํ ์๋ฆฌ mbs๋ณด๋ค ํด ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์์ต๋๋ค.
7 - ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
๊ฐ๋ฐ/๋ฐ๋ณต ์๊ฐ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ํ ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ด ๊ธธ์ด๋ ๊ด์ฐฎ์ต๋๋ค.
๊ทธ๋ฌ๋ .net ํต์ฌ ์ฑ์ ์ด๋ฏธ ๊ธฐ์กด .net ํ๋ ์์ํฌ ์ฑ๋ณด๋ค ๋ ์ค๋ ๋น๋๋๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
๋งค๋ ๋๋ฆฐ ์ํํธ์จ์ด์ ๊ฒฝํฅ์ ์ฉ์ธ๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋์ ํ๋์จ์ด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๋ ค์ง ์ด์ ๊ฐ ์์ต๋๋ค.
8 - ์ฑ ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ด๋ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
๋ค!
์ธ์ ๊ฐ CoreRT๋ฅผ ์ฌ์ฉํ AOT ์ปดํ์ผ์ด ์๋ํ์ฌ golang ๋ฐ rust ๋ฐ ๊ธฐํ AOT ์ปดํ์ผ lang๊ณผ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํ์ผํ ์ ์๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค. Unity3D๊ฐ IL2CPP๋ก ์ํํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค.
@morganbr ๋ค์์ ๋์ ํจ๊ป ์ผํ๋ ์ฌ๋๋ค์ ์๊ฒฌ์ ๋๋ค. ์ ๋ ๋ง์ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง ์ฃผ๋ก C#, Go, Python์ ์ฌ์ฉํฉ๋๋ค.
์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
ASP.NET Core ๋ฐ ์ฝ์ ํ๋ก๊ทธ๋จ(๋๋ถ๋ถ Linux)์ ML.NET์ด ์ฐ๋ฆฌ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ์ ์ฌ์ ์ผ๋ก ์ผ๋ถ Windows ์ํฌ๋ก๋์ ๋๋ค.
์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
ํ์ฌ๋ก์๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ต๋๋ค.
์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
๋์ ๋ฐ๋ผ ๋ค๋ฅด์ง. ํ์ฌ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ข ์์ฑ์ ํจํค์ง๋ก ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ์ธ๋ถ DLL์ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํ ์ ์๋ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น์ฉ์ ์ง๋ถํ๋ ์ํฉ์ ๋ณผ ์ ์์ต๋๋ค.
๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
์ ์ ์ผ๋ก. ์ด๊ฒ์ ์ฐ๋ฆฌ์ ์ต์ฐ์ ๊ณผ์ ์ ๋๋ค.
์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
๋๋ 10์ด ๋ฏธ๋ง์ด๋ฉด ๋ฌด์์ด๋ ๊ด์ฐฎ๋ค๊ณ ๋งํ๊ณ ์ถ๋ค. ์์ ์๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฉฑ๋ฑ์ฑ์ด ์๊ณ ์์ธก ๊ฐ๋ฅํ ํ ์ค์ํ์ง ์์ต๋๋ค. ์ฆ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ผํ ์์๋ก ๋ก๋๋๊ณ ๋ณ์๊ฐ ๋์ผํ ์์๋ก ์ด๊ธฐํ๋๋ ๋ฑ์ ๋๋ค.
์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
์ฃผ๋ก ๋ฐฐํฌ ๋ชฉ์ ์ผ๋ก ์์์๋ก ์ข์ต๋๋ค. ๋ฐฐํฌ๋ ์ฌ์ฉ์๊ฐ ๋ค์ด๋ก๋ํ ๋ฐ์ด๋๋ฆฌ, ๋ฐ์ด๋๋ฆฌ๊ฐ ํฌํจ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ฑ์ด ๋ ์ ์์ต๋๋ค.
ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น?
๋ฌผ๋ก , C/C++ ๋ฐ Java๋ณด๋ค ๋น ๋ฅด๋ฉด ๋ง์กฑํด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
30-90์ด๊ฐ ์ด์์ ์ด์ง๋ง 3๋ถ ๋ฏธ๋ง์ด๋ฉด ์ ๋นํฉ๋๋ค. ์ค์ ๊ท๋ชจ ํ๋ก์ ํธ(1k-500k LOC)์ ๊ฒฝ์ฐ 3๋ถ ์ด์์ ๋ค์ ๋ง์ ๊ฒ์ ๋๋ค. ๋งค์ฐ ํฐ ํ๋ก์ ํธ(1M LOC)์ ๊ฒฝ์ฐ 5๋ถ์ด ํ์ฉ๋ ์ ์์ต๋๋ค.
์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
๋์ ๋ฐ๋ผ ๋ค๋ฅด์ง. ์ถ๊ฐ ์์ ์ด ํ ํ๋ฆฟํํ ์ ์๋ ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด๋ผ๋ฉด ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ๋ถ๋ช ํํ๊ฑฐ๋ ๊ฐ๋จํ ์์ ์ด ์๋ ๊ฒฝ์ฐ ์ ์ฌ์ ์ผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค.
@mxplusb , @dark2201 , @RUSshy , @BlitzkriegSoftware ์๋ต์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค
ํ์ฌ ์ค๊ณ ๋ ์์ํ AOT ์ปดํ์ผ์ด ์๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ์ต์์ ๋ฒ์๋ก ์๋๋ฆฌ์ค๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์์ธ์ ๋ํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ ๊ธฐํ์ญ์์ค.
๋ ๋ฎ์ ์์ ์๊ฐ ๋ฐ ์ปดํ์ผ ์๊ฐ๊ณผ ๊ด๋ จํ์ฌ:
ํ๋ ์์ํฌ ์ข
์ ์ฑ์ ์์ ์๊ฐ์ด ์๋นํ ์งง์ต๋๋ค(์ ์ด๋ ๊ธฐ๋ฅ ์์ ์ด๊ธฐ ๋จ๊ณ์์๋). ์ปดํ์ผ ์๊ฐ๋ ๋ ์งง์ต๋๋ค(๋ ์ ์ ์์ ํ์ผ์ ํฌํจํด์ผ ํ๊ธฐ ๋๋ฌธ์).
๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต์ด ์๋ฃ๋๋ ์ฆ์ ์์ ์๊ฐ, ์ปดํ์ผ ์ฒ๋ฆฌ๋ ๋ฐ ํ์ผ ํฌ๊ธฐ ์ธก์ ์ ๋ํด ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
@swaroop-sridhar ๊ทธ ์ผ์ ์ ์ด๋ป๊ฒ ๋๋์?
@ayende ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต์ ํ๋ฐํ ๊ฐ๋ฐ ์ค์ด๋ฉฐ ๋ช ์ฃผ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ ๊ฒ์ผ๋ก ์๊ฐํฉ๋๋ค.
@swaroop-sridhar
ํ์ฌ ์ค๊ณ ๋ ์์ํ AOT ์ปดํ์ผ์ด ์๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ์ต์์ ๋ฒ์๋ก ์๋๋ฆฌ์ค๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์์ธ์ ๋ํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ ๊ธฐํ์ญ์์ค.
์คํ: HelloWorld.exe
๋ฒ๋ค ์ฑ ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ๋ฒ๋ค์์ ์ง์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋๋จธ์ง 216๊ฐ ํ์ผ์ ์์ ์ ๋์คํฌ์ ์ถ์ถ๋ฉ๋๋ค.
์ฝ๊ธฐ ์ ์ฉ fs์์ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ IoT์ ์ผ๋ฐ์ ์ด๊ฑฐ๋ exe๊ฐ ro ์ปจํ ์ด๋ ๋ด์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ๋ฉ๋๊น? exe์์๋ ์ง์ ์คํํ๋ ์ต์ ์ด ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@etherealjoy ์ด ์น์ ์ ํ์๋ ์๋ ์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ 2๋จ๊ณ ์์ ์์ฒด ํฌํจ๋ HelloWorld์ ๋ํ ์์ ์ถ๋ ฅ์ ๋๋ค( ์ด ์น์ ์์ ์ธ๊ธ๋จ). ์ด ๋จ๊ณ์์ EXE์์ ์ง์ ์คํํ ์ ์๋ ์ ์ผํ ์ฑ์ ํ๋ ์์ํฌ ์ข ์ ์์ ๊ด๋ฆฌ ์ฑ์ ๋๋ค.
4 ๋จ๊ณ ๋๋ 5๋จ๊ณ ์ ์๋ ๊ฒฝ์ฐ ์์ ๋ ๋ฆฝํ ์ฑ์ ๋ฒ๋ค์์ ์ง์ ์คํํ ์ ์์ต๋๋ค.
์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๋ชจ๋ ๊ฒ. ์ฝ์ ์ ํธ๋ฆฌํฐ, WPF, asp.net, ๊ฒ์
์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
๋ค. Sqlite๊ฐ ์ข์ ์์ ๋๋ค.
์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
์๋ง ์๋์ค.
๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
๋ค.
์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
net.core๋ ์ด๋ฏธ ๋๋ฌด ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ๋ช ์ด ์ฆ๊ฐ๋ ํ์ฉ๋ฉ๋๋ค. 5์ด -- ์ ๋ ์๋๋๋ค.
์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
์์ฆ์ ์๊ด์์ด
ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
์ต๋ 5๋ถ์ ๋๋์ด ํ์ฉ๋ฉ๋๋ค. UWP์ฉ 15-20๋ถ ๋ฆด๋ฆฌ์ค ๋น๋๋ ๋ชจ๋๋ฅผ ๋ฏธ์น๊ฒ ๋ง๋ญ๋๋ค.
์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
ํ์ ํ๋.
@mjr27 ๊ฐ์ฌํฉ๋๋ค
์ด์ 1๋จ๊ณ ๊ตฌํ์ด ์๋ฃ ๋์์ผ๋ฉฐ 3.0.100-preview5-011568๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ ์ ์ค๋ช
๋ ๋๋ก PublishSingleFile
์์ฑ์ true
๋ก ์ค์ ํ์ฌ ์ฑ์ ๋จ์ผ ํ์ผ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
์ด ๋ฒ์ ์์๋ ์ฌ๊ธฐ ์ ์ค๋ช ๋ ๋๋ก ๋ชจ๋ ํฌํจ๋ ํ์ผ์ด ์ฒ์ ์คํ ์ ๋์คํฌ๋ก ์ถ์ถ๋๊ณ ํ์ ์คํ์์ ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
์ปดํ์ผ ์ฒ๋ฆฌ๋
ํ์ผ์ด ๊ฒ์ ๋๋ ํ ๋ฆฌ์ ๊ฐ๋ณ ํ์ผ๋ก ๊ธฐ๋ก๋๋์ง ๋๋ ๋จ์ผ ํ์ผ๋ก ๊ธฐ๋ก๋๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ์๊ฐ์ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
ํ์ผ ํฌ๊ธฐ ๋ฐ ์์
๋ค์ ํ๋ ๋จ์ผ ํ์ผ๋ก ๋น๋๋ ๋ช ๊ฐ์ง ์ฑ์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค.
์ธก์ | ์ฝ์ ํ์จ์ด | ์ฝ์ ์
ํ | WPF FW | WPF ์์ฒด
-- | -- | -- | -- | --
ํ์ผ ํฌ๊ธฐ(MB) | 0.32 | 66.5 | 20.69 | 118.9
์ผ๋ฐ ์คํ(์ด) | 0.123 | 0.127 | 3.32 | 3.24
๋จ์ผ exe ์ฒซ ์คํ(์ด) | 0.127 | 0.565 | 3.67 | 4.14
๋จ์ผ exe ํ์ ์คํ(์ด) | 0.124 | 0.128 | 3.30 | 3.29
๊ตฌํ์ด ํ์ ๊ฐ๋ฐ ๋จ๊ณ ๋ก ์งํ๋จ์ ๋ฐ๋ผ ์ซ์๋ฅผ ๊ณ์ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
์ข์ ์์์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค
3.0 RTM์์ ์คํ ์ด์ง ๋ฌธ์์ ์ธ๊ธ๋ ๋ชจ๋ ๋จ๊ณ๊ฐ ์๋ฃ๋ฉ๋๊น? ์๋๋ฉด ๊ตฌํ๋ ๋๊น์ง 3.0 ์ดํ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๊น?
@cup dotnet publish -o out /p:PublishSingleFile=true /p:RuntimeIdentifier=win-x64
๋ก ํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ฐฉ๊ธ ๋ฐ๋๋ผ ์ฝ์ ์ฑ์ ๋ง๋ค๊ณ ํด๋น ๋ช
๋ น์ ์คํํ์ฌ ํ
์คํธํ์ต๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์๋ํ์ต๋๋ค.
dotnet publish -o out /p:PublishSingleFile=true /p:RuntimeIdentifier=win-x64 /p:IncludeSymbolsInSingleFile=true
๋ฅผ ์ฌ์ฉํ์ฌ .pdb ํ์ผ์ ๋ฒ๋ค๋งํ๋ฉด ๋ ๋ฉ๋ฆฌ ๊ฐ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋ ค์ฃผ์ @seesharprun ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ @cup , ๋ช
๋ น์ค ๋จ์ผ ํ์ผ ๊ฒ์์ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋ช
๋ น์ค์์ PublishSingleFile
์์ฑ์ ์ค์ ํ๋ ๊ฒ์
๋๋ค.
@etherealjoy coreclr ๋ฐํ์ ์ ์ฅ์๋ ๊ฑฐ์ ํ ๋ฌ ์์ ๊ธฐ๋ฅ ์์ ์ ๋ํด ๋๋ถ๋ถ ์ ๊ฒจ ์์ต๋๋ค. ๋ชจ๋ ๋จ๊ณ์ ์๊ฐ์ด ์ถฉ๋ถํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ ๋จ๊ณ๋ ๋ค์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ณต๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ค๋ ์ด ์์ ์ ์ํํ์ง๋ง ์ถ์ถ ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํด๋ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ์น์ ์ ๋ฐ๋ฅด๋ฉด . ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ถ์ถ๋๋ ์์น๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด ExtractBaseDir์ด๋ผ๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ค์์น๋ฅผ runtimeconfig์ ์ถ๊ฐํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ runtimeconfig.template.json์ด ์์ต๋๋ค.
{
"configProperties" : {
"ExtractBaseDir": "C:\\"
},
"ExtractBaseDir": "C:\\"
}
์์ฑ๋ app.runtimeconfig.json์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"runtimeOptions": {
"configProperties": {
"ExtractBaseDir": "C:\\"
},
"ExtractBaseDir": "C:\\"
}
}
์์ฑ๋ exe๋ฅผ ํตํด ์คํํ ๋ ์ฌ์ ํ tmp ํด๋์ ์์ถ๋์ด ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด Preview5์์ ์ค๋น๋์ง ์์๋ค๊ณ ๊ฐ์ ํ์ง๋ง "ExtractBaseDir"์ด runtimeconfig.json์ ์์ด์ผ ํ๋ ์์น๊ฐ ๋ช ํํ์ง ์๊ณ ์์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ์ธํ๊ณ ์ถ์์ต๋๋ค.
@igloo15 ์ฌ๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
ํ์ฌ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์๋ DOTNET_BUNDLE_EXTRACT_BASE_DIR
ํ๊ฒฝ ๋ณ์๋ง ํ์ฑํ๋ฉ๋๋ค. ์ด๋ ํ์ฌ ๊ตฌํ ๋จ๊ณ์์ runtimeconfig.json
๋ฅผ ํฌํจํ ๋ชจ๋ ํ์ผ์ด ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ๋์คํฌ๋ก ์ถ์ถ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ค์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์ ExtractBaseDir
์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ ์์
์ ํ๊ณ ์์ต๋๋ค.
ASP.NET Core ํ๋ก์ ํธ์์ ์ด ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ด ์์ต๋๊น? ๊ถ์ฅ๋๋ ์ ๊ทผ ๋ฐฉ์์ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ๋ด ์์คํ ์ ํ์ด ๋ก๋๋๋ ์์น๋ฅผ ์ฐพ๊ณ ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก IHostingEnvironment ContentRootPath ๋ฐ WebRootPath๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋๊น?
@keithwill AppContext.BaseDirectory
๋ฅผ ์ฌ์ฉํ์ฌ app.dll ๋ฐ ๊ธฐํ ๋ชจ๋ ํ์ผ์ด ๋์คํฌ๋ก ์ถ์ถ๋๋ ์์น๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ ContentRootPath
๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
@igloo15 : ์ด ์ต์ ์ ์ฌ์ฉํ๋ ์๋๋ฆฌ์ค๊ฐ ์ด๋ค ๊ฒ์ธ์ง ๊ณต์ ํด ์ฃผ์ค ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
runtimeconfig.json
์ค์ ์ด ํ์ํฉ๋๊น?์ด ์ค์ ์ ๋ํ ํน์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋์ง ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์๊ฒฌ๋ ๋ฃ๊ณ ์ถ์ต๋๋ค.
@swaroop-sridhar
๋๋ ๋ค์ ์ด์ํ ์ํฉ์ด ์์ต๋๋ค. ๋ด ์ํํธ์จ์ด๊ฐ ๋คํธ์ํฌ ๊ณต์ ์ ์ ์ฅ๋ ๋ค์ ๋คํธ์ํฌ ๊ณต์ ๊ฐ ์์์ Windows VM์ ์ฐ๊ฒฐ๋๊ณ ๋คํธ์ํฌ ๊ณต์ ์์ ์ง์ ์คํ๋ฉ๋๋ค. ๋คํธ์ํฌ ๊ณต์ ์์ ์ํํธ์จ์ด๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ ๋ Windows VM์ ์๋ฌด ๊ฒ๋ ์์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ก๊ทธ, ๊ตฌ์ฑ ํ์ผ ๋ฑ์ ๋ชจ๋ ๋คํธ์ํฌ ๊ณต์ ์ ์์ฑ๋์ด์ผ ํฉ๋๋ค.
์ด์ํ๊ฒ๋ ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฒด ์์คํ ์ด ํด๋์ ์ฌ๋ฌ ์ํํธ์จ์ด๋ฅผ ๋ฐฐ์นํ ๋ค์ ๋ค๋ฅธ ๊ตฌ์ฑ/๋ฒ์ ์ ๋ํด ํด๋น ํด๋ ๊ตฌ์กฐ๋ฅผ ๋ณต์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํน์ ๋ฒ์ ์์ ๊ด๋ฆฌ ์ํํธ์จ์ด๋ฅผ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ VM์ ์คํ์ ํ๊ณ VM์ ๋๋ผ์ด๋ธ๋ฅผ ํน์ ๋ฒ์ ์ ๋คํธ์ํฌ ๊ณต์ ์ ๋งคํํ๊ณ ์ํํธ์จ์ด๋ฅผ ์คํํฉ๋๋ค.
1.) ํ๋ก๋์
๋ฐฐํฌ ์๋๋ฆฌ์ค์
๋๋ค.
2.) ์ํํธ์จ์ด๋ฅผ ์คํํ๋ ์ปดํจํฐ๊ฐ ์ง์์ ์ผ๋ก ๋ค๋ฅด๊ณ ํ๊ดด/์ฌ์ ์๋๊ธฐ ๋๋ฌธ์ ํ๊ฒฝ ๋ณ์๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
@cup ์ ๋ ์ด ์ฃผ์ ๊ฐ ๋์์ธ ๋ฌธ์ ๊ตฌํ์ ๊ดํ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํ์ง ์์ผ๋ฉฐ ๋์์ธ ๋ฌธ์์์๋ ๊ตฌ์ฒด์ ์ผ๋ก ExtractBaseDir
๊ฐ ์ด ๊ธฐ๋ฅ์ ๋ํด ์๋ํด์ผ ํ๋ค๊ณ ๋งํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ด ์ค๊ณ ๋ฌธ์๋ฅผ ๊ตฌํํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค๋ฉด ์ด ๋ฌธ์ ๋ ๋ฌด์์ ๊ดํ ๊ฒ์ ๋๊น?
@igloo15์ ๋ํ ์ค๋ช ๊ฐ์ฌํฉ๋๋ค.
AppHost ์ฝ๋ ์ด๊ธฐ์ ๊ตฌ์ฑ ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ๋น์ฉ์ด ๋ค๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฑ ์ต์ ์ ๋ํด ์ง๋ฌธํฉ๋๋ค. ํ์ฌ AppHost๋ json ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ ์ฝ๋์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค(๋์ hostfxr/hostpolicy์์ ์ฌ์ฉ๋จ). ํ์ฌ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด AppHost๊ฐ ์กฐ๊ธ ๋ ์ปค์ง๊ณ ๋ณต์กํด์ง๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌํ์ด ์ถ๊ฐ ๋จ๊ณ (๋ชจ๋ ํธ์คํ ๋ฐ ๋ฐํ์ ์ฝ๋๊ฐ ํจ๊ป ์ฐ๊ฒฐ๋จ)๋ก ์งํ๋๋ฉด ๋ ์ด์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
@igloo15 ๋์์ธ ๋ฌธ์๋ ์ค์ํ ๋ถ๋ถ์ด์ง๋ง ์ด ๋ฌธ์ ์ ํต์ฌ์ ๊ธฐ๋ฅ ์์ฒด์
๋๋ค. ExtractBaseDir
๋ ์ ํ์ ๋งค๊ฐ๋ณ์์ด๋ฉฐ ์ ํ์ ๋งค๊ฐ๋ณ์์ ์ฝ๋งค์ด๊ธฐ๋ณด๋ค๋ ํต์ฌ ๊ธฐ๋ฅ์ด "ํ์ฌ" ๋ฆด๋ฆฌ์ค๋ก ์ ๋ฌ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
@cup , ์ด ์ค๋ ๋์์ ๊ด์ฌ ์๋ ๊ฐ๋ฐ์๋ค์ ๊ด์ฌ์ ๋ฐ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ง๋ฌธํ์ต๋๋ค.
์ง๋ฌธ์ด ์ฃผ์ ์์ ๋ฒ์ด๋ฌ๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ์ด ์ค๋ ๋์ ๊ธธ์ด์ ๋ํ ๊ทํ์ ์ฐ๋ ค๋ฅผ ์ดํดํฉ๋๋ค. ๋ค์์๋ ๋งํฌ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์.
@cup @swaroop-sridhar
๋ด๊ฐ ๋จผ์ ๋งํ๊ณ ์ถ์ ๋ช ๊ฐ์ง๋ ์ด ๊ธฐ๋ฅ์ด ์คํ ์ด์ง ๋ฌธ์ ์ ์คํ ์ด์ง 1์์๋ง ์ค์ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๋จ๊ณ 2 - 5๋ ์์ถ์ ํ์ง ์๊ณ ๋ฒ๋ค ๋ด๋ถ์์ dll์ ์คํํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ถ์ถ ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ์ ์์น๋ฅผ โโ๊ฒฐ์ ํ๋ ์ค์ ์ 2-5๋จ๊ณ์์ ์ค์ ๋ก ์ ์ฉํ์ง ์์ต๋๋ค. NetCore 3.0์ด 1๋จ๊ณ๋ฅผ ๊ฐ๋ฐํ ๊ณํ์ด๋ฏ๋ก ์ด ๊ธฐ๋ฅ์ด ์ ์ฉํ ์ ์๋ ์ ์ผํ ์๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ด ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋ ๋ฒ์งธ๋ ์ด ๋ฐฉ๋ฒ์ dotnet-wrap๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ๊ณผ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋์ง์ ๋๋ค. ๋์๊ฒ ์ด ๋ฐฉ๋ฒ์ ์ฃผ์ ์ด์ ์ ์ฝ๋๊ฐ ์ปดํ์ผ๋ ๋์ ๋ ๊ฐ๊น์ด ๋น๋ ์ฒด์ธ์ ์ด ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ถํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ํ ์ด๊ฒ์ .NET์ ๋ง์ถฐ์ง ๊ธฐ๋ฅ์ด๋ฏ๋ก ๊ตฌ์ฑ, ๋น๋ ํ๋ก์ธ์ค ๋ฑ๊ณผ ๊ฐ์ .NET Core ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ค๋ฅผ ์ดํดํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๋๊ตฌ๋ฅผ ๋คํธ ์ฝ์ด์ ํน๋ณํ ๋ง์ถฐ์ ธ ์์ง ์์ต๋๋ค. dotnet-wrap์ด ํ ์ ์๋ ์ถ์ถ ์์น ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋๋ค.
๊ตฌํ ๋ฐฉ๋ฒ์ ๊ดํด์๋ ํ์คํ์ง ์์ง๋ง ๋ฐํ์ ์ ๊ตฌ์ฑ์์ ExtractBaseDir์ ์ฝ๋ ๊ฒ๋ณด๋ค ๋น๋ ์ ๋ฒ๋ค exe์ ์ด๋ฅผ ์๊ธธ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์ด ๋ฒ๋ค ํ๋ก์ธ์ค๋ฅผ ์๋์ํค๋ ์ฝ๋๋ฅผ ๋ณด์ง ๋ชปํ์ง๋ง ๋ด ์๊ฐ์๋ ๊ทธ ์์ ๋ชจ๋ dll ๋ฑ์ด ํฌํจ๋ ๊ธฐ๋ณธ exe๋ฅผ ์์ฑ/๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. exe๋ฅผ ์์ฑ/๋น๋ํ๋ ๋์ ๋ฒ๋ค๋ ์ฑ runtimeconfig ํ์ผ์ ์ฝ๊ณ ExtractBaseDir์ ๊ฐ์ ธ์ ๊ธฐ๋ณธ ๋ฒ๋ค exe์ ์์ฑ์ผ๋ก ์ค์ ํ ์ ์์์ต๋๊น?
๊ทธ๋ฐ ๋ค์ ๋ฐํ์์ ํฌํจ๋ runtimeconfig๋ฅผ ์ฝ์ง ์๊ณ ๋์ ๋ด๋ถ์ ์ผ๋ก ์์ฑ์ ํ์ฉํ์ฌ ์ถ์ถ ์์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ ์ฌ์ ์ผ๋ก ํจ์ฌ ๋นจ๋ผ์ผ ํฉ๋๋ค.
@igloo15 : ๋ฒ๋ค์ ๋ด์ฉ์ ๋์คํฌ๋ก ์ถ์ถํ๋ ๊ฒ์ 2๋จ๊ณ ์ดํ์ ํน์ ์ฑ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฑ์ ๋ฒ๋ค์ ์ฌ์ฉ์ ์ง์ ๊ธฐ๋ณธ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ 5๋จ๊ณ๊น์ง ์ถ์ถํด์ผ ํฉ๋๋ค. ์ฑ์ ๋ฐํ์ ์ ํ์ผ๋ก ์ถ์ถํ ์ ์ ์๋ ์ ํ์ ์ฝํ
์ธ ํ์ผ์ ๋ฒ๋ค๋ก ๋ง๋ค ์ ์์ต๋๋ค.
์ถ๊ฐ ๊ฐ๋ฐ ๋จ๊ณ๋ก ์ด๋ํจ์ ๋ฐ๋ผ ์ด ์ค์ ์ ์ ์ฉ์ฑ์ด ๊ฐ์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ต์ ์ ์ถ๊ฐํ๋ฉด ํธํ์ฑ์ ์ํด ๋ชจ๋ ํ์ ๋ฒ์ ์์ ์ด ์ต์ ์ ์ ์งํด์ผ ํ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ง๊ธ์ ์ ์คํ ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค.
๋๋ runtimeconfig ์ต์ ๋ณด๋ค ์ถ์ถ ์์น๋ฅผ ๋น๋ ํ์ ์ค์ (์: msbuild-property)์ผ๋ก ๋ง๋๋ ๊ฒ์ด ๋ ์ฝ๊ณ ํจ์จ์ ์ธ wrt ๊ตฌํ์ ๋์ํฉ๋๋ค. ๊ฐ์ฌ ํด์.
์๋ ํ์ธ์, ์ด ์ฃผ์ ์ ๋ํด ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค.
.NET Framework 4.7.2(์:) ์์ฉ ํ๋ก๊ทธ๋จ์ ๋จ์ผ ์คํ ํ์ผ๋ก ํจํค์งํ๊ธฐ ์ํด ๋จ์ผ ํ์ผ ๋ฐฐํฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ์ด ๊ธฐ๋ฅ์ ์๋์ ๋๊น ์๋๋ฉด .NET Core ์ ํ๋ฆฌ์ผ์ด์ ๋ง ์ง์ํ๊ธฐ ์ํ ๊ฒ์ ๋๊น?
๋ ๋ฒ์งธ ์ง๋ฌธ์ ํฌ์ฅ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง์ ๊ดํ ๊ฒ์ ๋๋ค. ์คํ ํ์ผ์ด ์์ฑ๋๋ฉด ๋์ ํ๋ ์์ํฌ ๋ฐํ์์ด ์คํ ํ์ผ์ ๋ฒ๋ค๋ก ํฌํจ๋ฉ๋๊น? ์๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋์ ๋จธ์ ์ ์ฌ์ ์ค์นํด์ผ ํฉ๋๊น?
@gaviriar .NET Framework ์์ฉ ํ๋ก๊ทธ๋จ์ ์ง์ํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์, .NET Core ๋ฐํ์์ ์คํ ํ์ผ๋ก ๋ฌถ์ ์ ์์ต๋๋ค("์์ฒด ํฌํจ" ๊ฒ์๋ผ๊ณ ํจ).
@tomrus88 ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. .NET Framework ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๊ด๋ จํ์ฌ ์ฐธ์ผ๋ก ๋ถ๋๋ฌ์ด ์ผ์ ๋๋ค. .NET Framework ๋ฐํ์์ ์คํ ํ์ผ๋ก ๋ฒ๋ค๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ฌธ์์ ๊ด๋ จ ์์ ์น์ ์์ ๋๊ตฌ ๋ชฉ๋ก์ ๋ด ๋๋ค. ์์์ ์ ์ํ ์ฌ์ฉ ์ฌ๋ก์ ํนํ ๊ถ์ฅํ ์ ์๋ ๊ฒ์ด ์์ต๋๊น?
@gaviriar .NET Framework๋ Windows OS์ ์ผ๋ถ์ ๋๋ค. ์คํ ํ์ผ๋ก ๋ฒ๋ค๋งํ๋ ์ง์๋๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
@gaviriar ๋ฐํ์์ ๋ฒ๋ค๋ก ์ ๊ณตํด์ผ ํ๋ ๊ฒ์ .NET Core๋ก ์ ํํด์ผ ํ๋ ์ฃผ์ ์ด์ ์ค ํ๋์ ๋๋ค.
@jnm2 ๋ฐ @jkotas ๋ .NET ์ธ๊ณ์ ๋ํ ์ค๋ช ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. .NET Core๋ก ์ ํํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ .NET Framework๋ฅผ ๋์์ผ๋ก ํ๋ ๋ ๊ฑฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ ์์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ ์์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ด ์ฑ์ .NET Core๋ก ์ ํํ ์ ์๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๋๋ ๋ด ์ฑ์ด .NET Core์ด์ง๋ง ์ฌ์ ํ ๋ ๊ฑฐ์ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ ์์ฉํ ์ ์๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๊น?
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. .NET Framework๋ฅผ ๋์์ผ๋ก ํ๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ .NET Core์์๋ ์ ์๋ํฉ๋๋ค. .NET Core์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? ์๋ํ์ง ์๋ ๊ฒ์ ํ์ธํ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ ๋๊น์ง ์ ํํ ์ ์์ต๋๋ค.
๋๋ ์ค์ ๋ก ๊ทธ๊ฒ์ ์๋ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ฐฝ์ ํน์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์๋ํ์ง ์์ต๋๋ค. .NET Framework ๋์์ ๊ณ ์ํ๊ณ .NET Core์ ์ฌ๋ฏธ๋ฅผ ๋์น๋ ๊ฒ ์ธ์ ๋ค๋ฅธ ์ต์ ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค./
@gaviriar ์ด๊ฒ์ ์ฃผ์ ๊ฐ ์๋์ง๋ง Microsoft.Windows.Compatibility ๋ฅผ ์ค๋ช ํ๋ ์ ํํ ๋ชฉ์ ์ ์ํด .NET Core์ฉ Windows API๋ฅผ ์ ๊ณตํ๋ Windows ํธํ์ฑ NuGet ํจํค์ง๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น?
@gaviriar : ๋ช ๊ฐ์ง ์ถ๊ฐ ์ค๋ช :
์คํ ํ์ผ์ด ์์ฑ๋๋ฉด ๋์ ํ๋ ์์ํฌ ๋ฐํ์์ด ์คํ ํ์ผ์ ๋ฒ๋ค๋ก ํฌํจ๋ฉ๋๊น? ์๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋์ ๋จธ์ ์ ์ฌ์ ์ค์นํด์ผ ํฉ๋๊น?
์ด๊ฒ์ ๋น๋์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํ๋ ์์ํฌ ์ข ์(๋ฐํ์์ด ๋์์ ์ค์น๋จ) ๋ฐ ์์ฒด ํฌํจ(๋ฐํ์์ด ์ฑ๊ณผ ํจ๊ป ํจํค์ง๋จ) ์ฑ์ ๋ชจ๋ ๋จ์ผ ํ์ผ๋ก ๊ฒ์ํ ์ ์์ง๋ง .net core 3.0 ์ฑ๋ง ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์์ ๊ด๋ จ ์์ ์น์ ์์ ๋๊ตฌ ๋ชฉ๋ก์ ๋ด ๋๋ค. ์์์ ์ ์ํ ์ฌ์ฉ ์ฌ๋ก์ ํนํ ๊ถ์ฅํ ์ ์๋ ๊ฒ์ด ์์ต๋๊น?
.net ํ๋ ์์ํฌ์ ๊ฒฝ์ฐ ๋ด๊ฐ ์ ์ํ ์ ์๋ ์ต์์ ์๋ฃจ์ ์ ์ฑ์ด ์์ฒด์ ์ผ๋ก ํ์ผ ์ถ์ถ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์: ์ข ์์ฑ์ ์ฑ ๋ฐ์ด๋๋ฆฌ์ ๊ด๋ฆฌ ๋ฆฌ์์ค๋ก ํฌํจ์ํจ ๋ค์ ์์ ์ ๋ฆฌ์์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ถ์ถํฉ๋๋ค. ๋ฒ๋ค๋ง ๋ฐ ์ถ์ถ์ ์ํด ๋ฒ๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ netstandard๋ก ๊ตฌ์ถ๋์๊ธฐ ๋๋ฌธ์) ๊ด๋ฆฌ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์๋ฃจ์ ์ ๋๋ค.
@igloo15 ๋ฐ @swaroop-sridhar ์ฃผ์ ๊ฐ ์๋ ์ด๋ฌํ ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ธ์ ๊ฐ ๋ค๋ฅธ ์ฌ๋์ด ์ด ํ ๋ก ์ ์ฝ์ ๋ ์ ์ฉํ๋ค๊ณ ์๊ฐํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ๋น์ ์ด ๋์ ๊ณต์ ํ ์ต์ ์ ํ๊ฐํ๊ณ ๋ด ์ฌ์ฉ ์ฌ๋ก์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ด ๋ฌด์์ธ์ง ์๋ ค์ค ๊ฒ์ ๋๋ค.
๊ฐ์ฌ ํด์!
๋น ๋ฅธ ์ ๋ฐ์ดํธ!
์ด ๊ฐ๋จํ Hello World ์์ฉ ํ๋ก๊ทธ๋จ์ ํ ์คํธํ์ต๋๋ค. ๋จ์ผ ํ์ผ ์คํ ํ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋ก์ ํธ ๊ตฌ์ฑ์์ ๋ณผ ์ ์๋ฏ์ด ์์ฒด ํฌํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ .NET ์ฝ์ด ๋ฐํ์์ด ์ค์น๋์ง ์์ ์ Windows 7 ์ค์น์์ ์ด ์คํ ํ์ผ์ ์คํํ๋ ค๊ณ ํ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
Failed to load the DLL from [C:\Users\vagrant\AppData\Local\Temp\.net\HelloWorld
\muasjfkf.kyn\hostfxr.dll], HRESULT: 0x80070057
The library hostfxr.dll was found, but loading it from C:\Users\vagrant\AppData\
Local\Temp\.net\HelloWorld\muasjfkf.kyn\hostfxr.dll failed
- Installing .NET Core prerequisites might help resolve this problem.
https://go.microsoft.com/fwlink/?linkid=798306
๋ด๊ฐ ๋ณผ ์ ์๋ ๊ฒ์ ์ฑ์ dotnet publish /p:PublishSingleFile=true
๋๋ /p:PublishSingleFile=false
๋ก ๊ฒ์ํ๋ ๋น๋๊ฐ ์คํ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์์๋ ๋์์
๋๊น?
๋ฒ์ ๋จ๊ณ
ํ๋ก์ ํธ๋ฅผ ๊ฒ์ํ์ฌ HelloWorld.exe
์์ฑ
์คํ ํ์ผ์ .NET Core ๋ฐํ์์ด ์ค์น๋์ง ์์ Windows 7 ์ค์น์ ๋ณต์ฌํฉ๋๋ค.
HelloWorld.exe
์คํ
@gaviriar ๊ฒ์ํ ์์ ๋ฅผ ์๋ํ๋๋ฐ ์ ์๋ํ์ต๋๋ค.
์ฆ, ์ ์์ ์ผ๋ก ์คํ๋๋ HelloWorld์ฉ์ผ๋ก ์์ฒด ํฌํจ๋ ๋จ์ผ exe๋ฅผ ๋น๋ํ์ต๋๋ค.
๋ด๊ฐ ๋ณผ ์ ์๋ ๊ฒ์ dotnet publish /p:PublishSingleFile=true ๋๋ /p:PublishSingleFile=false๋ก ์ฑ ๊ฒ์๋ฅผ ๋น๋ํด๋ ์คํ ํ์ผ์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์์๋ ๋์์ ๋๊น?
์ด๊ฒ์ ํ์คํ ์์๋์ง ์์ต๋๋ค. ๋จ์ผ ํ์ผ ์ฑ์ ์ฝ 70MB์ฌ์ผ ํฉ๋๋ค(gitlab ํ์ด์ง์ ํ์๋ ๋๋ฒ๊ทธ ๋น๋์ ๊ฒฝ์ฐ). ๊ทธ๋ ์ง ์์ผ๋ฉด ์์์ ์ธ๊ธํ ๋๋ก ์ ํํ ์คํจํ ๊ฒ์ผ๋ก ์์๋๋ ์ผ๋ฐ ์ฑ ํธ์คํธ์ ๋๋ค. ๊นจ๋ํ ๋๋ ํ ๋ฆฌ์์ ๊ฒ์ํ๊ณ ์์ต๋๊น?
ํ๋ก์ ํธ ํ์ผ์ ๋ํ ๋ ๋ค๋ฅธ ์ฐธ๊ณ ์ฌํญ -- IncludeSymbolsInSingleFile
IncludeSymbolsInFile
๋ก ์๋ชป ์์ฑ๋ ์์ฑ ์ค ํ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๊ทํ๊ฐ ๋ณด๊ณ ํ ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ต๋๋ค.
@gaviriar ๋์ ๋ฐํ์ ์๋ณ์๋ ๋ฌด์์ ๋๊น? ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ์ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ hostfxr.dll์ ๋ฒ๋ค๋ก ์ ๊ณตํ์ง ์์ต๋๋ค. hostfxr.dll์๋ Windows 7 ์์คํ ์ ์๋ ํน์ vc++ ์ฌ๋ฐฐํฌ ๊ฐ๋ฅ ํจํค์ง๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์ฃผ์ด์ง ๊ฒฝ๋ก์ dll์ด ์๋์ง ํ์ธํ๊ณ ์ข ์์ฑ ์์ปค ๋๊ตฌ์์ ๋ก๋ํ๋ ค๊ณ ํ๋ฉด ์์กดํ๋ dll์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
IL ๋ณํฉ: ILMerge์ ๊ฐ์ ๋๊ตฌ๋ ์ฌ๋ฌ ์ด์ ๋ธ๋ฆฌ์ IL์ ํ๋๋ก ๊ฒฐํฉํ์ง๋ง ํ๋ก์ธ์ค์์ ์ด์ ๋ธ๋ฆฌ ID๋ฅผ ์์ต๋๋ค. ์ด๊ฒ์ ๋จ์ผ ํ์ผ ๊ธฐ๋ฅ์ ๋ชฉํ๊ฐ ์๋๋๋ค.
์ด์ ๋ธ๋ฆฌ ์ ์ฒด์ฑ์ ์๋ค
์ด๊ฒ์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
๋จ์ผ exe ์์ฒด ํฌํจ ๊ธฐ๋ฅ์ ๋ํด zip/unzip ๋๋ ๊ธฐํ ๋ฒ๋ค ์๋ฃจ์
์ ์ฌ์ฉํ๋ ๊ฒ์ ํญ์ ๋ฐ๋ํฉ๋๋ค.
์ด๊ฒ์ ๋ค์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
๋จ์ผ exe ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ!?? ๋๋ exe ํ์ผ์ด ๋๋ฌด ํฌ์ง๋ง Hello World๋ฐ์ ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
ํญ์ ๋ฌธ์ ๊ฐ ์๊ณ ํด๊ฒฐํด์ผ ํฉ๋๋ค. ์ ์ฒ ์ ํ๊ฒ ํ์ง ์๋์ง.
์ฌ์ค ์ฒ์๋ถํฐ IL-Merge์ ์ ์ฌํ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฌ์ค, ์ฌ๋๋ค์ ๋จ์ผ EXE์ ๊ทธ๋ ๊ฒ ์ง์ฐฉํ์ง ์์ต๋๋ค.
exe(1)+dll(1-2) ๋ ๊ด์ฐฎ์ง๋ง 400 ๋ง์ดํธ dll์ ์๋๋๋ค.
ppl์ ์ฝ๋๋ฅผ ์๋ฒ ๋์คํฌ๋ก ์ ๋ ์คํํ์ง ์๊ณ ์คํํ๊ณ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
์ฌ๋๋ค์ ๋ฐฐํฌ ๋น์ฉ์ ์ค์ด๊ณ ์ถ์ต๋๋ค.(๋์คํฌ, ๋ฉ๋ชจ๋ฆฌ, ๋์ญํญ ๋ฑ...)
์ด ๋ฌธ์ ๊ฐ 3.0 ๋ฆด๋ฆฌ์ค์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ์ด ๋ฌธ์ ์ ์ค๋ช ๋ ๋จ๊ณ๋ฅผ ํตํด ๋จ์ผ ํ์ผ ๊ธฐ๋ฅ์ ๊ตฌํ์ ์ถ์ ํ๋๋ก 3.0 ์ด์ ํ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
@sgf , ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ์์
์ด ํ์ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ํฌ๊ธฐ ์ถ์ ๊ธฐํ๋ ๋ ๊ฐ์ง ํํ๋ก ์ ๊ณต๋๋ฉฐ ๋จ์ผ exe์๋ง ๊ตญํ๋์ง ์์ต๋๋ค.
1) ๊ฒ์ํด์ผ ํ๋ ์ฝํ
์ธ ์ ์์ ์ค์
๋๋ค. ์๋ฅผ ๋ค์ด:
* ๋๊ตฌ์ ๊ฐ์ ILLinker๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ๋ฐ์ด๋๋ฆฌ, ์ด์
๋ธ๋ฆฌ ์ผ๋ถ ๋ฑ์ ํธ๋ฆฌ๋ฐํฉ๋๋ค.
์ด ์์
์ dotnet/coreclr#24092 ๋ฐ mono/linker#607๊ณผ ๊ฐ์ ๋ฌธ์ ๋ก ๋ณ๋๋ก ์ถ์ ๋ฉ๋๋ค.
* JITting์ด ์ง์๋์ง ์๋ "๊ฐ์๋ ๊ธฐ๋ฅ" ๋ชจ๋๋ฅผ ๊ฐ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์กฐ์น๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
2) ๋จ์ผ ํ์ผ ๊ฒ์์ ์์ถ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
์์ ๊ธฐ๋ฅ์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋จ์ผ ํ์ผ(๋ฐ ๋จ์ผ ํ์ผ์ด ์๋) ์ฑ์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด HelloWorld ์ฝ์ ์ฑ์ ๊ฒฝ์ฐ
์ผ๋ฐ ๊ฒ์ ํฌ๊ธฐ = 67.4MB
์๋ฆฐ ํฌ๊ธฐ = 27MB
ํธ๋ฆฌ๋ฐ, ๋จ์ผ ํ์ผ, ์์ถ(ํ๋กํ ํ์
์ ํตํด) = 12MB
@swaroop-sridhar ์์ฉ ํ๋ก๊ทธ๋จ ๋ด์์ ๋จ์ผ ํ์ผ exe์ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
Assembly.GetExecutingAssembly().Location
๋ฅผ ์ฌ์ฉํ๋ฉด \AppData\Local\Temp.net์ ์ถ์ถ ๋๋ ํ ๋ฆฌ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
@ chris3713 ํ์ฌ exe ์์น์ ์ก์ธ์คํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ API์ ๋ํ PInvoke-ing์
๋๋ค. ์: GetModuleFileNameW
(Null, <buffer>, <len>)
@ chris3713 ํ์ฌ exe ์์น์ ์ก์ธ์คํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ API์ ๋ํ PInvoke-ing์ ๋๋ค. ์:
GetModuleFileNameW
(Null, <buffer>, <len>)
๋๋ถ์ Process.GetCurrentProcess().MainModule.FileName
๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
PublishSingleFile=true๋ก ๊ฒ์๋ Windows ์๋น์ค๋ก asp .net ํต์ฌ ์์ ์/์น API์์ ์ ๋๋ก ์๋ํฉ๋๋ค.
์๋น์ค๋ฅผ ๋ฑ๋กํ๊ณ sc create testwk binPath="[...]/MyAspNetCoreWorker.exe"
then sc start testwk
์ ํตํด ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฑ๊ณต ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
[...]\bin\publish\x64>sc start testwk
SERVICE_NAME: testwk
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x7d0
PID : 5060
FLAGS :
[...]\bin\publish\x64>sc stop testwk
SERVICE_NAME: testwk
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
๋ฐ๋์ด ๋ฌถ์ธ ์คํ
์ด์ง 2๊ฐ ๋๋ฌด ๊ธฐ๋๋๋ค์๐
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , Stage 2๋ ์ฌ์ ํ .Net Core 3.0์ ์ผ๋ถ๋ก ๊ณํ๋ฉ๋๊น?
๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. .net core์ ํผ๋ธ๋ฆฌ์ฑ ์๋น์ค๊ฐ ์ด์ ์ ๋ง ๊ฐ๋จํด์ก์ต๋๋ค ๐
CoreRT: ( 2.5mb )
zip ํดํน ์์ , ์จ๊ฒจ์ง ๋น์ฉ ์์, ์์ง์ ํ์ํ ๊ฒ๋ง ํฌํจ, csproj ๊ตฌ์ฑ(๋ฐ์ฌ)์ ์ฌ์ฉํ์ฌ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ ๋นํ์ฑํ
์ด๊ฒ์ด dotnet์ด ํ์๋ก ํ๋ ๊ฒ์ ๋๋ค. GO์ ๊ฒฝ์ํ๊ณ ํฌ๊ธฐ์ ์ฑ๋ฅ ๋ฉด์์ ๋ชจ๋ ๋ฅ๊ฐํฉ๋๋ค.
๊ด์ฌ ์๋ ์ฌ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ธํ์ธ์.
https://github.com/dotnet/corert
MonoGame์ ๋ํ ์ํ์ด ์์ต๋๋ค.
https://github.com/dotnet/corert/tree/master/samples/MonoGame
์ ์๋ ์๋ฃจ์ ์ค ์ด๋ ๊ฒ๋ ์ด ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. CoreRT๋ ์ง์ ์ผ๋ก ์ต๊ณ ์ ๋๋ค. MS๋ ๊ทธ๊ฒ์ ์ง์คํ์ง ์์์ผ๋ก์จ ํฐ โโ์ค์๋ฅผ ํ๊ณ ์์ต๋๋ค.
dotnet-sdk-3.0.100-preview8-013656-osx-x64.tar.gz
๋ฅผ ์ฌ์ฉํ์ฌ macOS์์ ์ด ๊ธฐ๋ฅ์ ํ
์คํธํ์ต๋๋ค. ๋๋ฒ๊ทธ์์ ๋ฆด๋ฆฌ์ค๋ก ๋๋ ๊ทธ ๋ฐ๋๋ก ๊ตฌ์ฑ์ ์ ํํ๊ณ ๋ค์ ๋น๋ํ๋ฉด ์คํ ํ์ผ ํฌ๊ธฐ์ 10MB๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ์ด์ ๊ตฌ์ฑ์ผ๋ก ๋ค์ ์ปดํ์ผํด๋ bin
๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ์ง ์๋ ํ ์ด๋ฌํ ํฌ๊ธฐ ์ฆ๊ฐ๋ ๋ณต๊ตฌ๋์ง ์์ต๋๋ค.
mkdir /tmp/dotnet-preview8
curl -s https://download.visualstudio.microsoft.com/download/pr/a974d0a6-d03a-41c1-9dfd-f5884655fd33/cf9d659401cca08c3c55374b3cb8b629/dotnet-sdk-3.0.100-preview8-013656-osx-x64.tar.gz | tar -xvz -C /tmp/dotnet-preview8
export PATH=/tmp/dotnet-preview8:$PATH
dotnet new console -o /tmp/myApp
pushd /tmp/myApp
# publish with Debug
dotnet publish /p:PublishSingleFile=true,RuntimeIdentifier=osx-x64,Configuration=Debug -o bin/a/b/c/d
bin/a/b/c/d/myApp
# outputs: Hello World!
du -sh bin/a/b/c/d
# outputs 70M bin/a/b/c/d
# publish with Release
dotnet publish /p:PublishSingleFile=true,RuntimeIdentifier=osx-x64,Configuration=Release -o bin/a/b/c/d
du -sh bin/a/b/c/d
# outputs: 80M bin/a/b/c/d
# publish with Debug again
dotnet publish /p:PublishSingleFile=true,RuntimeIdentifier=osx-x64,Configuration=Debug -o bin/a/b/c/d
# still outputs: 80M bin/a/b/c/d
๋น๋ ์ค์ ์ ๋ณ๊ฒฝํ์ง ์์๋ ์ด๊ธฐ ๋น๋ ์ดํ์ Rebuild target( /t:Rebuild
)์ ํธ์ถํ๋ฉด ์ถ๋ ฅ ํฌ๊ธฐ๊ฐ ์ปค์ง๋๋ค.
@am11 ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์งํ๋ ๊ฒ์๋ ์๋ ค์ง ๋ฌธ์ ์ ๋๋ค(cc @nguerrera).
.Net Core 3 ๋ฏธ๋ฆฌ๋ณด๊ธฐ 8 ์ดํ๋ก ๋จ์ผ ํ์ผ ๊ฒ์ ์ฑ์ ์์ํ ์ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ทฐ์ด์ ๋ค์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
์ ๋ Windows Server 2019๋ฅผ ์ฌ์ฉ ์ค์ ๋๋ค.
ํธ์ง: ์ด ์ค๋ฅ๋ .Net Core SDK Preview 7์ .Net Core SDK Preview 8๋ก ์ ๋ฐ์ดํธํ ํ์ ๋ฐ์ํ์ต๋๋ค. ์๋ฒ๋ฅผ ์ฌ๋ถํ ํ ํ ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ค์ ์์ํ ์ ์์ต๋๋ค.
@Safirion ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์ ๊ด๋ จ๋ ๊ธฐ๋ณธ ๋ด๋ถ ํ์์ ๋ณ๊ฒฝํ์ต๋๋ค. ํ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์ ์ถ๋ ฅ์ ๊ฑด๋๋ฐ๊ณ ๋ค๋ฅธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ก ๋น๋ํ ์ ์์ต๋๋ค. ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 8๊ณผ 9 ์ฌ์ด์๋ ํด์ ์๊ฐ์ด ์์ต๋๋ค.
Linux์์ ๊ธฐ๋ณธ ์ถ์ถ ๊ฒฝ๋ก๋ /var/tmp/.net์ธ ๊ฒ ๊ฐ์ต๋๋ค. AWS ๋๋ค์์๋ /var ๊ฒฝ๋ก๋ฅผ ์ธ ์ ์์ผ๋ฏ๋ก ํด๋น ํด๋๋ฅผ ๋ง๋๋ ๋ฐ ์คํจํฉ๋๋ค. DOTNET_BUNDLE_EXTRACT_BASE_DIR์ ์ค์ ํ์ง ์๊ณ ๊ธฐ๋ณธ ์คํ ๊ฐ๋ฅ์ฑ์ ์ป์ผ๋ ค๋ฉด ์ด๊ฒ์ /tmp/.net์ผ๋ก ๋ณ๊ฒฝํ ๊ฒ์ ์ ์ํฉ๋๋ค. ๋๋ ๊ณตํต ์์น(/var/tmp, /tmp, ๋ฐ์ด๋๋ฆฌ์ ๋์ผํ ๋๋ ํ ๋ฆฌ ๋ฑ)์์ ์ฌ๋ฌ ๋ฒ ์๋ํด์ผ ํ ์๋ ์์ต๋๋ค.
@stevemk14ebr ํด๋น ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํด๋น ์์ ์ ์ถ์ ํ๊ธฐ ์ํด ์ ๋ฌธ์ ๋ฅผ ์ ์ถํ ์ ์์ต๋๊น? https://github.com/dotnet/core-setup
@jeffschwMSFT https://github.com/dotnet/core-setup/issues/7940
@jeffschwMSFT ๋์ผํ ์ค๋ฅ๊ฐ .Net Core P9์์ RC1๋ก ์ ๋ฌ๋ ๋ ๋ฐ์ํ์ต๋๋ค.
Description: A .NET Core application failed.
Application: Setup.exe
Path: C:\Users\Administrateur\Desktop\Setup.exe
Message: Failure processing application bundle.
Failed to determine location for extracting embedded files
A fatal error was encountered. Could not extract contents of the bundle
@Safirion ์ด ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ์ฌํํ๊ธฐ ์ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ๋ง๋ค ์ ์์ต๋๊น? https://github.com/dotnet/core-setup
cc @swaroop-sridhar
@Safirion ์ฌํ ์ง์นจ์ ๋ณด๋ด ์ฃผ์๊ฒ ์ต๋๊น? ์ด ์คํจ๊ฐ ๊ฒฐ์ ์ ์
๋๊น?
@jeffschwMSFT ๊ฐ ์์์ ์ ์ํ ๋๋ก core-setup repo์ ๋ฌธ์ ๋ฅผ ์ ์ถํ์ญ์์ค.
๋๋ ์ด๊ฒ์ ๋ณด์๊ณ ์ด๊ฒ์ ์ฑ์ด ์์ ๋๋ ํ ๋ฆฌ์ ์ก์ธ์ค ํ ์์๋ ํ๊ฒฝ์์ ์คํ๋๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ด๊ฐ ์ด๋ ๊ฒ ํ๋ฉด:
set "TMP=wrong_path"
myapp.exe
๊ทธ๊ฒ์ ์คํจํ๋ค
Failure processing application bundle.
Failed to determine location for extracting embedded files
A fatal error was encountered. Could not extract contents of the bundle
๋ฒ๋ค์ GetTempPath
win32 API๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ต๋๋ค. env๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ณ์ TMP
, TEMP
๋ฑ์ด ๋ค๋ฐ๋ฆ
๋๋ค. ๊ฐ์ด ์๋ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ์๋ชป๋ ๊ฒฝ๋ก๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์คํจํฉ๋๋ค.
์์ ๊ฒฝ๋ก๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์๋์ง ํ์ธํ๊ฑฐ๋ ์ถ์ถ์ ์ํํ๋ ค๋ ์์น๋ก DOTNET_BUNDLE_EXTRACT_BASE_DIR
๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
@Safirion ์ฌํ ์ง์นจ์ ๋ณด๋ด ์ฃผ์๊ฒ ์ต๋๊น? ์ด ์คํจ๊ฐ ๊ฒฐ์ ์ ์ ๋๊น?
@jeffschwMSFT ๊ฐ ์์์ ์ ์ํ ๋๋ก core-setup repo์ ๋ฌธ์ ๋ฅผ ์ ์ถํ์ญ์์ค.
.Net Core๋ฅผ RC1๋ก ์ ๋ฐ์ดํธํ๊ณ ์๋ฒ๋ฅผ ๋ค์ ์์ํ ํ ์ด ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค. (RC1์ ์ ๊ฑฐํ๊ณ RC1๋ก ๋ค์ ์ ๊ทธ๋ ์ด๋ํ๊ธฐ ์ํด Preview 9๋ฅผ ๋ค์ ์ค์นํ๋ ค๊ณ ์๋ํ์ง๋ง ์ด๋ฒ์๋ ๋ด ์ฑ์ด ์ ์คํ๋ฉ๋๋ค)
์ด ์ค๋ฅ๋ SDK 3.0 P7์์ SDK 3.0 P8๋ก, SDK 3.0 P9์์ SDK 3.0 RC1๋ก ์ด๋ํ ๋ ๋ฐ์ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์๋ฒ๋ฅผ ๋ค์ ์์ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
RC1์ผ๋ก ์
๊ทธ๋ ์ด๋ํ์ ๋ .Net Core Windows ์๋น์ค(์์คํ
์์ ์์ํ๊ธฐ ๋๋ฌธ์ C:\Windows\Temp\.net
ํด๋๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ถํ๋ ์์
์)์ .Net Core WPF ์ฑ(์ฌ์ฉ์ ์์ ์ธ์
์คํฌ๋ฆฝํธ๋ก ์์)์ ์ฌ์ฉํฉ๋๋ค. ์ด ์ค๋ฅ๋ .Net Core SDK๋ฅผ ์ค์นํ๋ ๋์ ์คํ ์ค์ธ .Net core ์์
์๋ก ์ธํด ๋ฐ์ํ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค...
๋ฐํ์์ด ์๋ SDK๋ฅผ ์ค์นํ๋ฏ๋ก 3๊ฐ์ .Core ๋ฐํ์(asp.net ์ฝ์ด, ๋ฐ์คํฌํฑ .net ์ฝ์ด ๋ฐ ์ฝ์ด)์ ๋์์ ๋ฐฐํฌํด์ผ ํ๋ฉฐ https://dot.net ์์ "์ ์ฒด ๋ฐํ์"์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ค์น ํ๋ก๊ทธ๋จ"(Desktop Runtime ์ค์น ํ๋ก๊ทธ๋จ๋ ์ฐพ์ง ๋ชปํด์ ์ ํ์ ์ฌ์ง๊ฐ ์์ต๋๋ค)...
์ ๋ฐ์ดํธ: ์ ๊ฒฝ ์ฐ์ง ๋ง๊ณ ๋ฌธ์ ๋ฅผ ์ฐพ์์ต๋๋ค.
์๋ , ๋น์ ์ ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๊ตฌ์ฑ ํ์ผ(์: App.config)์ ์ด๋ป๊ฒ ๋ฐฐํฌ๋์ด์ผ ํฉ๋๊น? ์ ํํ ๋ช ๋ น ์ํ์ค๋ฅผ ์ฌ์ฉํ์ฌ RHEL 7.6์์ ์ฝ์ ์ฑ์ ๋ฐฉ๊ธ ๊ตฌ์ถํ์ต๋๋ค.
dotnet restore -r win-x64 --configfile Nuget.config
dotnet build Solution.sln --no-restore -c Release -r win-x64
dotnet publish --no-build --self-contained -c Release -r win-x64 /p:PublishSingleFile=true -o ./publish ./SomeDir/SomeProj.csproj
์ฌ๊ธฐ์ SomeProj.csproj๋ <PublishTrimmed>true</PublishTrimmed>
๋ฅผ ํ์ฑํํ์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ก SomeProj.exe
๋ฐ SomeProj.pdb
2๊ฐ์ ํ์ผ์ ์ป์์ง๋ง SomeProj.config
๋ ์๋๋๋ค.
@catlion ์ด *.config ํ์ผ์ ๋ํ ๊ธฐ๋ณธ ๋์์ ๊ฐ๋๋ก ํ๋ ค๋ฉด ๋ฒ๋ค์์ ์ ์ธํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋น pdb ํ์ผ์ ๋ฒ๋ค์ ํฌํจ๋ฉ๋๋ค.
๋ค์์ ๋จ์ผ ํ์ผ์์ ๊ตฌ์ฑ์ ์ ์ธํฉ๋๋ค.
<ItemGroup>
<Content Update="*.config">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>
https://github.com/dotnet/designs/blob/master/accepted/single-file/design.md#build- ์์คํ ์ธํฐํ์ด์ค
@morganbr
์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
Windows์ฉ ํค๋๋ฆฌ์ค ๋ฐ WPF ์ฑ
์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
์, ์ฐ๋ฆฌ๋ ๋ค์ํ ๊ธฐ๋ณธ dll, ์ฐ๋ฆฌ๊ฐ ์ ์ดํ ์ ์๋ ์ผ๋ถ ํ์ฌ ํญ๋ชฉ, ๋ค๋ฅธ ํ์ ๋ด๋ถ ํญ๋ชฉ์ P/Invokeํฉ๋๋ค.
์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
์, ํ์ง๋ง CompilerServices๋ฅผ ์ฌ์ฉํ์ฌ ์์ค์์ ์ปดํ์ผํฉ๋๋ค.
๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
๋ค
์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
์, ์ ํฌ ์ฑ์ ์ผ๋ฐ์ ์ผ๋ก ์ฅ๊ธฐ๊ฐ ์ด๋ ค ์์ต๋๋ค.
ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
์, ๋ช ๋ถ ์ ๋ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
๋ค
@john-cullen ๊ฐ์ฌํฉ๋๋ค
์ถ์ถ ์์ด ๋จ์ผ ํ์ผ ์ฑ์ ์คํํ๋ ํ๋กํ ํ์ ๊ตฌํ์ ์ํด ๋ช ๊ฐ์ PR์ ๋จ์ผ exe ๋ถ๊ธฐ์ ์ฐ๊ฒฐํฉ๋๋ค( 4๋จ๊ณ ).
https://github.com/dotnet/coreclr/pull/26197
https://github.com/dotnet/coreclr/pull/26504
https://github.com/dotnet/coreclr/pull/26697
https://github.com/dotnet/coreclr/pull/26904
@morganbr ์ ๋ํ ๋ต๋ณ๋ ์ ๊ณตํ๊ฒ ์ต๋๋ค. :) ์์ง๋ ์ด ๊ธ์ ์ฝ๊ณ ๊ณ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. :)
- ์ด๋ค ์ข ๋ฅ์ ์ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ์๊ฒ ์ต๋๊น? (์: Windows์ WPF? Linux Docker ์ปจํ ์ด๋์ ASP.NET? ๋ค๋ฅธ ๊ฒ?)
๋ค์ํ ํ๋ซํผ(Linux, MacOS, Windows)์์ ์คํ๋๋ ํ ์คํธ ์ด๋๋ฒค์ฒ(์ฝ์ ์ฑ)
- ์ฑ์ (.NET์ด ์๋) C++/๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๊น?
์๋์.
- ์ฑ์ด ์๋ ์ฑ ๋น๋์ ํฌํจํ์ง ์์ ํ๋ฌ๊ทธ์ธ์ด๋ ๊ธฐํ ์ธ๋ถ dll์ ๋ก๋ํฉ๋๊น?
ํ์ฌ๋ ์๋์ง๋ง ์ฅ๊ธฐ์ ์ผ๋ก ํน์ ์๋๋ฆฌ์ค๋ฅผ ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ณด์ ์์ ์ฌํญ์ ํตํฉํ๊ธฐ ์ํด ์ฑ์ ๋ค์ ๋น๋ํ๊ณ ์ฌ๋ฐฐํฌํ์๊ฒ ์ต๋๊น?
๋ค.
- ์ฑ์ด 200-500ms ๋ ๋๋ฆฌ๊ฒ ์์๋๋ฉด ์ฌ์ฉํ์๊ฒ ์ต๋๊น? 5์ด ์ ๋?
๋ค.
(์ฌ์ฉ์์๊ฒ ์ด๋ค ์ผ์ด ์ผ์ด๋๊ณ ์์์ ์๋ฆฌ๊ธฐ ์ํด ์ผ๋ถ ํ
์คํธ ์ถ๋ ฅ์ด๋ ๋ฉ์์ง ์์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ข์ ๊ฒ์
๋๋ค)
- ์ฑ์ ํ์ฉ๋๋ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น? 5MB? 10? 20? 50? 75? 100?
10-20MB
- ํฌ๊ธฐ ๋ฐ/๋๋ ์์ ์๊ฐ์ ์ต์ ํํ๊ธฐ ์ํด ๋ ๊ธด ๋ฆด๋ฆฌ์ค ๋น๋ ์๊ฐ์ ํ์ฉํ์๊ฒ ์ต๋๊น? ๊ฐ์ฅ ์ค๋ ๋ฐ์ ๋ค์ผ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? 15์ด? 30 ์ด? 1 ๋ถ? 5 ๋ถ?
1๋ถ ์ด์์ ๊ด์ฐฎ์ต๋๋ค.
- ์ฑ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ ์ ์ํํ์๊ฒ ์ต๋๊น?
ํน์.
@lenardg๋, ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค.
์ด ๋ฌธ์ ๋ .NET Core 3.0 ๋จ์ผ ํ์ผ ๋ฐฐํฌ ๊ธฐ๋ฅ์ ์งํ ์ํฉ์ ์ถ์ ํฉ๋๋ค.
๋ค์์ ๊ธฐ๋ฅ์ ๋ํ ๋์์ธ ๋ฌธ์ ๋ฐ ์ค๋น ๊ณํ์ ๋๋ค.
์ด๊ฒ์ ๋ฐฐํฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์
๋๋ค.
ํนํ ๊ทธ๋ฃน ์ ์ฑ
์ ํตํด ํ๊ฒฝ์ด ์๊ฒฉํ๊ฒ ์ ์ด๋๋ ์ํฐํ๋ผ์ด์ฆ ๋ฐฐํฌ์ ๊ฒฝ์ฐ ์ค๊ณ์ ๋ํ ๊ฐ์ ์ฌํญ์ด ๊ฑฐ์ ์์ต๋๋ค.
์กฐ๊ฑด๋ถ๋ก ๋จ์ผ ์คํ ํ์ผ์ ์์ถํ๋ฉด์ ์์ถํ ์ ์์ต๋๊น?
์ฆ, Wrap๊ณผ ๊ฐ์ ๋ก์ง์ ์ถ๊ฐํ๋ฏ๋ก ๋ค๋ฅธ ๋๊ตฌ ํตํฉ์ด ํ์ํ์ง ์์ต๋๋ค.
์์ถํ๋ฉด ๋ ์์ exe๊ฐ ์์ฑ๋ฉ๋๋ค.
exe๋ฅผ ์์ํ๋ฉด ๋ด์ฉ์ด ์์ ํด๋๋ก ํ์ฅ๋ฉ๋๋ค. ๋น์ฌ ์ ํ์ ๊ฒฝ์ฐ ํน์ ์ฌ์ฉ์ ์ฌ์ดํธ์์ ํด๋ผ์ด์ธํธ ์์คํ ์ด ์๊ฒฉํ๊ฒ ์ ์ด๋๋ฉฐ ์์ ํด๋ ๋๋ %userprofile% ์์น์์ ์คํ ํ์ผ์ ์คํํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
์ถ์ถํ ์์น๋ฅผ ์ง์ /์ ์ดํ ์ ์๊ฑฐ๋ ".\extract" ๋๋ ๊ทธ๋ฌํ ํ์ ํด๋์์ '์ธํ๋ ์ด์ค ์ถ์ถ'์ด ๋ ์ ์์ต๋๊น?
์ด๋ฅผ ํตํด ๊ทธ๋ฃน ์ ์ฑ
์ค์๋ ๋ฌผ๋ก ๋จ์ผ exe ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@RajeshAKumar https://github.com/dotnet/core-setup/issues/7940
์ค๋ @Safirion ๊ณผ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ณด์์ต๋๋ค. ์ฐ๋ถํฌ๋ฅผ ๋์์ผ๋ก ํ๋ dotnetcore 3.0 ์ฑ์ด ์๊ณ ๋ด Synology ์๋ฒ์์ ์คํํ์ต๋๋ค. ์ถ์ถ๋์ง ์์ต๋๋ค. "์น๋ช ์ ์ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฒ๋ค์ ๋ด์ฉ์ ์ถ์ถํ ์ ์์ต๋๋ค"๋ผ๋ ์ค๋ฅ์ ํจ๊ป ๊ณ์ ์คํจํ์ต๋๋ค. ์ฌ๋ฌ ๋ฒ ์ฌ๊ฑดํ์ง๋ง ๋๊ฐ์ต๋๋ค. ํธ์คํธ๋ฅผ ์ฌ๋ถํ ํ ํ ๋ค์ ์ ์์ ์ผ๋ก ์๋ํ์ต๋๋ค.
์ฌ๊ธฐ์ ํ์ผ ์ ๊ธ์ด๋ ๋ฌด์ธ๊ฐ๊ฐ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋๋ฒ๊น ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฐ์ด ์๋์ง ์ดํดํ๋ ๋ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
@RajeshAKumar dotnet /core-setup#7940
ํด๋น ๋งํฌ๊ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๊ฒ์ ๋จ์ง ์์ ์ถ์ถ์ ๋ํด ์ด์ผ๊ธฐํฉ๋๋ค. ์ ๋ ์์ 3๊ฐ์ง ์ฌํญ์ ๋์ดํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค ํ๋์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ ์ํ์ต๋๋ค. ๋๋จธ์ง 2๊ฐ๋ ์ ๋ชจ๋ฅด๊ฒ ์
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค ํ๋์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ ์ํ์ต๋๋ค. ๋๋จธ์ง 2๊ฐ๋ ์ ๋ชจ๋ฅด๊ฒ ์
์์ ์ถ์ถ๋ฌผ์ ์ฐ๋ฆฌ์๊ฒ ํจ๊ณผ๊ฐ ์์ผ๋ฏ๋ก ํด๊ฒฐ์ฑ
์ด ์๋๋๋ค. ๋ด ์์ฒญ์ ์ถ์ถ ์์น๋ฅผ ์ ์ดํ๊ฑฐ๋ ํ์ ํด๋๋ก ์ถ์ถํ ์ ์๋ ๊ธฐ๋ฅ์ด์์ต๋๋ค.
๋ง์ ํด๋ผ์ด์ธํธ ์ปดํจํฐ์ IT ๊ด๋ฆฌ์๋ ์์ ํด๋๋ ์ฌ์ฉ์ ํ๋กํ์์ ์คํ ํ์ผ์ ์คํํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
๊ฒ์๋ฌผ์ ๋ค์ ์ฝ์ผ์ญ์์ค. https://github.com/dotnet/coreclr/issues/20287#issuecomment -542497711
@RajeshAKumar : ํธ์คํธ๊ฐ ๋ฒ๋ค์ ๋ด์ฉ์ ์ถ์ถํ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ฅผ ์ ์ดํ๋๋ก DOTNET_BUNDLE_EXTRACT_BASE_DIR
๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ https://github.com/dotnet/designs/blob/master/accepted/single-file/extract.md#extraction -location์ ์ฐธ์กฐํ์ญ์์ค.
@RajeshAKumar : ๋ฒ๋ค๋ ๋จ์ผ exe ์์ถ์ .net 5์์ ๊ณ ๋ ค ์ค์ธ ๊ธฐ๋ฅ์ ๋๋ค. https://github.com/dotnet/designs/blob/master/accepted/single-file/design.md#compression
์ง๊ธ์ ์์ฑ๋ ๋จ์ผ exe๋ฅผ ์์ถํ๋ ค๋ฉด ๋ค๋ฅธ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
@RajeshAKumar ์๋ช ๊ณผ ๊ด๋ จํ์ฌ ๊ฒ์๋๊ณ ๋จ์ผ exe๋ก ๋ฒ๋ค๋๋ ๋ชจ๋ ํ์ผ/๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋ช ํ ์ ์์ต๋๋ค. ํธ์คํธ๊ฐ ํฌํจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋์คํฌ๋ก ์ถ์ถํ๋ฉด ๊ฐ๋ณ ํ์ผ ์์ฒด์ ์๋ช ๋ฉ๋๋ค. ์ธ๊ธํ ๋๋ก ๋น๋๋ ๋จ์ผ ํ์ผ ์์ฒด์ ์๋ช ํ ์๋ ์์ต๋๋ค.
๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๊น?
@Webreaper ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์๋ค๋ฉด COREHOST_TRACE
๋ฅผ ์ผ๊ณ ( COREHOST_TRACE
ํ๊ฒฝ ๋ณ์๋ฅผ 1
๋ก ์ค์ ) ์ฑ์ ์คํํ๊ณ ์์ฑ๋ ๋ก๊ทธ๋ฅผ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ฐ์ฌ ํด์.
@swaroop-sridhar
์ด๊ฒ์ ๋งค์ฐ ๋ฉ์ง ๊ธฐ๋ฅ์
๋๋ค. ์ด๋ค dotnet ๋ฆด๋ฆฌ์ค์์ ์ธ์ ๋ค๋ฅธ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๊น?
@RajeshAKumar : ํธ์คํธ๊ฐ ๋ฒ๋ค์ ๋ด์ฉ์ ์ถ์ถํ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ฅผ ์ ์ดํ๋๋ก
DOTNET_BUNDLE_EXTRACT_BASE_DIR
๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ https://github.com/dotnet/designs/blob/master/accepted/single-file/extract.md#extraction -location์ ์ฐธ์กฐํ์ญ์์ค.
swaroop-sridhar๋, ๊ฐ์ฌํฉ๋๋ค.
@RajeshAKumar ์๋ช ๊ณผ ๊ด๋ จํ์ฌ ๊ฒ์๋๊ณ ๋จ์ผ exe๋ก ๋ฒ๋ค๋๋ ๋ชจ๋ ํ์ผ/๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋ช ํ ์ ์์ต๋๋ค. ํธ์คํธ๊ฐ ํฌํจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋์คํฌ๋ก ์ถ์ถํ๋ฉด ๊ฐ๋ณ ํ์ผ ์์ฒด์ ์๋ช ๋ฉ๋๋ค. ์ธ๊ธํ ๋๋ก ๋น๋๋ ๋จ์ผ ํ์ผ ์์ฒด์ ์๋ช ํ ์๋ ์์ต๋๋ค.
๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๊น?
'์ปดํ์ผ'์ ์ค๋จํ๊ณ ๋ถ๋ถ์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ด๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
ํ์ฌ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์๋ช
ํ ์ ์์ต๋๋ค.
publishargs=-c ๋ฆด๋ฆฌ์ค ์ค์ /p:PublishSingleFile=True /p:PublishTrimmed=True /p:PublishReadyToRun=false
๋ํธ๋ท ๊ฒ์ -r win-x64 -o bin\Output\Win64 %publishargs%
์์ ์ปดํ์ผ๊ณผ ํธ๋ฆผ ๋ฐ ํจํค์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊นจ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ
๋๋ค.
๊ทํ์ ์ ๊ทผ ๋ฐฉ์์ ์ด์์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ปดํ์ผํ๊ณ ์๋ช
ํ ๋ค์ ์ต์ข
์ ์ผ๋ก ๊ฒ์ํด์ผ ํฉ๋๋ค.
@Webreaper ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์๋ค๋ฉด
COREHOST_TRACE
๋ฅผ ์ผ๊ณ (COREHOST_TRACE
ํ๊ฒฝ ๋ณ์๋ฅผ1
๋ก ์ค์ ) ์ฑ์ ์คํํ๊ณ ์์ฑ๋ ๋ก๊ทธ๋ฅผ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ฐ์ฌ ํด์.
๊ฐ์ฌ ํด์. ์ง๊ธ์ ์ฌ๋ถํ ์ ํด์ ์์ด์ก์ง๋ง ๋ค์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ๋๋นํด ๋๋ ๊ฒ์ด ์ข์ต๋๋ค!
@RajeshAKumar ๋ฒ๋ค๋ง ์ง์ ์ ์คํ๋๋ ๋์์ ์๋ช
์ ํ๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
PublishReadyToRun
๋ฐ PublishTrimmed
๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ํ์ค Afterbuild
๋๋ BeforePublish
๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
BundlePublishDirectory
์ง์ ์ ์คํ๋๊ณ ์๋ช
์ ์ํํ๋ ๋์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
@swaroop-sridhar
์ด๊ฒ์ ๋งค์ฐ ๋ฉ์ง ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ค dotnet ๋ฆด๋ฆฌ์ค์์ ์ธ์ ๋ค๋ฅธ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๊น?
@etherealjoy ๊ฐ์ฌํฉ๋๋ค. ๋ฒ๋ค์์ ์ง์ ์คํ๋๋ ๋จ์ผ ํ์ผ์ ๋ํ ์์ ์ด ์งํ ์ค์ด๋ฉฐ .net 5 ๋ฆด๋ฆฌ์ค๋ฅผ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
@RajeshAKumar ๋ฒ๋ค๋ง ์ง์ ์ ์คํ๋๋ ๋์์ ์๋ช ์ ํ๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
PublishReadyToRun
๋ฐPublishTrimmed
๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ํ์คAfterbuild
๋๋BeforePublish
๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
BundlePublishDirectory
์ง์ ์ ์คํ๋๊ณ ์๋ช ์ ์ํํ๋ ๋์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
๋น์ ์ด ์ค ๋งํฌ๋ MS Build ์์
์ฒ๋ผ ๋ณด์
๋๋ค.
"BundlePublishDirectory"์ ๋ํ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ด๋ป๊ฒ ์์ฑํฉ๋๊น? ์ด๊ฒ์ Studio/Project props/Build Events์ ์์ต๋๊น, ์๋๋ฉด ์ฒ์๋ถํฐ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๊น?
@RajeshAKumar ์ด ๊ฒฝ์ฐ ์ฌ์ ๋น๋ ์ฌํ ๋น๋ ์ด๋ฒคํธ๋ณด๋ค ๋ ์ธ๋ถํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ํ๋ก์ ํธ ํ์ผ์ ํธ์งํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
<Target Name="Sign" BeforeTargets="BundlePublishDirectory">
...
</Target>
dotnet pack
๋ช
๋ น์ ์์๋๋ ๋์์ ๋ฌด์์
๋๊น? ๋ก์ปฌ nuget ์ ์ฅ์์ ํธ์๋ ๋จ์ผ exe ์ํฐํฉํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด์ฝ๋ฆฟ์ผ๋ก ์ค์นํ๋ ค๊ณ ํ๋ฉด ํ๋ก์ ํธ ํ์ผ์ ๋์ด๋ ๋ชจ๋ nuget dep๋ฅผ ๋ณต์ํ๋ ค๊ณ ํฉ๋๋ค. ์ด์ ์๋ ์์ํ์ง๋ง ์ด ๋์์ด SFD์ ๋ง๋์ง ์์ฌ์ค๋ฝ์ต๋๋ค.
๋จ์ผ ํ์ผ ์์ฒด ํฌํจ WPF ์์ฉ ํ๋ก๊ทธ๋จ์ ์ถ์ถํ๋ ๋์ ์งํ๋ฅ ํ์์ค์ด๋ ๋ก๋ ํ์๊ธฐ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๊น? ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๊ณ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ์์ฒด ํฌํจ WPF ์ฑ์ 80Mo ์ด์์ด๋ฉฐ ์ถ์ถ์๋ 5์ด ์ด์ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์นํ์ ์ด์ง ์์ผ๋ฉฐ ์ต์ข
์ฌ์ฉ์๋ก๋ถํฐ ๋ถ๋ง์ ๋ฐ์์ต๋๋ค.
ํธ์ง: ์คํ ์ ์ด์ ๋ฒ์ ์ ์๋์ผ๋ก ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@Safirion ๋๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์ด ๊ธฐ๋ฅ์ ๋ฒ์์ ํฌํจ๋ ์ ์๋์ง ์ ์ ์์ต๋๋ค. ์์ ํ๋ฉด์ ํ์ํ๊ณ ์ค์ ์ฑ์ ์คํํ ๋ค์, ์์๋ ๋ ์ค์ ์ฑ์ด ์์ ํ๋ฉด ํ๋ก๊ทธ๋จ์ ์ค์งํ๋๋ก ํ๋ ์์ ์ฑ์ ๋ง๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
@ProfessionalNihilist ์ ์์ ์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋น WPF ์ฑ์ ์ปดํ์ผ ์ 80mo์ ๋์คํฌ ์ ์ฅ์๋ฅผ ์์ฒด ํฌํจํ์ฌ ์ฌ์ฉํฉ๋๋ค. ํ๋ ์์ํฌ ์ข
์ ์ฑ์ผ๋ก ์ปดํ์ผํ์ง ์๊ณ ๋ 80mo๋ณด๋ค ์์ WPF ์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค ๐
๋ฌธ์ ๋ ์ฑ์ด ์คํ๋๊ธฐ๋ ์ ์ ํฌํจ๋ ํ๋ ์์ํฌ๋ฅผ ์ถ์ถํ๋ ์๊ฐ์
๋๋ค. ๋ฐ๋ผ์ .Net Core์์ ์ํํด์ผ ํ๋ฉฐ ์ด ๊ธฐ๋ฅ๊ณผ ์์ ํ ๊ด๋ จ์ด ์์ต๋๋ค.
์ฑ์ด ์์ถ ํด์ ๋๋ ๋์ ํ์๋ png
๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๊น?
@Safirion @ayende ์์ ์ค "UI ํผ๋๋ฐฑ" ๋ถ์กฑ์ ์ฌ๊ธฐ์์ ์ถ์ ๋ฉ๋๋ค: https://github.com/dotnet/core-setup/issues/7250
dotnet pack
๋ช ๋ น์ ์์๋๋ ๋์์ ๋ฌด์์ ๋๊น? ๋ก์ปฌ nuget ์ ์ฅ์์ ํธ์๋ ๋จ์ผ exe ์ํฐํฉํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด์ฝ๋ฆฟ์ผ๋ก ์ค์นํ๋ ค๊ณ ํ๋ฉด ํ๋ก์ ํธ ํ์ผ์ ๋์ด๋ ๋ชจ๋ nuget dep๋ฅผ ๋ณต์ํ๋ ค๊ณ ํฉ๋๋ค. ์ด์ ์๋ ์์ํ์ง๋ง ์ด ๋์์ด SFD์ ๋ง๋์ง ์์ฌ์ค๋ฝ์ต๋๋ค.
@catlion PublishSingleFile
์์ฑ์ dotnet publish
๋ช
๋ น์์๋ง ์ง์๋ฉ๋๋ค. ๋ฐ๋ผ์ dotnet pack
์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๋จ์ผ ํ์ผ๊ณผ ํจํค์ง์ ๋ชจ๋ ์ฌ์ฉํ๋ ค๋ ๋๊ธฐ๊ฐ ์์ต๋๊น?
ํธ์ง: ์คํ ์ ์ด์ ๋ฒ์ ์ ์๋์ผ๋ก ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
ํ์ฌ ๋ฆด๋ฆฌ์ค์ @Safirion , ์ ๋ฆฌ๋ ์๋์ด๋ฉฐ ํธ์คํธ๋ ์ถ์ถ๋ ํ์ผ์ ์ ๊ฑฐํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. ์ด๋ ํฅํ ์คํ์์ ์ ์ฌ์ ์ผ๋ก ์ฌ์ฌ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ข์, ๋ด๊ฐ ์ง์ ์ฒญ์๊ธฐ๋ฅผ ๋ง๋ค๊ฒ ๐
๋น์ ์ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ชจ๋
ธ์ ๋ํด ํน๋ณํ ๊ฒ์ด ์๋ @cup ์ ํ์ค ์ปดํ์ผ์ผ ๋ฟ์
๋๋ค. ์ด์ ๋๊ฒ ์ฐธ์กฐ๋ฅผ ์ถ๊ฐํ๋ฉด ํด๋น ์๋ฃจ์
์ ๋ ์ด์ ๋จ์ผ ํ์ผ์ด ์๋๋๋ค. Mono๋ ๋จ์ผ ํ์ผ์ ๋ฌ์ฑํ๊ธฐ ์ํด mkbundle
๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
@์์น ๋ง ํ์คํด? ์์ ์์์๋ ๋จ์ผ 3KB ํ์ผ์ ์์ฑํฉ๋๋ค. dotnet ์ต์ ํฌ๊ธฐ๋ 27MB์ธ ๋ฐ๋ฉด:
https://github.com/dotnet/coreclr/issues/24397#issuecomment -502217519
@์ปต ๋ค
C:\Users\Robin> type .\Program.cs
using System;
class Program {
static void Main() {
Console.WriteLine("sunday monday");
}
}
C:\Users\Robin> C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe .\Program.cs
Microsoft (R) Visual C# Compiler version 4.8.3752.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
C:\Users\Robin> .\Program.exe
sunday monday
C:\Users\Robin> dir .\Program.exe
Verzeichnis: C:\Users\Robin
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10.11.2019 18:36 3584 Program.exe
@์์น ๋ง ํ์คํด? ์์ ์์์๋ ๋จ์ผ 3KB ํ์ผ์ ์์ฑํฉ๋๋ค. dotnet ์ต์ ํฌ๊ธฐ๋ 27MB์ธ ๋ฐ๋ฉด:
๋ชจ๋ ธ๊ฐ ์ด๋ฏธ ์ค์น๋์ด ์๊ธฐ ๋๋ฌธ์ 3k ํ์ผ๋ง ์๋ํฉ๋๋ค. dotnetcore ๋จ์ผ ํ์ผ ๋ฐฐํฌ์ ์์ ์ clr์ ์ค์นํ ํ์๊ฐ ์์ผ๋ฉฐ ๋ฐํ์์ ํฌํจํ๋ ๋ ๋ฆฝ ์คํํ ๋จ์ผ exe๋ผ๋ ๊ฒ์ ๋๋ค.
@Webreaper ๋ ์ค์ ๋ก .NET Framework์์ ์คํ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ mono sun-mon.exe
๋ฅผ ์์ฑํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผํ ๋ ๋ชจ๋
ธ์์ mcs๋ง ์ฌ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ .NET Core๋ ํ๋ ์์ํฌ ์ข
์ ๋ฐฐํฌ๋ผ๊ณ ๋ ํ๋ ์ฌ์ ์ค์น๋ ๋ฐํ์ ์๋๋ฆฌ์ค๋ ์ง์ํฉ๋๋ค. .deps.json
๋ฐ .runtimeconfig.json
์ ๊ฐ์ .NET Core์ฉ ์ถ๊ฐ ํ์ผ์ด ๋ช ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ ํ ๋จ์ผ ํ์ผ ๋ฐฐํฌ๊ฐ ์๋๋๋ค.
@ chris3713 ํ์ฌ exe ์์น์ ์ก์ธ์คํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ API์ ๋ํ PInvoke-ing์ ๋๋ค. ์:
GetModuleFileNameW
(Null, <buffer>, <len>)
Environment.CurrentDirectory
๊ฐ ๋ ๋์ ์๋ฃจ์
์ธ ๊ฒ ๊ฐ์ง๋ง ์์ง Windows ์ด์ธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์์ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๋ชจ๋ ์๋ํ์ง๋ ์์์ต๋๋ค.
ํธ์ง: ์๋์. ํด๋น ๊ฒฝ๋ก๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ์ง์ ์ ์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ข์ง ์๋ค.
์ฝ๊ฐ ๊ด๋ จ๋ ๋ฉ๋ชจ์์ Mac์ฉ VS์ ์ต์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์ Blazor ์ฑ์ ๋จ์ผ ํ์ผ ๊ฒ์์์ ์ด ํ๊ท๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. https://github.com/aspnet/AspNetCore/issues/17079 - ์๋์์ ๋ณด๊ณ ํ์ต๋๋ค. AspNeCore/Blazor, ๊ทธ๋ฌ๋ ์ด๊ฒ์ด coreclr ๊ทธ๋ฃน๊ณผ ๋ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค. ํ์คํ์ง ์์ต๋๋ค. ๋ํฌ๋ค์ด ์์ง์ผ ์ ์๋๋ก ๋จ๊ฒจ๋๊ฒ!
@Suchiman ์กฐ์ฌํ์ธ์. ์ปดํ์ผ๋ฌ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@cup ์ ๋ด๊ฐ ๋ช ๋ช ํ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ C++๋ก ์์ฑ๋ ์ด์ C# 5 ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ roslyn์ด ์๋๋ฉฐ ์๋ง๋ ๊ทธ๋ฌํ ์ด์ ๋ก ํด๋น ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ ๊ฒ์ ๋๋ค. ํ์ง๋ง roslyn์ ๊ฐ์ ์ผ์ ํ ์ ์์ต๋๋ค. ๋จ์ง ๋ค๋ฅธ ๊ธธ์ผ ๋ฟ์ ๋๋ค...
์ฝ๊ฐ ๊ด๋ จ๋ ๋ฉ๋ชจ์์ Mac์ฉ VS์ ์ต์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์ Blazor ์ฑ์ ๋จ์ผ ํ์ผ ๊ฒ์์์ ์ด ํ๊ท๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. aspnet/AspNetCore#17079 - AspNeCore/Blazor์์ ๋ณด๊ณ ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค. coreclr ๊ทธ๋ฃน๊ณผ ๋ ๊ด๋ จ์ด ์์ต๋๋ค. ํ์คํ์ง ์์ต๋๋ค. ๋ํฌ๋ค์ด ์์ง์ผ ์ ์๋๋ก ๋จ๊ฒจ๋๊ฒ!
@Webreaper ์ ์ ์์ฐ๊ณผ ๊ด๋ จ๋ ASP.net ๋ฌธ์ ์ฒ๋ผ ๋ณด์ด๋ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋์, ๊ทธ๊ฒ์ด ๊ทธ๊ฒ์ ์ ์ถํ๋ ์ฌ๋ฐ๋ฅธ ์ฅ์์ ๋๋ค.
* ๊ฒ์๋ฌผ์ ๋ค๋ฅธ ๋ฌธ์ ์์ ์ฌ๊ธฐ๋ก ์ด๋ํฉ๋๋ค.
@swaroop-sridhar ,
DotNet Core ๋จ์ผ ํ์ผ WPF ์ฑ์ ์์ ์๊ฐ์ .net 4.7์์ ๋น๋๋ ์๋ ILMerge-ed WPF ์ ํ๋ฆฌ์ผ์ด์ ๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค. ์ด๊ฒ์ ์์๋๋ ๊ฒ์ ๋๊น, ์๋๋ฉด ์์ผ๋ก ๊ฐ์ ๋ ๊ฒ์ ๋๊น?
๋น๋๋ ๋ด ImageOptimizer์์ ๊ฐ์ ธ์ต๋๋ค. https://github.com/devedse/DeveImageOptimizerWPF/releases
| ์ ํ | ์์ ์ฒซ ์์ ์๊ฐ | ์์ ๋ ๋ฒ์งธ ์์ ์๊ฐ | ํฌ๊ธฐ | ๋ค์ด๋ก๋ ๋งํฌ |
| -- | -- | -- | -- | -- |
| .NET 4.7.0 + ILMerge | ~3์ด | ~1์ด | 39.3MB | ๋งํฌ |
| dotnet publish -r win-x64 -c ๋ฆด๋ฆฌ์ค --self-contained=false /p:PublishSingleFile=true | ~10์ด | ~3์ด | 49MB | |
| dotnet publish -r win-x64 -c ๋ฆด๋ฆฌ์ค /p:PublishSingleFile=true | ~19์ด | ~2์ด | 201MB | |
| dotnet publish -r win-x64 -c ๋ฆด๋ฆฌ์ค /p:PublishSingleFile=true /p:PublishTrimmed=true | ~15์ด | ~3์ด | 136MB | ๋งํฌ |
| dotnet publish -r win-x64 -c ๋ฆด๋ฆฌ์ค | ~2.5์ด | ~1.5์ด | exe์ ๊ฒฝ์ฐ 223kb(dll์ ๊ฒฝ์ฐ +400mb) | |
@devedse , ํ์ธํ๊ธฐ ์ํด "๋ ๋ฒ์งธ ์์"์ด ์ฌ๋ฌ ์คํ(์ฒซ ๋ฒ์งธ ์ ์ธ)์ ํ๊ท ์ ๋๊น?
๊ถ๊ธํ์ง๋ง/p:PublishSingleFile=true /p:PublishTrimmed=true
์คํ์ด `/p:PublishSingleFile=true
์คํ๋ณด๋ค ๋๋ ค์ผ ํ๋ ์ด์ ์ ๋ํ ์ค๋ช ์ด ๋ถ์กฑํฉ๋๋ค.๊ทธ๋์ ์กฐ์ฌํ๊ธฐ ์ ์ "๋ ๋ฒ์งธ ์์"์ ์ซ์๊ฐ ์์ ์ ์ธ ์ซ์์ด๊ณ ์์์ ์ฐจ์ด๊ฐ ์ฌํ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
๋ํ ์ด ๋ฌธ์ ๋ ๋จ์ผ ํ์ผ ํ๋ฌ๊ทธ์ธ์ ๊ดํ ๊ฒ์ ๋๋ค. ์ฑ๋ฅ ํ ๋ก ์ ์ ๋ฌธ์ ๋ก ์ฎ๊ธฐ๊ฑฐ๋ dotnet/coreclr#20287๋ก ์ฎ๊ธฐ์๊ฒ ์ต๋๊น? ๊ฐ์ฌ ํด์.
@swaroop-sridhar , ํ๊ท ์ ๋ํ ๊ทํ์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ:
์ด๊ฒ์ ๋งค์ฐ ์ ํํ๊ฒ ์๊ฐ์ ์ธก์ ํ๋ ๊ฒ์ ์ฝ๊ฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ ํ์ด๋ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์๋๋ ๋์ ๊ณ์ฐํ ๋ค์ ์์ ์๊ฐ์ ์๋นํ ์ฐจ์ด๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ช ๋ฒ ์๋ํ์ฌ ์ํ๋์์ต๋๋ค. ๋ ๋์ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค๋ฉด ๋ด ์๋ฃจ์
์ ๊ตฌ์ถํ์ฌ ์ฝ๊ฒ ์ฌํํ ์ ์์ต๋๋ค. https://github.com/devedse/DeveImageOptimizerWPF
๋ด ์ฃผ์ ์ง๋ฌธ์ ๋ฒ๋ค(๋จ์ผ ํ์ผ) ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฒ๋ค๋์ง ์์ .exe ํ์ผ๊ณผ ๋น๊ตํ์ฌ ์์ํ๋ ๋ฐ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ด์ ์ ๊ด๋ จ์ด ์์ต๋๋ค.
์ฌ๊ธฐ์์๋ ํ๋ฆด ์ ์์ง๋ง ๋จ์ผ ํ์ผ์ ์ค๋ฒํค๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ดํด๊ฐ ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์ฑ์ ์์ํ๋ ์ฑ์ด ์์ต๋๋ค. ILMerge๊ฐ ์ง์ ์์๋๋ ๋์. ILMerge๋ ์ฐธ์กฐ๋ dll๋ง exe๋ก ๋ณํฉํ์ผ๋ฉฐ ํ์ฌ PublishSingleFile๋ก ์ํ ์ค์ธ ๋ค๋ฅธ ๋ ์ด์ด์ ์ ์ฒด๋ฅผ ๋ํํ์ง ์์์ต๋๋ค.
@devedse ๋จ์ผ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก dotnet ์คํ์ ์์ํ๊ธฐ ์ ์ ์ถ์ถ, ์ฒดํฌ์ฌ ํ์ธ ๋ฑ์
๋๋ค.
๊ทธ๋์ ์๊ฐ์ด ๊ฑธ๋ ธ๋ ๋ด
๋๋ค.
์ถ์ถ์ "์บ์"๋๋ฏ๋ก ๋ค์์ ์คํํ ๋ IO ์ค๋ฒํค๋๊ฐ ์์ต๋๋ค.
@RajeshAKumar , ํ ์ด ์๋๋ฆฌ์ค์์ ์ ๋ง ๊ฐ ๊ธธ์ ์ถ์ถํ๊ณ ์์ต๋๊น? ILMerge ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ค์ ๋ก DLL์ ํ๋์ ๋จ์ผ ๋ฒ๋ค๋ก ๋ณํฉํ๋ ๊ฒ์ด ๋ ์ข์ง ์์๊น์?
ํนํ ๋ ํฐ .exe ํ์ผ์ ๊ฒฝ์ฐ ๋ชจ๋ ํ์ผ์ ๋ ๋ฒ ์ ์ฅํ๋ ๋์คํฌ ๊ณต๊ฐ ๋น์ฉ๋ ๋ฐ์ํฉ๋๋ค.
@devedse ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ด ๊ธฐ๋ฅ(๋ฒ๋ค์์ ์คํ)์ ๋ค์ ๋จ๊ณ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ง๋ง ํ์ฌ๋ก์๋ ์ด๊ฒ์ด ์ ์ผํ ์๋ฃจ์ ์ ๋๋ค. ๐
https://github.com/dotnet/designs/blob/master/accepted/single-file/staging.md
์ด๊ฒ์ ๋ฐ์คํฌํ์์ JIT๋ฅผ ์ฌ์ฉํ์ฌ ์ป๋ ๊ฒ์ ๋๋ค. ๋๋ฆฐ ์์, Apple๋ง์ด ์ด๊ฒ์ ์ดํดํ ๊ฒ ๊ฐ์ต๋๋ค.
(๋๋ถ๋ถ ์ด๋ฏธ ์ธ๊ธํ ๋ด์ฉ์ ๋ฐ๋ณตํจ):
์ฒซ ๋ฒ์งธ ์์์ ํจ์ฌ ๋๋ฆด ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ฑ์ ๋์คํฌ์ ์ถ์ถํ๋ฏ๋ก IO๊ฐ ๋ง์ต๋๋ค. ๋ ๋ฒ์งธ ๋ฐ ์ดํ ์์์ ๋จ์ผ ํ์ผ์ด ์๋ ์ฑ ๋ฒ์ ๊ณผ ๊ฑฐ์ ๋์ผํด์ผ ํฉ๋๋ค. ๋ด๋ถ ์ธก์ ์์ ์ฐ๋ฆฌ๋ ์ฐจ์ด๋ฅผ ๋ณด์ง ๋ชปํ์ต๋๋ค.
์ธก์ ๋ฐฉ๋ฒ: ์ถ์ (Windows์ ETW)์ ์ฌ์ฉํ์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์๋ ๋ ์ด๋ฒคํธ๊ฐ ์๊ณ ์ด๋ฅผ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ฐํ์ ์ด๋ฒคํธ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์ ํํ๋ ์ฝ์ง ์์ต๋๋ค.
@Safirion ์ด ์ธ๊ธํ๋ฏ์ด ์ฐ๋ฆฌ๋ .exe์์ ์ง์ ๋๋ถ๋ถ์ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๋ ๋จ์ผ ํ์ผ์ ๋ํ ๋ค์ ๊ฐ์ ์์ ์ ์งํ ์ค์ ๋๋ค(๋์คํฌ๋ก ์ถ์ถํ์ง ์์). ์์ง ์ถ์ ์ด์ฐจ๋ฅผ ์ฝ์ํ ์ ์์ต๋๋ค.
JIT: ๋ชจ๋ ํ๋ ์์ํฌ๋ Ready2Run(CoreFX, WPF)์ผ๋ก ์ฌ์ ์ปดํ์ผ๋์ด์ผ ํ๋ฏ๋ก ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ง JIT๋์ด์ผ ํฉ๋๋ค. ์๋ฒฝํ์ง๋ ์์ง๋ง ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ~1-2์ด์ ์์ ์๊ฐ์ ๊ฐ์ํ ๋ ์ด๋ฏธ ๋ชจ๋ ํ ์คํธ์์ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค. ๊ณํ๋ ๋ค์ ๋จ๊ณ๋ฅผ ์์ง ๋ชปํ์ต๋๋ค. ์ด๊ฒ์ ๊ทธ๊ฒ์ ๋ช ํํํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์์์ ํจ์ฌ ๋๋ฆด ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ฑ์ ๋์คํฌ์ ์ถ์ถํ๋ฏ๋ก IO๊ฐ ๋ง์ต๋๋ค.
์ด๋ฐ ์ผ์ด ์ผ์ด๋์๋ ์ ๋ฉ๋๋ค. ๋์์ธ์ ๋ฐ๋ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋์ฐํ๊ฒ ๋ง๋ค๊ณ ๋์ฐํ ์ ํ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ๊ธฐ์ ์ ์ฌ์ฉ์๊ฐ ์ซ์ดํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
@Safirion ์ด ์ธ๊ธํ๋ฏ์ด ์ฐ๋ฆฌ๋ .exe์์ ์ง์ ๋๋ถ๋ถ์ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๋ ๋จ์ผ ํ์ผ์ ๋ํ ๋ค์ ๊ฐ์ ์์ ์ ์งํ ์ค์ ๋๋ค(๋์คํฌ๋ก ์ถ์ถํ์ง ์์). ์์ง ์ถ์ ์ด์ฐจ๋ฅผ ์ฝ์ํ ์ ์์ต๋๋ค.
๊ณง ๋ณ๊ฒฝ๋ ์์ ์ธ ๊ฒฝ์ฐ ์ง๊ธ ๊ณต์์ ์ผ๋ก ์ถ์ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ฏธ๋ฆฌ๋ณด๊ธฐ/์คํ์ผ๋ก ํ์๋์ด์ผ ํฉ๋๋ค.
๋ด ์๊ฐ์ ์ด๊ฒ์ ์๊ฐ๊ณผ ๋ฆฌ์์ค ๋ญ๋น์ ๋๋ค. AOT ์ปดํ์ผ ๋ฐ ํธ๋ฆฌ ํ๋ค๊ธฐ์ ์ง์คํ๊ณ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๊ฑฐ๊ธฐ์ ๋ฃ๊ณ ํดํน์ ์ค์งํ์ญ์์ค.
@RUShy ์ ์ด๋ ๊ฒ ์ฆ์ค๊ฐ ๋ง์? ์ฒ์ ์์ํ ๋ ์์ ์ง์ฐ์ ์ํ์ง ์์ผ๋ฉด ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์์ ์๊ฐ์ด 10์ด ๋ฏธ๋ง์ผ๋ก ์๋นํ ์งง๊ณ ์ฒ์ ์คํํ๋ ๊ฒ์ด๋ฏ๋ก ์ ํ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๋๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ํ ๋ฒ ์์ํ ๋ค์ ๋ฉฐ์น /๋ช ์ฃผ ๋์ ์คํ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ ์๋ฒ ์ธก ์น ์ฑ์ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ธฐ ์ถ์ถ์ ์ฌ๋ฌผ ๊ณํ์์ ๋ฌด์ํ ์ ์์ต๋๋ค. ๋จ์ผ ์ปดํ์ผ๋ ์ด๋ฏธ์ง๊ฐ ์์ ๋๊น์ง ์ค๋จํฉ๋๋ค. ์๋ฐฑ ๊ฐ์ DLL์ ์ฃผ๋ณ์ ๋ณต์ฌํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๊ฒฝ์ฐ์๋ +1, ๋จ์ผ exe๋ฅผ ์์ฑํ๋ ๋น๋ ๋์ปค์ ์ฑ์ ์คํํ๊ธฐ ์ํ ๋ณ๋์ ๋์ปค๊ฐ ์์ต๋๋ค(dotnet์ด ์๋ ์ผ๋ฐ ์ํ์ธ ๋์ปค ์ด๋ฏธ์ง ์ฌ์ฉ). bulid ๋จ๊ณ ํ์ ๋ฐํ์ ์ปจํ
์ด๋๋ฅผ ํ ๋ฒ ํซ ๋ก๋ํ๊ณ ๋ ์ด์ด๋ฅผ docker-commit
ํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ํ๋ ์์ํฌ ์ข
์ ๋ฐฐํฌ์ ๋น๊ตํ์ฌ ์ฑ๋ฅ ์ ํ๊ฐ ๊ด์ฐฐ๋์ง ์์์ต๋๋ค. ๋ฒ๋ค์์ ๋ก๋ ํ์ผ ๋ฉ์ปค๋์ฆ์ด ๊ตฌํ๋๊ณ ์ถ์๋๋ฉด ์ค๊ฐ ํซ ๋ก๋ ๋จ๊ณ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
@vitek-karas, "๋ฒ๋ค์์ ๋ฐํ์ ์์ฐ ๋ก๋" ๊ธฐ๋ฅ์ ์ถ์ ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๊น? ์ด๋ค ์ข ๋ฅ์ ์ฅ์ ๋ฌผ์ด ์๋์ง ์ดํดํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. :)
@am11 ํ์ฌ ์ธ๋ถ ๊ณํ์ ์ง๊ณ ์์ต๋๋ค. https://github.com/dotnet/coreclr/tree/single-exe์์ ์๋ฃ๋ ํ๋กํ ํ์ ์ ๋ณผ ์ ์์ต๋๋ค. ์ค์ ๊ตฌํ์ ์๋ง๋ ๋๋ฌด ๋ค๋ฅด์ง ์์ ๊ฒ์ ๋๋ค(๋ถ๋ช ํ ๋ ๋์ ์ธ์๋ถํด ๋ฑ์ด ์์ง๋ง ํต์ฌ ์์ด๋์ด๋ ๊ฑด์ ํ ๊ฒ ๊ฐ์ต๋๋ค).
@Webreaper ์น ์ฑ์ ๊ฒฝ์ฐ ์ ํ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง ์ง๊ธ์ WPF/WinForm ๊ฐ๋ฐ์ .Net Core 3์ด ๊ถ์ฅ๋๊ณ ๋ฐฑ .dll์์ ์์ด๋ฒ๋ฆฐ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
.exe๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ด ์ต์
์ด ์๋๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๊ด๋ จ๋ ์ข์ ๊ฐ์ ์ดํดํฉ๋๋ค.
;)
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ ์ค๋ exe๋ฅผ ๋ค์ ํด๋ฆญํ๊ธฐ ์ ์ 10์ด(๋๋ 3์ด ์ด์)๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค . ๋ก๋ฉ ํ์๊ธฐ๊ฐ ์๋ค๋ ์ฌ์ค์ ์ด ๊ธฐ๋ฅ์ ๋ ๋ฒ์งธ ํฐ ๋ฌธ์ ์ ๋๋ค. ๋ถํํ๋ ๋ก๋ฉ ํ์๊ธฐ๋ .Net Core 3.1์ ์ผ๋ถ๊ฐ ์๋๋ฏ๋ก ์ฌ์ฉ์๋ ์ธ๋ด์ฌ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค...
๋ฐ์คํฌํฑ ๊ฐ๋ฐ์๋ 2๋จ๊ณ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฉฐ .Net 5์ ์ผ๋ถ๊ฐ ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ค์ ๋ก .Net Core์ ๋ฐ์คํฌํฑ ๊ฐ๋ฐ์ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ ๋ง ๋์ ๊ฒฝํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
@RUShy ์ ์ด๋ ๊ฒ ์ฆ์ค๊ฐ ๋ง์? ์ฒ์ ์์ํ ๋ ์์ ์ง์ฐ์ ์ํ์ง ์์ผ๋ฉด ๋จ์ผ ํ์ผ ๋ฐฐํฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์ด๊ฒ์ ์ฆ์ค๊ฐ ์๋๋๋ค. ์ด๊ฒ์ ๊ฑด์ค์ ์ด๊ณ ์ ์งํ ํผ๋๋ฐฑ์ ๋๋ค. ์ ๋ C#๊ณผ .net์ ๊ด์ฌ์ด ์์ต๋๋ค. ์ ๋ ๋งค์ผ ๋ ๋ค ์ฌ์ฉํฉ๋๋ค. GO๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋์ฒด๋๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
์ต๊ทผ:
https://old.reddit.com/r/golang/comments/e1xri3/choosing_go_at_american_express/
https://old.reddit.com/r/golang/comments/ds2z51/the_stripe_cli_is_now_available_and_its_written/
๋ถ์ ์ ์ธ ํผ๋๋ฐฑ์ ๊ธ์ ์ ์ธ ํผ๋๋ฐฑ๋งํผ ๋์์ด ๋์ง๋ง "์ฆ์ค"๋ก ๋ฐ์๋ค์ด๋ฉด ๋๋ ๋น์ ์ ๋์ธ ์ ์์ต๋๋ค
.net ์ปค๋ฎค๋ํฐ๋ ์กฐ์ฉํ๊ณ ์๋์ ์ด๋ฉฐ ํธํฅ๋์ด ์์ต๋๋ค. ํ๊ดด๊ฐ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค.
.NET์ ๊ฐ๊ด์ ์ผ๋ก ์ค๋๋ ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฅ ์ ํฉํ ํ๋ซํผ์ ๋๋ค. ๋ ๋ง์ ์ฌ๋๋ค์ด ๊นจ๋ฌ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
Java, Go, Rust, Node, ...์ ๊ฐ์ ๋ค๋ฅธ ํ๋ซํผ์์ ๋ค์ ์ ์ ์ด์ผ๊ธฐ๋ ์์งํ ํผ๋์ค๋ฝ์ต๋๋ค. ์ด๋ฌํ ํ๋ซํผ์ ์์ฐ์ฑ ํฌ๋ฌ์ ๋๋ค.
๋ด ์๊ฐ์ ์ด๊ฒ์ ์๊ฐ๊ณผ ๋ฆฌ์์ค ๋ญ๋น์ ๋๋ค. AOT ์ปดํ์ผ ๋ฐ ํธ๋ฆฌ ํ๋ค๊ธฐ์ ์ง์คํ๊ณ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๊ฑฐ๊ธฐ์ ๋ฃ๊ณ ํดํน์ ์ค์งํ์ญ์์ค.
๋์ํ๋ค. .Net์๋ ํ๋ฅญํ ์ ํ ์์คํ ์ด ์์ต๋๋ค. ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ์ฐํํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. ํด๋ง์ AOT์ ์ด์ ์ ๋ง์ถฐ์ผ ํ์ง๋ง ๋ฐ์ฌ๋ฅผ ์ต์ํํ๋ ๋ฐ๋ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. https://github.com/dotnet/corert/issues/7835#issuecomment -545087715๋ ์์ฃผ ์ข์ ์์์ด ๋ ๊ฒ์ ๋๋ค. Null์ 10์ต ๋ฌ๋ฌ ์ค๋ฅ๊ฐ ์ด์ ์ํ๋๊ณ ์์ต๋๋ค. ๋ฆฌํ๋ ์ ์ด ์๋ ์ฝ๋(๋๋ ๋ง์ปค ๋๋ corert ํธํ ์ฝ๋)์ ๋ํ ์ค์ ๋๋ ๋ง์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํ๋ ์ ์์๋ ๋์ผํ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
๋ฐ์ฌ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๊ต์ฅํ ๊ฒ์ ๋๋ค. ์ฑ์ฐฐ์ด ๊ธ์ง๋๋ค๋ฉด ๋ง์ ๊ณ ํต์ ํผํ ์ ์์ ๊ฒ์ ๋๋ค. ๊ฐ์ฅ ์ต๊ทผ์ ๊ฒช์ ๊ณตํฌ ์ด์ผ๊ธฐ๋ ์ฌ์ฉ๋ ํ๋ ์์ํฌ(์๋น์ค ํจ๋ธ๋ฆญ SDK)๊ฐ ์ฌ์ ์๊ฐ ๋ถ๊ฐ๋ฅํ ์ง๋ ฌํ ๊ตฌํ์ ์ด์ ๋ธ๋ฆฌ ์ด๋ฆ์ ์ง๋ ฌํ๋ ๋ฐ์ดํธ๋ฅผ ๋ฌถ๋ ๊ฒ์ด ํ๋ช ํ๋ค๋ ๊ฒ์ ์์๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์ด๋ํ ์ ์๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ ๊ฒ์ ๋๋ค.
๋๋ดํ๋ ์ฑ์ฐฐ์ ํฅํ ๋ชจ๋ ์ง์ ์ ์ง์ ์ด ๋ ๊ฒ์ ๋๋ค.
Btw๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ณํฉํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ์ ๋ก๋ ์๊ฐ์ ์ค์ด๊ณ ์ ์ฒด ํ๋ก๊ทธ๋จ ์ต์ ํ๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์์ต๋๋ค. ๋๋ ์ด ๋ฌธ์ ๊ฐ ์ค์ ๋ก ๊ทธ๊ฒ์ ๊ฒจ๋ฅํ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
ํธ์ง: ์ด ๊ฒ์๋ฌผ์ ๋ช ํํ ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ฐ์์ ์์งํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฉํ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋๊ฐ ๋ฐ์ดํฐ์ด๊ณ ๋ด ํต์ ํ์ ์๋ ๋์์ธ ํ์์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ์ ๋ขฐํ ์ ์๋ ๋ถ๋ณ์ฑ์ ์ ์ฉํ๋ ๋ฐ ์ฌ์ฉํ๊ณ ์ถ์ ์ ํ์ ๋๋ค. ๋ฐํ์ ๋ฐ์ฌ๋ ๊ทธ ์ ๋ขฐ๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค.
๋ฐ๋ผ์ ๋ฐํ์ ๋ฆฌํ๋ ์ ์ด ๋์์ธ ํ์ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋์ฒด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ถ์๊ธฐ, ๋น ๋ฅธ ์์ ๋ฐ ๋ฆฌํฉํ ๋ง๊ณผ ๊ฐ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ ๊ฐ๋ ฅํ๊ฒ ์ค๋ณต๋ ์ ์๋ ๊ณณ์ ๋๋ค.
์ด ์์ญ์ ๊ตฌ๋
์ ํ๊ทธ ์ง์ : @swaroop-sridhar
๊ตฌ๋
์ ์ํ์๋ฉด danmosemsft์ ์๋ ค์ฃผ์ญ์์ค.
๋จ์ผ ํ์ผ ๊ธฐ๋ฅ ๋์์ธ์ ์ด ๋ฌธ์์ ์์ต๋๋ค: https://github.com/dotnet/designs/blob/master/accepted/2020/single-file/design.md
์ด ๋ฌธ์ ์์ ๋จ์ผ ํ์ผ ์ฑ์ ์งํ ์ํฉ ์ถ์ : https://github.com/dotnet/runtime/issues/36590.
์ด ๋ฌธ์ ์ ๋ํ ํผ๋๋ฐฑ๊ณผ ์ ์์ ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๋ฐ ์ผ์ด ์ผ์ด๋์๋ ์ ๋ฉ๋๋ค. ๋์์ธ์ ๋ฐ๋ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋์ฐํ๊ฒ ๋ง๋ค๊ณ ๋์ฐํ ์ ํ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ๊ธฐ์ ์ ์ฌ์ฉ์๊ฐ ์ซ์ดํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ณง ๋ณ๊ฒฝ๋ ์์ ์ธ ๊ฒฝ์ฐ ์ง๊ธ ๊ณต์์ ์ผ๋ก ์ถ์ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ฏธ๋ฆฌ๋ณด๊ธฐ/์คํ์ผ๋ก ํ์๋์ด์ผ ํฉ๋๋ค.
๋ด ์๊ฐ์ ์ด๊ฒ์ ์๊ฐ๊ณผ ๋ฆฌ์์ค ๋ญ๋น์ ๋๋ค. AOT ์ปดํ์ผ ๋ฐ ํธ๋ฆฌ ํ๋ค๊ธฐ์ ์ง์คํ๊ณ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๊ฑฐ๊ธฐ์ ๋ฃ๊ณ ํดํน์ ์ค์งํ์ญ์์ค.