ãã®åé¡ã¯ã.NETCore3.0åäžãã¡ã€ã«é
åžæ©èœã®é²æç¶æ³ã远跡ããŸãã
ãã®æ©èœã®èšèšããã¥ã¡ã³ããšã¹ããŒãžã³ã°èšç»ã¯æ¬¡ã®ãšããã§ãã
èå³æ·±ãããšã«ããã®ã€ãã·ã¢ããã¯CoreRTãšã©ã®ããã«æ¯èŒãããŸããïŒ åœŒãã¯åããããªåªåã®ããã«èŠããŸããïŒ
ããã¯ããããããã€ãã£ããŠãŒã¶ãŒã³ãŒããã«é¢é£ããŠããŸããïŒã€ãŸããAOTã ãã§ãªããã³ãŒããJITã³ã³ãã€ã«ããããšãã§ããŸããïŒ
ãŸããã©ã³ã¿ã€ã ã³ã³ããŒãã³ãïŒ'ãã€ãã£ãã³ãŒãïŒã©ã³ã¿ã€ã ããã¹ãããã¬ãŒã ã¯ãŒã¯ã®ãã€ãã£ãéšå.. 'ïŒã¯CoreCLRãªããžããªããã®ãã®ã«ãªããšæããŸããïŒ
ããªãã¯çŽ æŽããã質åãããŠããŸãããããã¯ãŸã èšèšã®åæ段éã§ãããããç§ã¯ãŸã çŽ æŽãããçããæã£ãŠããŸããã
èå³æ·±ãããšã«ããã®ã€ãã·ã¢ããã¯CoreRTãšã©ã®ããã«æ¯èŒãããŸããïŒ åœŒãã¯åããããªåªåã®ããã«èŠããŸããïŒ
å€å°é¡äŒŒããçµæïŒåäžã®ãã¡ã€ã«ïŒãçºçããå¯èœæ§ããããŸãããèšèšã«ã¯ãæ©èœãã/æ©èœããªãç°ãªãããã©ãŒãã³ã¹ç¹æ§ãŸãã¯æ©èœãããå ŽåããããŸãã ããšãã°ãèããããèšèšã¯ã.NETCoreã®èªå·±å®çµåã¢ããªã±ãŒã·ã§ã³å ã®ãã¹ãŠã®ãã¡ã€ã«ãåºæ¬çã«1ã€ã®ãã¡ã€ã«ã«é£çµããããšã§ãã ããã¯æ°åMBã§ãããéå§ãé ããªãå¯èœæ§ããããŸãããäžæ¹ã§ããã©ã°ã€ã³ã®ããŒãããªãã¬ã¯ã·ã§ã³ãšããããé«åºŠãªèšºæãªã©ãCoreCLRã®å šæ©èœã䜿çšã§ããŸãã CoreRTã¯ãã¹ãã¯ãã«ã®ããäžæ¹ã®ç«¯ãšèŠãªãããšãã§ããŸããããã¯1æ¡ã®MBã§ãããèµ·åæéãéåžžã«é«éã§ãããJITããªãããããã©ã°ã€ã³ãããŒããããããªãã¬ã¯ã·ã§ã³ãšãããã䜿çšãããã§ããããã«ãæéã¯ã»ãšãã©ã®å Žåãããé ããªããŸãã NETéçºè ã¯æ £ããŠããŸãã çŸåšãæéã®çµéãšãšãã«æ¹åãããå¯èœæ§ã®ããä»ã®ããã€ãã®å¶éããããŸããã.NET Core 3.0ã§ã¯æ¹åãããªãå¯èœæ§ããããŸãïŒãªãã¬ã¯ã·ã§ã³çšã®æ³šéãå¿ èŠãäžéšã®çžäºéçšã·ããªãªãæ¬ èœããŠãããLinuxã§ã®èšºæãå¶éãããŠããå¯èœæ§ããããŸãïŒã äž¡è ã®éã®ã©ããã«ã¢ã€ãã¢ããããŸãã 人ã ãäœããã/é¿ããããã¬ãŒããªããæã£ãŠãããªããç§ãã¡ã¯ãããã«ã€ããŠèããŠã¿ãããšæããŸãã
ããã¯ããããããã€ãã£ããŠãŒã¶ãŒã³ãŒããã«é¢é£ããŠããŸããïŒã€ãŸããAOTã ãã§ãªããã³ãŒããJITã³ã³ãã€ã«ããããšãã§ããŸããïŒ
ããã€ãã£ããŠãŒã¶ãŒã³ãŒãããšã¯ãã¢ããªã«C ++ãã€ãã£ãã³ãŒãïŒãŠãŒã¶ãŒãŸãã¯ãµãŒãããŒãã£ã³ã³ããŒãã³ãã«ãã£ãŠèšè¿°ããããã®ïŒãå«ãŸããŠããå¯èœæ§ãããããšãæå³ããŸãã ãã®ã³ãŒãã§ã§ããããšã«ã¯å¶éããããããããŸãã-ããã.dllã«ã³ã³ãã€ã«ãããŠããå Žåããããå®è¡ããå¯äžã®æ¹æ³ã¯ãã£ã¹ã¯ããã§ãã .libã®å Žåããªã³ã¯ããããšã¯å¯èœãããããŸããããããã¯ä»ã®åé¡ãåŒãèµ·ãããŸãã
ãŸããã©ã³ã¿ã€ã ã³ã³ããŒãã³ãïŒããã€ãã£ãã³ãŒãïŒã©ã³ã¿ã€ã ããã¹ãããã¬ãŒã ã¯ãŒã¯ã®ãã€ãã£ãéšå..ãïŒã¯CoreCLRãªããžããªããã®ãã®ã«ãªããšæããŸããïŒ
äžèšã®ãã¹ãŠã«åºã¥ããŠãã©ã®ãªããžããªãé¢ä¿ããŠããããææ¡ããŸãã ããã¬ãŒã ã¯ãŒã¯ã®ãã€ãã£ãéšåãã«ã¯ãClrCompressionãUnixPALãªã©ã®CoreFXãã€ãã£ããã¡ã€ã«ãå«ãŸããŸãã
ãã®æ¹æ³ã§ã®åäžãã¡ã€ã«ã®é åžã¯ãèµ·åæéããããã«é ãå Žåã§ããå±éã容æã«ããããã«éåžžã«è²Žéã§ãã ç§ã¯ããã®äžéšããããããããšãäœåãªãããããããããããå šåãçºæ®ããèœåãæã£ãŠããæ¹ãããã§ãã
ç§ãã¡ãèå³ãæã£ãŠããããã€ãã®ã·ããªãªã ããã¯ã¯ãã¹ãã©ãããã©ãŒã ã®èŠ³ç¹ããã©ã®ããã«æ©èœããŸããïŒ
ãã©ãããã©ãŒã ããšã«åå¥ã®ããã¡ã€ã«ãããããšæããŸããïŒ
ãã€ãã£ãã³ãŒãã«é¢ããŠããã©ãããã©ãŒã ã«åºã¥ããŠããŸããŸãªãã€ãã£ãã³ã³ããŒãã³ããéžæããã«ã¯ã©ãããã°ããã§ããïŒ
ç§ãã¡ãèå³ãæã£ãŠããããã€ãã®ã·ããªãªã ããã¯ã¯ãã¹ãã©ãããã©ãŒã ã®èŠ³ç¹ããã©ã®ããã«æ©èœããŸããïŒ
ãã©ãããã©ãŒã ããšã«åå¥ã®ããã¡ã€ã«ãããããšæããŸããïŒ
ãã€ãã£ãã³ãŒãã«é¢ããŠããã©ãããã©ãŒã ã«åºã¥ããŠããŸããŸãªãã€ãã£ãã³ã³ããŒãã³ããéžæããã«ã¯ã©ãããã°ããã§ããïŒ
@ayende ã @ morganbrã®ã³ã¡ã³ãããåŒçšããŠããŸãïŒ
èããããèšèšã¯ãåºæ¬çã«.NETCoreã®èªå·±å®çµåã¢ããªã±ãŒã·ã§ã³å ã®ãã¹ãŠã®ãã¡ã€ã«ãåäžã®ãã¡ã€ã«ã«é£çµããããšã§ãã
èªå·±å®çµåã¢ããªã±ãŒã·ã§ã³ã®çŸåšã®ã¯ãã¹ãã©ãããã©ãŒã ã¹ããŒãªãŒã¯ããã©ãããã©ãŒã åºæã®ã©ã³ã¿ã€ã ãšãšãã«ã¢ããªã±ãŒã·ã§ã³ãåºè·ãããããã¿ãŒã²ãããšãããã©ãããã©ãŒã ããšã«ãããã€ã¡ã³ãããã±ãŒãžãäœæããããšã§ãã
@morganbrãã®ãããªè©³çŽ°ãªåçãæäŸããããã«æéãå²ããŠããã ãããããšãããããŸã
ãã¶ã€ã³ãã©ãã«è¡ãã®ãèå³ããããŸããããã¯æ¬åœã«èå³æ·±ãã€ãã·ã¢ããã§ãã
åäžãã¡ã€ã«ã䜿çšããã人ã®ããã«ããã€ã質åããããŸãã ããªãã®çãã¯ç§ãã¡ã®éžæè¢ãçµã蟌ãã®ã«åœ¹ç«ã¡ãŸãïŒ
@morganbr ããããã®è³ªåã¯ããå€ãã®èŽè¡ã«å°ããããæ¹ãè¯ããšæããŸããã ã€ãŸãããã®GitHubã®åé¡ã«ã€ããŠç¥ã£ãŠãã人ã¯ãã£ãšåºãã§ããïŒ
ããšãã°ãèããããèšèšã¯ã.NETCoreã®èªå·±å®çµåã¢ããªã±ãŒã·ã§ã³å ã®ãã¹ãŠã®ãã¡ã€ã«ãåºæ¬çã«1ã€ã®ãã¡ã€ã«ã«é£çµããããšã§ãã
ãããå§çž®ããããšãèŠãŠãã ããã ãŸãã¯ãã¡ã€ã«ã§å§çž®ãã¡ã€ã«ã·ã¹ãã ã䜿çšããŠããŸããïŒ
@tpetrina ãããããšãïŒ ãã€ã³ã3ã¯ãããã€ãã®èšèšè§åºŠãã«ããŒããŠããŸãã
@TheBlueSky ãä»ã®äººã«ãé£çµ¡ãåããŸããããGitHubã³ãã¥ããã£ã®æ ç±çãªäººããæèŠãèãã®ã«åœ¹ç«ã¡ãŸãã
@benaadams ãå§çž®ã¯ããŒãã«ã«ãããŸãããç§ã¯çŸåšãå šäœçãªèšèšã«çŽäº€ããŠãããšèããŠããŸãã ç°¡åãªå®éšã§ã¯ãèµ·åæéïŒããã³ãã«ãæéïŒã®æ°ç§ãç ç²ã«ããŠãzipåŠçã§ãµã€ãºãçŽ50ïŒ åæžãããå¯èœæ§ãããããšã瀺åãããŠããŸãã ç§ã«ãšã£ãŠãããã¯æ ¹æ¬çãªãã¬ãŒããªãã§ããããããè¡ãå Žåã¯ãªãã·ã§ã³ã§ããå¿ èŠããããŸãã
@morganbrå§çž®ã䜿çšããå Žåãèµ·åæéã¯æ°ç§ã§ããïŒ UPXãæžå§é床ã䞻匵ããŠããããšãèãããšãä¿¡ããããããšã§ãã
å€ä»£ã®Pentium133ã§ã¯æ倧10MB/ç§ãAthlonXP2000以éã§ã¯æ倧200MB/ç§ã
@morganbr ãç§ã«ãšã£ãŠã®çãã¯æ¬¡ã®ãšããã§ãã
1ïŒãµãŒãã¹ïŒåºæ¬çã«ãKestrelãå®è¡ããã³ã³ãœãŒã«ã¢ããªïŒã WindowsãµãŒãã¹/LinuxããŒã¢ã³ãŸãã¯Dockerã§å®è¡ããŸãã
2ïŒã¯ã
3ïŒã¯ããéåžžã¯AssemblyContext.LoadFrom
ã䜿çšããŠç®¡çãããã¢ã»ã³ããªã§ãã ãããã¯ãšã³ããŠãŒã¶ãŒã«ãã£ãŠæäŸãããŸãã
4ïŒã¯ããããã¯äºæ³ãããŸãã å®éããšã«ãããã¬ãŒã ã¯ãŒã¯å
šäœããã§ã«ãã³ãã«ããŠããã®ã§ããã®èŠ³ç¹ããã®å€æŽã¯ãããŸããã
5ïŒãµãŒãã¹ãšããŠã¯ãèµ·åæéã¯ããŸãæ°ã«ããŸããã 5ç§ã劥åœã§ãã
6ïŒãããã75MBãéçã§ãã ãã¹ãŠã®ããã±ãŒãžã¯å§çž®ãããŠé
ä¿¡ããããããå®éã®å§çž®ãµã€ãºã«å€§ããäŸåããŸãã
7ïŒãªãªãŒã¹ãã«ãã®å Žåãããé·ãïŒããã«é·ãïŒãã«ãæéã蚱容ãããŸãã
8ïŒã¯ãããã¡ããã§ãã ãµã€ãºã¯ããã»ã©éèŠã§ã¯ãããŸããããå°ããæ¹ãè¯ãã§ãã
ç§ãèšåããŠããªãããšããããŠéåžžã«éèŠãªããšã¯ãããã®ãããã°å¯èœæ§ã§ãã
ãããã¹ã¿ãã¯ãã¬ãŒã¹ãå£ããªãããšãé¡ã£ãŠããŸãã pdb
ãã¡ã€ã«ãŸãã¯ããçš®ã®ãããã°ã·ã³ãã«ãå«ããããšãã§ããããã«ããããšæããŸãã
å§çž®ã«ã€ããŠã¯ãã»ãšãã©ã®å Žåãå®éã®é
ä¿¡ã¡ã«ããºã ããã§ã«å§çž®ãããŠããããšãèæ
®ã«å
¥ããŠãã ããã
ããšãã°ãnugetããã±ãŒãžã
ãŠãŒã¶ãŒã¯è§£åããããšã«ãããªã粟éããŠããã®ã§ãããã¯ããã»ã©åé¡ã§ã¯ãããŸããã
ãµã€ãã§å§çž®ã§ãããšæããŸãã
ããããšãã@ ayendeïŒ ããªãã¯ç§ããããã°å¯èœæ§ãåŒã³åºãã¹ãã ã£ããšããããšã¯æ£ããã§ãã ãããã°ã«åœ±é¿ãäžããå¯èœæ§ã®ãããã€ããŒãªæ¹æ³ã¯ãããããã ãšæããŸãã
ãpdbãã¡ã€ã«ãå«ããããšèšããšããåäžãã¡ã€ã«ã®ãã«ãããããã°ããå¿ èŠãããå Žåã«åããŠãããããåäžãã¡ã€ã«ã®_å éš_ã«çæããæ©èœããŸãã¯ããããçæããŠãã³ã°ã¢ããããæ©èœãå¿ èŠã§ããïŒ
1ïŒç§ãã¡ã«ãšã£ãŠåé¡ã§ã¯ãããŸããã EïŒCã¯ãæ¥åžžã®å±éã§ã¯ãªãå®éã®å±éã«ã®ã¿äœ¿çšãããå¯èœæ§ãé«ããããããã§ã¯é¢ä¿ãããŸããã
2ïŒçæ³çã«ã¯ã1ã€ã®ãã¡ã€ã«ãšåŽé¢ã®pdbã®ã»ããã§ã¯ãªããPDBãå«ããã¹ãŠã®ãã¡ã€ã«ã«å¯ŸããŠåäžã®ãã¡ã€ã«ããããŸãã ãã§ã«åã蟌ãŸããPDBãªãã·ã§ã³ããããŸãããããæ©èœããã®ã§ããã°ãããã¯çŽ æŽãããããšã§ãã
3ïŒãããã°ã«ã€ããŠè©±ããšããç§ã¯ãããã¬ãŒãã©ã€ãã§æ¥ç¶ããã®ã§ã¯ãªããå®çšŒåæéã«ã€ããŠè©±ããŸãã å
·äœçã«ã¯ããã¡ã€ã«çªå·ãè¡çªå·ãªã©ã®ã¹ã¿ãã¯ãã¬ãŒã¹æ
å ±ããã³ãã®èªã¿åãæã«ã·ã³ãã«ã解決ã§ããããšãªã©ã§ãã
ç§ãã¡ã«ãšã£ãŠã®ãã1ã€ã®è³ªåã¯ãåã ã®ã³ã³ããŒãã³ãã«å¯ŸããŠããããå®è¡ã§ãããã©ããã§ãïŒããããã¹ããŒãžã³ã°ãããŠããå ŽåããããŸãïŒã ããšãã°ãå€ãã®äŸåé¢ä¿ã䜿çšããã©ã€ãã©ãªdllããããŸãã ããããããã±ãŒãžåã§ããã°ãããŒãžã§ã³ç®¡çãªã©ã®å€ãã®æéãçãããšãã§ããŸããããããé çªã«exeã«ããã±ãŒãžåã§ããã°ãããã«äŸ¿å©ã«ãªããŸããïŒ
@tpetrina @ayende @bencyoung @Kosyne @expcat質å3ã«ãã¯ãããšçããŸããïŒãã¢ããªã¯ãã¢ããªã®ãã«ãã«å ã å«ãŸããŠããªãã£ããã©ã°ã€ã³ããã®ä»ã®å€éšdllãããŒãããŸããïŒãïŒ-ãŠãŒã¹ã«ã€ããŠè©³ããæããŠãã ããå ŽåïŒ
åäžãã¡ã€ã«é åžã®äž»ãªã»ãŒã«ã¹ãã€ã³ãã¯ãé åžãããã¡ã€ã«ã1ã€ãããªãããšã§ãã ã¢ããªã®ãã©ã°ã€ã³ãå¥ã ã®ãã¡ã€ã«ã«ããå Žåããšã«ããè€æ°ã®ãã¡ã€ã«ãããåäžã®ãã¡ã€ã«é åžããã©ã®ãããªäŸ¡å€ãåŸãããŸããïŒ ã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ã¯ãéåžžããŠãŒã¶ãŒèªèº«ãå®çŸ©ããæ¹ãã¯ããã«ç°¡åã§ãã
ãã®ã·ããªãªã§ã¯ããŠãŒã¶ãŒã«ããç¹å®ã®æ¡åŒµæ©èœãèš±å¯ãããããéåžžã¯1ã€ã®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ã¯ååŸãããŸããã
ãã£ã¹ã¯å®¹éãåé¡ã«ãªãå¯èœæ§ããããŸãããŸããã¢ã¯ã»ã¹ããªã·ãŒãªã©ã«ããã©ã³ãã ãªãã¡ã€ã«ããã¯ãåé¡ã«ãªãå¯èœæ§ããããŸãã
ãã®æ©èœã䜿çšãããã®ã§ããã以åã¯æ€åºã§ããªãã£ãå€æ°ã®ãã§ã€ã«ã¢ãŒããè¿œå ãããå Žåã¯äœ¿çšããŸããã
@Kosyneã«åæ-ææ¡ãããåæãœãªã¥ãŒã·ã§ã³ã¯ãããçš®ã®ãã€ã³ã¹ããŒã©ãŒããåçŽã«èªååããããã§ãã ãããç§ãã¡ã1人ã®å¹¹éšã§è§£æ±ºããããšããŠããåé¡ã®éçã ã£ããšããããç§ãã¡ã¯çããã®èªååãèªåãã¡ã§å®è¡ããã ãã ãšæããŸãã
åäžã®execææ¡ã®äž»ãªç®æšã¯ã管çãããŠããªãã·ã¹ãã ã§å®è¡å¯èœãã¡ã€ã«ãå®è¡ã§ããããã«ããããšã§ãã éžæããå®å ã®ãã€ã³ã¹ããŒã«ããã£ã¬ã¯ããªãžã®æžã蟌ã¿ã¢ã¯ã»ã¹æš©ãããããã©ããã¯èª°ã«ãããããŸããã èµ·ååŸãïŒããã©ã«ãã§ã¯ãªãïŒããèªäœã®ã¢ãŒãã£ãã¡ã¯ããæ®ããŠã¯ãªããŸããã
äžèšãæºããããã®æ¢åã®ææ¡ãžã®å°ããªå€æŽãšããŠïŒã¡ã¢ãªã«è§£åããŠããããå®è¡ã§ããŸãããïŒ
æ®ãã®ã³ã¡ã³ãã«åæããŸãã å¥ã®å Žæãžã®è§£åã¯ã_ãã§ã«_å©çšå¯èœã§ãã
æœåºãããå€ãããªãç°¡åã«å®è¡ããèªå·±è§£ååzipãäœæã§ããŸãã ããã¯ããããçããããšãæå³ããŠãããã€ã³ã¹ããŒã«ã®åãªãå¥åã§ãããšããå€ãã®æžå¿µã«çãããã®ã§ã¯ãããŸããã
ãã¡ã€ã«ã®å Žæã¯éèŠã§ãã ããšãã°ãç§ãã¡ã®å Žåãããã¯æ¬¡ã®ããšãæå³ããŸãã
ãŠãŒã¶ãŒã®1人ã¯ãå®éã«ã¯HDãå®è¡ã§ããªãã·ã¹ãã ã§ãDVDãããœãããŠã§ã¢ãå®è¡ããå¿ èŠããããŸããããã¯ã©ã®ããã«æ©èœããŸããã
ç§ã¯ããã¹ãŠãã¡ã¢ãªå ã§å®è¡ããæ¹ãããããšã«åæããŸãã ãããŠãèµ·åæéã«ã€ããŠã®æžå¿µã¯ããã»ã©å€§ãããããŸãããåèµ·åãããã³ã«ãããæ¯æãããå¿ èŠã«å¿ããŠæåã§ããã軜æžããããã®æé ãå®è¡ããããšã§åé¡ãããŸããã
ããã§ã®ãã1ã€ã®åé¡ã¯ãå®éã®ãµã€ãºã§ãã ãããåãªãïŒäºå®äžïŒã€ã³ã¹ããŒã©ãŒã§ããå Žåãããã¯ãæ°çŸMBã®åŠ¥åœãªã¢ããªã®ãã¡ã€ã«ãµã€ãºã«ã€ããŠè©±ããŠããããšãæå³ããŸãã
ææ¡ããããœãªã¥ãŒã·ã§ã³ãæ§ç¯ããããã«ãCLRãå€æŽããå¿ èŠã¯ãªãããã§ãïŒãããšããŠãïŒã ãŠãŒã¶ãŒã¯ãã§ã«ãã®ãããªãœãªã¥ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã ãããCoreCLRã«è¿œå ããŠãæå³ããããŸããã ç¹ã«ããã®ãŠãŒã¹ã±ãŒã¹ã¯ããªãçãå ·äœçã§ããããã§ãã
@GSPPããã¯åºæ¬çã«ãä»æ¥7z-Extra
ã§ã§ããããšã®ããã§ãããã®å Žåã¯ããŸã£ããæã£ãŠããªãæ¹ãããããšã«åæããŸãã
ç³ãèš³ãããŸãããããã®ããŒãã£ãŒã«é
ããŸããã远跡ããŠããéè€ãã±ããã«æçš¿ããããªã³ã¯ããã©ã£ãåŸãããã«å°çããŸããã
ããã§ææ°ã®ã³ã¡ã³ããèªãã åŸããããã³ã°ãšæœåºãæ€èšããŠããããšããè©«ã³ç³ãäžããŸãã ããã¯ããéãã®ããã§ãããåºæ¬çãªã³ã³ãœãŒã«ã¢ããªã«SFAãå±éããæ©èœããå§ããŠã¿ãŸãããïŒ ããã€ãã®ãããã¯ãŒã¯ãIOãããã³åäžã®ãã¡ã€ã«ã«ããããã€ãã®å€éšäŸåé¢ä¿ïŒnugetãªã©ïŒã䜿çšããŠãåºæ¬çãªã³ã³ãœãŒã«ã¢ããªãäœæã§ããã¯ãã§ãã
ç§ãèšãããšããŠããã®ã¯ããã¹ãŠã®äººã®èŠä»¶ãåéããã®ã§ã¯ãªãã誰ã®èŠä»¶ââãåéããã代ããã«ããã¹ãŠã®äººã«ãšã£ãŠæå³ããããçµæãããã«åŸãããæåã®å埩ããå§ããŸãã
ããã¯åºæ¬çã«ç§ã7z-Extraã§ä»æ¥ã§ããããšã®ããã§ã
ãã®åé¡ã«å¯ŸåŠããããã®ããã°ã©ãã³ã°ç°å¢ã«ãšããããªããœãªã¥ãŒã·ã§ã³ãä»æ¥ååšããŠããã®ã¯æ£ããããšã§ãã å€ãã®ãã¡ã®å¥ã®äŸïŒ https ïŒ//www.boxedapp.com/exe_bundle.html
ããã§ã®ä»å 䟡å€ã¯ãããããããããŒã«ãžã®çµ±åã§ãããå°é家ã§ãªããŠãŒã¶ãŒã§ãç°¡åã«å®è¡ã§ããŸãã ããªããææããããã«ããšãã¹ããŒããŠãŒã¶ãŒã¯æ¢åã®ããŒã«ãã€ãªãåãããããšã§ä»æ¥ãããè¡ãããšãã§ããŸãã
å人çã«ã¯ãããã§æ£ããéžæãããŠããããšãæ確ã§ã¯ãªãããšã«åæããŸãã ããã«ã€ããŠã¯ãã³ã¢ããŒã å ã§å€ãã®è°è«ããããŸããã
ã€ã³ã¿ãŒã³ãé 眮ããŠã°ããŒãã«ããŒã«ïŒæšå¥šãããŠããŸããããµããŒããããŠããŸããïŒã䜿çšããããšãåæ§ã«æ©èœããã€ã³ã¹ããŒã«ãããªãç°¡åã§ãã
äºå®äžãç§ãã¡ã¯dotnet publish-single-file
ã«ã€ããŠè©±ããŠããŠãããã¯èå°è£ã§å¿
èŠãªãã¹ãŠãè¡ãã§ãããã
ãã®ã·ããªãªããµããŒãããããã«ãã¬ãŒã ã¯ãŒã¯ãŸãã¯ã©ã³ã¿ã€ã ã«å®éã«å¿
èŠãªãã®ã¯äœããããŸãããããããã¬ãŒã ã¯ãŒã¯ã®å€éšã«æ瀺çã«äœæããããšã§ããŠãŒã¶ãŒããããå€æŽããæ¹æ³ã«ã€ããŠããå€ãã®èªç±ãåŸãããšãã§ããŸãã
ãã¬ãŒã ã¯ãŒã¯ã«å€æŽãå ãããå Žåã«ååŸããPRïŒé¢é£ãããã¹ãŠã®ã»ã¬ã¢ããŒãåŸæ¹ã³ã³ãã¯ããã»ãã¥ãªãã£ãªã©ïŒãååŸãããå¿
èŠãã¯ãããŸããã
äžè¬çãªå¯æ¥ãããžã§ã¯ãããã©ãŒã¯ããŠäœ¿çšããã ãã§ãã
ãã®æ©èœã欲ããã®ãšåãããããå€éšãããåãããã«å®è¡ã§ãããã®ïŒã€ãŸããåžžã«å ¥åãããããšãæå³ããŸãïŒãå ¥ããããªãããšã«æ³šæããŠãã ããã
ããé«ãã¬ãã«ã®è³ªåããããã®ã§ãããåäžãã¡ã€ã«ã®é
åžãåžæãã顧客ã®äž»ãªåæ©ã¯äœã§ããïŒ
ããã¯äž»ã«ïŒ
ãã®æ©èœãããã»ã©éèŠã§ã¯ãªãããŸãã¯å°ãªããšãããã®ã³ã¢æ©èœã»ããã«å«ããã®ã¯è¯ãç®æšã§ã¯ãªããããããªããšäžéšã®äººã«èªãŸããŠããã®ã§ã¯ãªãããšå°ãå¿é
ããŠããŸãã ç¹°ãè¿ãã«ãªããŸããã倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®ãµãŒãã¹ãŸãã¯ãµãã¢ãžã¥ãŒã«ãšããŠæ©èœããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã¯ãéåžžã«åŒ·åã§ãããšæããŸãã äœè
ã§ããããªããéçºè
ã§ãããªããããããŸããã ã€ã³ã¹ããŒã«ïŒèªåãŸãã¯ãã®ä»ïŒã§ã®ã¿è§£æ±ºã§ããäŸåé¢ä¿ã®èŠä»¶ãããŠãŒã¶ãŒã«ããè¿œå ã®ã»ãã¥ãªãã£åŒ·åãå¿
èŠã«ãªãå¯èœæ§ã®ãããã£ã¹ã¯äžã®å®è¡åŸã®ã¢ãŒãã£ãã¡ã¯ããªã©ãæž¡ãå¿
èŠã¯ãããŸããã
ä»ã®ãšããã.NETã¯ãã®ããããªåé¡ã«ã¯é©ããŠããŸããã ããããããã¯å¯èœæ§ããããŸãïŒãããŠIMOã§ãªããã°ãªããŸããïŒã
ã³ã³ãã€ã«ãããå®è¡å¯èœãã¡ã€ã«ã¯æ¬¡ã®æ¡ä»¶ãæºãããŠããå¿ èŠããããŸãã
Re @ swaroop-sridharç§ã¯ãããŠããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«ç¬èªã®ããã©ãŒãã³ã¹ããŒãºã®é åºããããšæããŸãããããã£ãŠãã³ã¢ãœãªã¥ãŒã·ã§ã³ã«åãçµãã åŸã®æåã®ã¢ãããŒãã¯ãã¶ãäžãã£ãŠããæç©ãéžã³ãããããé²ãããšã ãšæããŸãã
@ swaroop-sridharç§ã«ãšã£ãŠãããã¯ãšã³ããŠãŒã¶ãŒã«ãšã£ãŠã®ããã±ãŒãžã³ã°ãšäœ¿ããããã«é¢ãããã®ã§ãã
ã·ã¹ãã å
šäœã®ã€ã³ã¹ããŒã«ãåŠçããå¿
èŠã¯ãããŸãããã¯ãªãã¯ããŠå®è¡ããã ãã§ãã
ãœãããŠã§ã¢ãåã蟌ãããšãã§ããåäžã®ãã¡ã€ã«ã¢ããªã³ã®æ¹ãã¯ããã«ç®¡çãããããããããã¯éèŠã§ãã
@strichåã蟌ã¿ã«ã€ããŠã®ãã€ã³ãã¯è¯ããã®ã§ãã ç§ãã¡ã¯äžè¬çã«ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®ã³ã³ããŒãã³ããšããŠäœ¿çšãããŠããããããã€ã®ãªãŒããŒããããæžããããšã§ããã容æã«ãªããŸãã
åé¡ã¯äœã§ããªããããããéèŠãªæ©èœã§ãããã©ããã§ãã åé¡ã¯ãææ¡ããããœãªã¥ãŒã·ã§ã³ïŒåºæ¬çã«ã¯ãã®æç¹ã§ç©äºãå§çž®ããïŒã_ã³ã¢å
_ã«ããå¿
èŠããããã®ã§ãã
ã³ã¢ã«ãããã®ã¯ãå€æŽã®åºæºãã¯ããã«é«ããªã£ãŠããŸãã ãããå€éšããŒã«ãšããŠäœ¿çšãããšãå€æŽãæ¡åŒµãç°¡åã«ãªããããããé©åã«ãªããŸãã
æ£çŽã«èšããšãç§ã¯ããããã£ãšè¯ãéžæè¢ãèŠãããšæã£ãŠããŸãã ããšãã°ããã¡ã€ã«ã®ä»£ããã«ã¡ã¢ãªããdllãããŒãããããšãå¯èœã§ãïŒããã€ãã®äœæ¥ãå¿
èŠã§ãããå¯èœã§ãïŒã
ãã®å Žåã¯ãçŽç²ãªã¡ã¢ãªã«å¯ŸããŠã¢ã³ããã¯ãå®è¡ãããã£ã¹ã¯ã«ãããããããšãªããçŽç²ã«ã¡ã¢ãªãã_å
šäœ_ãå®è¡ã§ããŸãã
ãããæå¹ã«ããã«ã¯ãã©ã³ã¿ã€ã ãå€æŽããå¿
èŠãããå¯èœæ§ãéåžžã«é«ããããããã¯ã³ã¢ã«çµã¿èŸŒãŸããã¹ããã®ã§ãã
ãããŠãããèªäœãå
å€ã§äŸ¡å€ãããã§ãããã ãããŠãç§ãã¡ãçŸåšã§ããããšã§ã¯ãããŸããã
ãããã£ãŠãè¯ãäŸã¯ãHashicorpã®é äºã®ãããªGoããŒã«ã®çµéšã調ã¹ãããšã§ãã å®è¡äžã®ä»»æã®ãã·ã³ã«ããããã§ããåäžã®exeãã¡ã€ã«ã ã€ã³ã¹ããŒã©ãŒãããã©ã«ããŒã®ã³ããŒããäœçŸãã®ãã¡ã€ã«ã®ãªã¹ãã«ããæ§æãã¡ã€ã«ã®æ€çŽ¢ããæ¬åœã«çŽ æŽããããšã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã§ãã
ç§ãã¡ã«ãšã£ãŠãã€ã³ã¡ã¢ãªã¢ãããŒããæ©èœãããã©ããã¯ããããŸãããããã¯ããã©ã°ã€ã³dllã§ãæ©èœããããã«ããããã§ãïŒãããã£ãŠããã©ã°ã€ã³ãåé€ãããšããã¹ãŠã®äŸåé¢ä¿ã§ã¯ãªãåäžã®ãã¡ã€ã«ã«ãªããŸãïŒãè¯ãã Fody.Costuraã調ã¹ãŸããããããã¯ããã€ãã®åé¡ã§ããŸãæ©èœããŸããã.NETCoreã§åé¡ãçºçããŸããã
ãããã£ãŠãè¯ãäŸã¯ãHashicorpã®é äºã®ãããªGoããŒã«ã®çµéšã調ã¹ãããšã§ãã
ãããšãé äºã®ãããªããŒã«ã®å Žåãçæ³çãªè§£æ±ºçã¯ããã®èªå·±è§£ååã®å³èã§ã¯ãªããcorertã§ãã
@mikednãªãã§ïŒ AOTãŸãã¯JITã®ã³ã³ãã€ã«ãå±éæ¹æ³ãšäœã®é¢ä¿ãããã®ãââããããŸãããïŒ
@strichã®èšèã2çªç®ã«èšãããã®ã§ãããåäžãã¡ã€ã«ã®ãããã€ã¯ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®ãããã€ã ãã§ãªããã³ãã³ãã©ã€ã³ãåããå°ããªããŒã«ã§ããïŒãŸãã¯å°ãªããšããã®å¯¿åœãéå§ããïŒã³ã³ãœãŒã«ã¢ããªã«ãšã£ãŠãæ°é®®ãªç©ºæ°ã®æ¯å¹ã«ãªããŸããã¹ã€ããã
ãªãã§ïŒ AOTãŸãã¯JITã®ã³ã³ãã€ã«ãå±éæ¹æ³ãšäœã®é¢ä¿ãããã®ãââããããŸãããïŒ
ããã¯ããªããæããã®ãæ£ç¢ºã«æäŸããã®ã§-ããªããã©ããªãã·ã³ïŒãŸããé©åãªOSãæã£ãŠããã©ããªãã·ã³ã§ããçµå±ã®ãšãããã€ãã£ããã¡ã€ã«ã§ãïŒã«ããããããŠå®è¡ã§ããåäžã®exeãã¡ã€ã«ã ãŸãããªãœãŒã¹ã®äœ¿çšéãå°ãªããªãåŸåããããŸããããã¯ãé äºé€šãªã©ã®ãšãŒãžã§ã³ãã«ãšã£ãŠã¯è¯ãããšã§ãã ããã¯ãèªå·±è§£ååãœãªã¥ãŒã·ã§ã³ãšããããããGoãæäŸãããã®ãšã»ãŒåçã§ãã
@mikednæšæž¬ããŸããã
1ïŒããã¯ïŒç§ãç¥ãéãïŒçç£åœ¢æ
ã§ã¯ãŸã å®éã«ã¯ååšããŠããŸããïŒ
2ïŒå€ãã®åçæ©èœïŒILçæãä»»æã®åå°ïŒã䜿çšããŸã
3ïŒãã©ã°ã€ã³ãè¿œå ã§ããããã«ãããïŒããã§ãçæ³çã«ã¯å§çž®ãããŠããïŒ
ãã®åé¡ã¯äººã ã«äœã欲ããããå°ããããšã«é¢ãããã®ã ã£ãã®ã§ãç§ãã¡ã¯ç§ãã¡ã®æèŠãè¿°ã¹ãŠããã ãã§ãïŒ ãã®ã¡ãªãããåŸãããã ãã«ãå¥ã®ã©ã³ã¿ã€ã ã¢ãã«ã«åãæ¿ããå¿ èŠã¯ãããŸããã ç§ã«ãšã£ãŠã圌ãã¯çŽäº€ããæžå¿µã§ã
AOTãŸãã¯JITã®ã³ã³ãã€ã«ãå±éæ¹æ³ãšäœã®é¢ä¿ãããã®ãââããããŸãããïŒ
JITããªããã°ããããã°ã¹ããŒãªãŒã®ãããªãã®ãååã«ããŸãååŸããã®ã¯ç°¡åã§ãã JITã®éšåã¯åé¡ãé£ããããŸãããã®ãããGoã§ã¯åé¡ãèŠã€ããããšãã§ããŸããã ããã¯ãšã³ãžãã¢ãªã³ã°ã§ãããããããå°é£ãªåé¡ã«å€ãã®ãšã³ãžãã¢ãæå ¥ããŠæ°ããè€éãã«èããããä»ã®å Žæã«ã¹ã³ãŒããçµãããšãã§ããŸãã å¿ èŠãªã¹ãã«ãæã€ãšã³ãžãã¢ã®æ°ãéãããŠãããããèªå·±è§£ååãã¡ã€ã«ã¯ããã調æ»ããŸãã
Goãããžã§ã¯ãïŒJITèŠä»¶ãªãïŒã«äŒŒããããžã§ã¯ããæã£ãŠãã人ã¯ããå®éšçãã©ãã«ãä»ããŠããã°ãCoreRTã«ããªãæºè¶³ããŠãããããããŸããã æè¿ã¯ç°¡åã«è©Šãããšãã§ããŸãã å®å šãªCoreCLRãšåãã¬ããŒãžã³ã¬ã¯ã¿ãŒãã³ãŒããžã§ãã¬ãŒã¿ãŒãCoreFXãããã³ã»ãšãã©ã®CoreLibã䜿çšããèªå·±å®çµåã®å°ããªå®è¡å¯èœãã¡ã€ã«ïŒ1æ¡ã®ã¡ã¬ãã€ãïŒãçæããŸãã
ããã¯ïŒç§ãç¥ãéãïŒçç£åœ¢æ ã§ã¯ãŸã å®éã«ã¯ååšããŠããŸããïŒ
ã¯ããç§ã®ã³ã¡ã³ãã¯äž»ã«MSã®äººã ã察象ãšããŠããŸããïŒç¬é¡ïŒã 圌ãã¯ããããã¹ãŠã®äžŠè¡ãããé¢é£ãããé²è¡äžã®ãããžã§ã¯ã/ã¢ã€ãã¢ïŒcorertãillinkerïŒãæã£ãŠãããä»ã§ã¯ãã1ã€è¿œå ããŠããŸããããã¯ãå€ãã®äººããã§ã«ææããŠããããã«ãããŸããç§ãã¡ã¯ãããè¡ãããšãã§ããŸãç§ãã¡èªèº«ãã®ãããªãã®ã ãŸãããã¡ã€ã«ããé ãããã£ã¬ã¯ããªã«æœåºãããªã©ã®æ¬ ç¹ããããŸãã
å€ãã®åçæ©èœïŒILçæãä»»æã®åå°ïŒã䜿çšããŸã
ããã¯ãã³ãã¥ããã£å šäœãèãçŽããããšæããããããªãããšã§ãã 確ãã«ãããã§ããã®ã¯äŸ¿å©ã§ãããåäžãã¡ã€ã«ã®å±éã®ãããªä»ã®æ¬²æ±ãšã¯äžçš®ã®ççŸããããŸãã ããã§ãåäžãã¡ã€ã«ã®ãããã€ã¡ã³ããååŸã§ããŸãããããã¯ã³ã¹ãããããåŸåããããŸã-ããªã倧ããªãã¡ã€ã«ã§ãã ããªããããã§å€§äžå€«ãªããããã¯å®å šã«åé¡ãããŸããã ããããç§ã®çµéšã§ã¯ããã¡ã€ã«ã倧ããã»ã©ããåäžãã¡ã€ã«ãã®åŽé¢ã®æçšæ§ã¯äœããªããŸãã
@MichalStrehovsky確ãã«ãããŸããŸãªãªãã·ã§ã³ããããŸãã ãã ããç§ãã¡ã«ãšã£ãŠã¯å®éšçãªãã®ã䜿çšããããšã¯ã§ããïŒ.NET Coreã«ç§»è¡ããææãååã«å°é£ã§ãããšç¢ºä¿¡ããŠïŒãäžæãã©ã«ããŒãžã®æœåºããã®å Žåã¯æ©èœããªããšæããŸãã ãã ããææªã®å Žåã¯ããã®ãŸãŸç¶è¡ãããã®æ©èœã䜿çšããŸããã
ãããç§ãã¡ãæãããã«é²ãã ããããã¯ç§ãã¡ãæããã®ã§ã:)
@mikednåæããŸãã è€æ°ã®äžŠåãœãªã¥ãŒã·ã§ã³ã¯ããã«æ··ä¹±ãæããŸãã ç§ãã¡ã®çæ³çãªè§£æ±ºçã¯ãããçš®ã®ã¹ãŒããŒILLinker /ãŠã£ãŒããŒã¢ãããŒãã ãšæããŸããããããå®è¡ããŠãæçµçã«ã©ãã«å°éãããã確èªã§ããŠããããã§ãã
ç§ã¯ãã®æ©èœã®çéžã«æ¬åœã«è奮ããŠããŸãããTBH@morganbrã«æçš¿ããæåã®ææ¡ã«ã€ããŠãåæ§ã«è奮ããŠããŸããã ããªããæèµ·ãã質åã®ãªã¹ãã«å¯Ÿããç§ã®çãã¯ãä»ã®äººãæçš¿ãããã®ãšäŒŒãŠããŸãïŒãããã£ãŠãå ±éã®æãŸããæ©èœã®ã»ããããããšæããŸãïŒããIMHOãææ¡ããããã£ã¹ã¯ã«è§£åããœãªã¥ãŒã·ã§ã³ã¯ãç§ãæãã§ãããã®ã§ã¯ãããŸããå®è£ ãããä»ã®äººãèšã£ãããã«ããç æ°ããããã»ãšãã©æªãã§ãããã @jkotas
@strichãš@ayendeã«åæããŸã
ã³ã³ãã€ã«ãããå®è¡å¯èœãã¡ã€ã«ã¯æ¬¡ã®æ¡ä»¶ãæºãããŠããå¿
èŠããããŸãã
é¢é£ãããã¹ãŠã®äŸåé¢ä¿ãããã±ãŒãžåããŸã
å®è¡ã¢ãŒãã£ãã¡ã¯ãããªãïŒãã£ã¹ã¯æžã蟌ã¿ããªãïŒ
ãã£ã¹ã¯ã§ã¯ãªãã¡ã¢ãªãã.dllãããŒãããã®ã¯ç°¡åã§ã¯ãªããããããŸããããããã¯IMOãMSFTäœã¬ãã«éçºè ã®æ·±ãå°éç¥èã«å€ããçš®é¡ã®æ©èœã§ãïŒãããŠCoreClrã§æŽ»çšããŸãïŒãå€éšããŒã«ïŒãã§ã«ãããŸããhttpsïŒ//github.com/dgiagio/warpãåç §ããŠãã ããïŒã ãããéæãããå Žåãæåã®å®è¡ãšåŸç¶ã®å®è¡ã®éã«ã©ã®ãããã®æéå·®ãããã®ã ãããïŒ ã€ã³ã¹ãã¬ãŒã·ã§ã³/äŸãšããŠãLinux3.17以éã«ã¯dlopenã§äœ¿çšã§ããmemfd_createããããšæããŸãã
å¥ã®ãããã¯ã§ã¯ããã©ã°ã€ã³ããµããŒãããããã®èŠä»¶ãââèšèšææ¡ã®ã€ã³ããã¯ã¹ãéå°ã«äœæããŠããã®ã§ã¯ãªãããšæããŸããïŒ ãã®æ©èœããªããã€ã³ãã䟡å€ãããã®ã§ããã®æ©èœãå¿ èŠãšãã人ã ããæœåšçãªããã«ãã£ïŒæšã®æºãã®æ¬ åŠãªã©ïŒã被ããä»ã®ãã¹ãŠã®äººïŒå€§å€æ°ïŒïŒã¯å±éå¯èœãªãµã€ãºã®çž®å°ãããã©ãŒãã³ã¹ã®å©ç¹ãåŸãããšãã§ããŸãïŒïŒïŒ
@ swaroop- sridhar @MichalStrehovskyã«æ»ããšãç°ãªãå¯èœæ§ã®ãã2ã€ã®å¹ åºããŠãŒã¹ã±ãŒã¹ãèŠãããšãã§ããŸãã1ã€ã®ãœãªã¥ãŒã·ã§ã³ã§ãã¹ãŠã®äººã«å¯Ÿå¿ããã®ãå°é£ã«ããã®ã«ååãªç®æš/èŠæã§ãã
ãã®ãã¬ã€ã³ãã³ããããçšåºŠæå³ãããããšãé¡ã£ãŠããŸããç§ã¯æ¥ãã§ããã€ããã¯ãããŸãããããã®ãããã¯ã«éåžžã«èå³ãããã®ã§ããã£ãŒãããã¯ãæäŸããã ãã§ãã 倧å€ãªåªåãããŠããã ããã³ãã¥ããã£ããã®æèŠãåã£ãŠããã ãããããšãããããŸãã :)
ãã©ã°ã€ã³ã«ã€ããŠã
åºæ¬çã«ãç§ãæãã®ã¯ã Assembly.LoadFrom
ãŸãã¯LoadLibrary
ã®åŒã³åºãã§ãããã¯ãããªãããšã ãã§ãã
ç§ã¯ä»ã«äœãå¿
èŠãšãããæ®ãã¯èªåã§è¡ãããšãã§ããŸãã
@ayende ãLoadFromãªã©ã§ãããã¯ãããããšã¯ã©ãããæå³ã§ããïŒ
ããšãã°ãããã«é¢ããææ¡ã®äžéšã«ã¯CoreRTãå«ãŸããŠããŸãããããã¯ãïŒããããïŒãããŒãžDLLãããŒãããããšã¯ã§ããªãããšãæå³ããŸãã
ãã ãããããŒãždllãžã®ãã¹ãæå®ããŠã¢ã»ã³ããªãååŸãããããã€ãã£ãdllã§LoadLibrary
ãåŒã³åºãããšãã§ããéããããããã©ã°ã€ã³ã¡ã«ããºã ã§åé¡ãããŸããã
ãã©ã°ã€ã³ã·ããªãªã¯_èæ ®ãã¹ã_ãã®ã§ã¯ãªãã_ãããã¯ãããã¹ãã§ã¯ãªããã®ã§ããããšãæ確ã«ããããã«ãããèšã£ãŠããŸãã
ç§ã¯ã³ãŒããæãäžããã®ã«å°ãæéãè²»ãããŸããããäžèŠãããšãããã¯_å¯èœ_ã§ããã¯ãã§ãïŒWindowsã«ã€ããŠè©±ãã®ã¯ç©äºãåçŽã«ããããã ãã§ãïŒïŒ
MemoryModule
ïŒhttps://github.com/fancycode/MemoryModuleïŒã®ãããªãã®ãåŒã³åºããŠãããããã¡ã¢ãªã«ããŒãããŸãããã¯ããã»ã©åçŽã§ã¯ãªããšæããŸãã ããšãã°ã ICLRRuntimeHost2::ExecuteAssembly
ã¯ãããã¡ãæäŸããæ¹æ³ãæäŸããããã£ã¹ã¯äžã®ãã¡ã€ã«ã®ã¿ãæäŸããŸãã
ããã¯ãããå®éã«ãããæ©èœãããããã®æåã®ïŒç§ã確信ããŠãããã®ã®ïŒã·ã§ãŒã¹ããããŒã«ããŸãã
é¢é£ãããã®ã倱æããå¯èœæ§ã®ãããã¡ã€ã«ãšããŠåç §ããå¯èœæ§ã®ããã³ãŒãã¯ãããããããšç¢ºä¿¡ããŠããŸãããããã¯ãåäžã®ãã¡ã€ã«execãå¿ èŠã§ãããšèšã£ããšãã«æå³ããããšã§ããããªããã®ãããªãã®ã§ããããœãªã¥ãŒã·ã§ã³ã¯ãå€éšã§ã¯ãªãCoreCLRã§å®è¡ããå¿ èŠããããŸãïŒzipã®äŸã®ããã«ïŒã
MemoryModuleã®ãããªãã®ãåŒã³åºã
MemoryModuleã䜿çšããŠããŒãããããã€ããªã¯èšºæã§ããïŒããšãã°ãéåžžã®ãããã¬ããããã¡ã€ã©ãªã©ã¯åäœããŸããïŒãMemoryModuleã¯ãã¹ãŠã®çµã¿èŸŒã¿OSã»ãã¥ãªãã£å¯ŸçïŒããšãã°ãã¢ã³ããŠã€ã«ã¹ãªã©ïŒãã¹ãããããŸãã ããã¯ããµããŒããããŠãããœãªã¥ãŒã·ã§ã³ãšããŠåºè·ã§ãããã®ã§ã¯ãããŸããã
ããã¯ããã»ã©åçŽã§ã¯ãªããšæããŸãã
ããã§ããæ¡åŒµãããŠããªãåäžã®ãã¡ã€ã«ãã³ãã«ããã®å®è¡ããµããŒãããã«ã¯ãæ°ããAPIïŒãããŒãžããšã¢ã³ãããŒãžãã®äž¡æ¹ïŒãå¿ èŠã«ãªããŸãã æ¢åã®ããã°ã©ã ãšã©ã€ãã©ãªã¯ãæ£ããæ©èœãããŸããã
ãã«ãŠã§ã¢å¯Ÿçã¹ãã£ã³ã€ã³ã¿ãŒãã§ã€ã¹ãåççã«èŠæ±ããããšã¯ã§ããŸãã
æè¿ã®ããã«ãWindowsãšã³ãžãã¢ã«ãã£ãŠMemoryModuleã«å®è£
ãããŸãã
memããããŒãããããã®ãå«ããã¹ãŠã®.netã¢ã»ã³ããªïŒ
https://twitter.com/WDSecurity/status/1047380732031762432?s=19
ç·šéïŒããŒãMemoryModuleã¯ãã€ãã£ãã¢ãžã¥ãŒã«ãããŒãããããã«OSã«çµã¿èŸŒãŸããŠãããã®ã®ããã«èãããŸããããæããã«ããã§ã¯ãããŸãããããã¯ããããäžèšã®ç§ã®ææ¡ãç¡èŠããã®ã«ååãªçç±ã§ã
2018幎12æ5æ¥æ°Žææ¥ã01ïŒ46 [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ã®åªããã©ã³ã¿ã€ã ã«åºå·ãããã€ãã£ãã³ãŒãããã«ããããŸãŸãå®å
šãªãã¬ãŒã ã¯ãŒã¯æ©èœãå¿
èŠãªäººã®ããã«ãJITãCoreRTã«çµã¿èŸŒãïŒãããŠã€ã³ã¿ãŒããªã¿ãŒã®äœæ¥ãæºåãæŽããŸã§æ¡åŒµããïŒããšã«éäžããŠã¿ãŸãããïŒ JITæ©èœãå¿
èŠãªå Žåãã¡ã¿ããŒã¿ãšJITãCoreRTã®ãã€ãã£ãã«ã³ã³ãã€ã«ãããå®è¡å¯èœãã¡ã€ã«å
ã«ä¿æããããšã¯å¯èœã§ã¯ãªãã§ããããã
ããã¯ãã¹ãŠã®äžçã§æé«ã§ã¯ãªãã§ããããïŒ äŸãã°ã å®è¡å¯èœãã¡ã€ã«ãæå°ã§ãèµ·åæéãæãçãå ŽåãCoreRTã®AOTã³ãŒãã®å¶éã¯ãJITãé
眮ããå®å
šãªãã¬ãŒã ã¯ãŒã¯æ©èœãä¿æããã人ã®ããã«ã¡ã¿ããŒã¿ãšILã³ãŒããä¿æããããšã§æ¡åŒµã§ããŸãã
IMOã¯ãé·æçãªç®æšã®åŠšããšãªãå¯èœæ§ã®ããçæçãªæ©èœã§ã¯ãªãããå¯èœãªéãæè¯ã®ããœãªã¥ãŒã·ã§ã³ã«çŠç¹ãåœãŠãå¿
èŠããããŸãã
ç§ã¯ééã£ãŠãããããããŸããããCoreCLRã®äžéšãšããŠåäžã®ãã¡ã€ã«ãå ¬éããããšã§ã顧客ãCoreRTããããã«é ãããããšãã§ããå€ãã®å Žåã顧客ã«ãšã£ãŠããè¯ããœãªã¥ãŒã·ã§ã³ã«ãªãå¯èœæ§ããããŸãã äŸãã°ã ãããã.NETã³ãŒããåäžã®ãã¡ã€ã«ãšããŠå ¬éã§ããããã«ãªããŸããããšãã©ã³ãåãããŠãã巚倧ãªãã¡ã€ã«ãäœæããŠããå Žåãèµ·åããã©ãŒãã³ã¹ãäœäžãããªã©ã®å Žåããã®ãè¥å€§åãã.NETã©ã³ã¿ã€ã ãã«ã€ããŠäººã ãåã³äžæºãèšãã®ãèŠãããšãã§ããŸãã ã .NETã«ã¯ãå®éã«ã¯CoreRTã®ãŸãã«ãã®ããã®åªãããœãªã¥ãŒã·ã§ã³ããã§ã«ãããŸãããå ¬åŒã®ãµããŒã/å ¬åŒã®è£œåã³ãããã¡ã³ãã¯ãããŸããã
ããããç§ã®æžå¿µã¯ãã»ãšãã©ã®å Žåã䞊å補åãæžããïŒ@mikednãåŒçšïŒãããã«ãã補åïŒããŒããããã®å ±æãå«ãïŒã«æ·±ãã³ãããããæ¡åŒµãããµããŒãããããšã«éç¹ã眮ããããšããããšã§ãã
䞊åæ§ã®äœã補å
.NETCoreãšãã1ã€ã®è£œåãããããŸããã CoreRTã¯ç¬ç«ãã補åã§ã¯ãªãã決ããŠãããªãããšã¯ãããŸããã ããã¯ããã®1ã€ã®è£œåã«ãªãã·ã§ã³ãè¿œå ããããšã§ãã çŸåšã®ãªãã·ã§ã³ã®äŸãããã€ã瀺ããŸããã¯ãŒã¯ã¹ããŒã·ã§ã³GCãšãµãŒããŒGCã èªå·±å®çµåã®ã¢ããªå ¬éãšãã¬ãŒã ã¯ãŒã¯äŸåã®ã¢ããªå ¬éã
@jkotasç§ã¯ç解ããŠããããªãã·ã§ã³ãè¿œå ããããšã¯éåžžçŽ æŽãããããšã«å®å
šã«åæããŸãã ã補åããšããèšèã®äœ¿çšãããªãã·ã§ã³/ãœãªã¥ãŒã·ã§ã³ãã«çœ®ãæããå Žåã.NET Coreå
šäœã®è£œåå
ã®ãªãã·ã§ã³/ãœãªã¥ãŒã·ã§ã³ãšããŠã®CoreRTã«å¯Ÿããåœç€Ÿã®è£œåã®åãçµã¿ããç§ãã¡ã®è£œåã§ãããã©ãããå®å
šã«ã¯ããããªããšããæžå¿µããããŸããä»åŸäœå¹Žã«ãããã£ãŠãµããŒããããããšã«å®å
šã«è³ããããšãã§ããŸãã APIãæéã®çµéãšãšãã«äºæž¬ã§ããªãé倧ãªå€æŽãè¡ããAPIãããã«ãšã©ãŸãããšãã§ãããã©ããããããªããŸãŸãçªç¶éæšå¥šã«ãªããšãããã©ããªããæ³åããŠã¿ãŠãã ããã MS以å€ã®ãšã³ãã£ãã£ã«ãšã£ãŠã補åã®äžéšã§ããããŒã«/ãªãã·ã§ã³ã¯åãããã«æããŸãã CoreCLRã§ã¯ïŒå°ãªããšãçŸåšã¯ïŒå®è¡ã§ããªãCoreRTã®ããã€ãã®æ©èœã«äŸåããŠããŸãïŒãã®ãã¡ã®1ã€ã¯ãå®è¡å¯èœãã¡ã€ã«ãPACEã§ä¿è·ãã倧éã®ã¡ã¿ããŒã¿ãILãªã©ãåé€ããæ©èœã§ããç°¡åãªéçãªã³ã¯ãåºç€ãšãªããã©ãããã©ãŒã ã®ç解ã®ãããããé£èªåãã³ã³ãã€ã©ãŒã«çŽæ¥çµã¿èŸŒãå¯èœæ§ãªã©ïŒã åºæ¬çã«ãCoreRTã§ã®ããªããMichalãä»ã®äººã®äœæ¥ã¯ãIMOãæåã«èšèšãããŠä»¥æ¥ã.NETãšã³ã·ã¹ãã ã§èµ·ãã£ãæé«ã®åºæ¥äºã®1ã€ã§ãããããåªå
ãããã¹ãã ãšæããŸãã æ°ããããŒã«/ãªãã·ã§ã³ã®è©±ããããšãã¯ãã€ã§ããCoreRTãªãã·ã§ã³ã®ä»£ããã«ãCoreRTãšç«¶åããŠãããšå
éšçã«èŠãªãããšãã§ãããªãœãŒã¹ã®å²ãåœãŠãééã£ãŠããããã«æããŸãã ç³ãèš³ãããŸããããè°è«ãåŒãããåºãã€ããã¯ãããŸããã§ãããCoreRTã®äœæ¥ãã©ãã»ã©é«ãè©äŸ¡ãããŠãããããããŠããã«ããç§ãã¡ã®äœäººãã¯ããããã©ãããã©ãŒã ã®æªæ¥ã§ããã¹ãã ãšä¿¡ããŠããããšã確èªãããã£ãã ãã§ãã
ãã®è°è«ããã以äžæ±æããããšã¯æ§ããŸãã ããŒã ã®çæ§ã®ãå€å¹žããç¥ãããæãã€ããããšã楜ãã¿ã«ããŠãããŸãã®ã§ããã£ãšçŽ æŽããããã®ã«ãªããšæããŸãã
@christianscheuerãã®åé¡ããã³ä»ã®CoreRTé¢é£ã®åé¡ã«é¢ãããã£ãŒãããã¯ã¯éåžžã«è²Žéã§ãã ããªãã¯ãã®è°è«ããŸã£ããæ±ããŠããŸããã
CoreRTãšã®ç«¶äºã®ããã«å éšçã«èŠãããšãã§ããæ°ããããŒã«/ãªãã·ã§ã³ã®è©±ããããŸã
ã³ã¢ããŒã ã®äžã§ãç§ãã¡ã¯ããã€ãã®ç°ãªããéå¿çãªããŸãã¯ã¯ã¬ã€ãžãŒãªãªãã·ã§ã³ã«ã€ããŠè©±ãåã£ãŠããŸãã ããã£ã¹ã¯ãžã®è§£åãã¯ãCoreRTãã«AOTãšã®éèŠãªç«¶åçžæã§ã¯ãªããšæããŸãã ããããã.NETãŠãŒã¶ãŒ/ã¢ããªã®ç°ãªãã»ã°ã¡ã³ãã察象ãšããŠããŸãã
å€ãã®ç°ãªããã£ãã«ïŒgithubã®åé¡ã察é¢ã®é¡§å®¢ãšã®äŒè©±ãå«ãïŒããã®ããŒã¿ãç·šéããåœç€Ÿã®è£œå管çããŒã ã¯ãããã§ææ¡ãããŠãããããªãœãªã¥ãŒã·ã§ã³ãæ倧ã®å©çã«ãªãããšã瀺åããŸããã ãã®æš©å©ã«é¢ãããã¹ãŠã®ããŒã¿ããããæãŸããçµæãåŸãããããšããŸã æ€èšŒããŠããŸãã
çŸæç¹ã§ãCoreRTæè¡ããµããŒããããŠãã.NETCore補åã®äžéšãšããŠãã€åºè·ããããããçŽæããããšã¯ã§ããŸããã ç§ã¯ããããŠããŒã¯ãªåŒ·ã¿ãæã£ãŠããããšãç¥ã£ãŠããŸãããããŠç§ãã¡ã¯ããããæçµçã«å©çãåŸãéèŠãª.NETãŠãŒã¶ãŒã®ã»ã°ã¡ã³ãã®ããã«ãã®ãããªãµããŒãããããœãªã¥ãŒã·ã§ã³ãåºè·ããã€ããã§ãã
åäžãã¡ã€ã«ã®é åžã¯ã次ã®å Žåã«æå³ããããŸãã
åã蟌ã¿ãªãœãŒã¹ãšããŠã®ã¢ã»ã³ããªãæœåºããŠäžæãã©ã«ããŒã«ã³ããŒããããšã¯ãMicrosoftã®å¿ èŠãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸããã ããã¯ãããå¿ èŠãšããã©ããªé¡§å®¢ã«ãã£ãŠãç°¡åã«å®è¡ããããšãã§ããŸãã
ãçã®ãåäžãã¡ã€ã«ãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ãããå€ãã®äŸ¡å€ãæäŸããŸãã
@jkotasããªãã®ã³ã¡ã³ãã¯ç§ã«å¿ å®ã§ãã äŒç€Ÿã®.NETéçºè ïŒLOB /ããã¯ãªãã£ã¹/çµ±åïŒã«CoreRTã«åãæ¿ãããã説åŸããã®ã¯é£ããã§ãããããªããªãã圌ãã«ãšã£ãŠã¯é£èºçãããããã§ãïŒç¹ã«ãå®éšçãªã©ãã«ãäžããããŠããå ŽåïŒãã圌ãã¯ãã®ã¹ã¬ããã®ãããªCoreã®æ¯èŒçåçŽãªïŒäœ¿çšããïŒãœãªã¥ãŒã·ã§ã³ãè°è«ãããŠããŸãã ããããšã
@ popcatalin81ç§ã¯å®éãããã§ã®ããªãã®æèŠã«åŒ·ãå察ããŸãã
å€ãã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠãèµ·åæéã¯æå³ããããŸããã å±éã®éçšäžã®è€éãã軜æžããç®çã§ãé·æéå®è¡ããããµãŒãã¹ã®èµ·åæéã®50ïŒ ãã100ïŒ ã®å¢å ãåãã§ãã¬ãŒããªãããŸãã
ãµãŒãã¹ã®èµ·åæéã«30ç§ãè¿œå ããŠããé·æçã«ã¯ãµãŒãã¹ã«ãšã£ãŠæå³ããããŸããã
ãŠãŒã¶ãŒåãã®ã¢ããªã±ãŒã·ã§ã³ã®å Žåãããã¯ãã©ãŒã«ãªãå¯èœæ§ããããŸããã3.0ããªãªãŒã¹ããããŸã§ãã»ãšãã©ãã¹ãŠã®CoreCLRã¢ããªã¯ã³ã³ãœãŒã«ãŸãã¯ãµãŒãã¹ã®ããããã§ãã
CoreCLRã«ã¯ããã¬ãŒã ã¯ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãã³ãã«ã§ããã¢ãŒãïŒèªå·±å®çµåã®ãããã€ã¡ã³ãïŒããã§ã«ããããã§ã¯ãããŸããã
ç§ãã¡ã®å ŽåïŒRavenDBïŒã¯ãããã€ãã®ç®çã®ããã«ããã_ä¿¡é Œ_ããŠããŸãã ãŸãããŠãŒã¶ãŒã䜿çšããŠãããã®ã«é¢ä¿ãªããç¬èªã®ãã¬ãŒã ã¯ãŒã¯ãéžæããæ©èœã ããã¯ãã°ããŒãã«ã«ã€ã³ã¹ããŒã«ããããã¬ãŒã ã¯ãŒã¯ã䜿çšããå¿
èŠããªãã管çè
ããã¬ãŒã ã¯ãŒã¯ã§ãããšæ±ºå®ãããã®ã«çžãããªãããšãæå³ãããããããã¯ç§ãã¡ã«ãšã£ãŠ_äž»èŠãª_å©ç¹ã§ãïŒä»¥åã¯å®è¡ããããšãèæ
®ã«å
¥ããŠããŸããïŒ .NET 4.0ã¯ãããšãã°4.5ããªãªãŒã¹ãããŠããæ°å¹Žçµã£ãŠãããããèŠçã ã£ãããšããããŸãïŒã
ãã1ã€ã®éèŠãªåŽé¢ã¯ããã¬ãŒã ã¯ãŒã¯ã®_ç¬èªã®_ãã©ãŒã¯ã§å®è¡ã§ããããšã§ãã ããã¯ãå€æŽããªããã°ãªããªãããšã«ééããå Žåã«éåžžã«åœ¹ç«ã¡ãŸãã
ãã®äžç°ãšããŠãç§ãã¡ã¯ããããµã€ã¯ã«ã®æææš©ãååŸããä»ã®èª°ãããããããã£ãŠã»ãããªãã
ç§ã¯VFSã_æ°ã«ããªã_ãããããå¿ èŠã«ãªããšã¯æããªãã ãããŠãç§ã¯å°çšã®APIãééããããããã€ãã®ããŒãããžã£ã³ãããŠããã®æ¹æ³ã§çæãããã¢ã»ã³ããª/ãã€ãã£ãdll/ãªãœãŒã¹ã«å°éããå¿ èŠãããããšã§å®å šã«åé¡ãããŸããã
ç§ã¯@briachtãããã®åé¡ã2æ¥éææãããã®ã§ãè°è«ã¯æ¬åœã«é
ããŠããŸãã
ç§ã®2ã»ã³ããè¿œå ãããã ãã§ãïŒ
æåã«@morganbrã®è³ªåã«å¯Ÿããç§ã®çãïŒ
ç§ã話ããŠããã¢ããªã±ãŒã·ã§ã³Greenshotã¯ãçŸåšãªãªãŒã¹ãããŠããããŒãžã§ã³ã¯ãŸã .NET Framework 2.0ãã¿ãŒã²ããã«ããŠããŸããïŒå®éã«ã¯ããã§ãïŒãææ°ããŒãžã§ã³ã§ã¯åé¡ãªãåäœããŸãïŒäžäœäºææ§ã¯è¯å¥œã§ãïŒã ã€ã³ã¹ããŒã©ãŒãå«ãã.NETFrameworkãå«ãŸãªãZheã®ããŠã³ããŒãã¯ãçŽ1.7MBã§ãã ãããéå§ããããã£ã¬ã¯ããªã«ã¯ã1ã€ã®.exeãš4ã€ã®.dllãå«ãŸãããµããã£ã¬ã¯ããªã«ã¯11ã®ã¢ããªã³ããããŸãã
ç§ã¯ä»¥åã®ã³ã¡ã³ããèªãã§ããŸãããããããã®å€ãã¯ãã€ã³ã¹ããŒã©ãŒã䜿çšããæ©èœãåãããã®ãå¿ èŠãªããã§ãã çŸåšããã©ãããã©ãŒã ã«äŸåããªããœãªã¥ãŒã·ã§ã³ããªããããããã¯ããçšåºŠæå³ããããŸãã
ç§ã¯8æã«ãã€ã¯ããœããã®äœäººãã®äººã ãšçŸåšã®ãããã¯ã«ã€ããŠè©±ãåã£ãŠããŸãããç§ã®äž»ãªçŠç¹ã¯ããã¹ãŠããªã³ã¯ããŠãå±éããã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºãšè€éããæžãããèµ·åæã«å€ãã®æéãèŠããã¢ã»ã³ããªã®è² è·ãæžããããšã«ã€ããŠè©±ããŠããŸãããç§ã®ã¢ããªã±ãŒã·ã§ã³ã®ã
.NET Framework4.7.1ãšdotnetcore3.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ã䜿çšããŠãããã§èª¬æããããšãã»ãŒå®è¡ããŠããŸããã ãã«ãäžã®ãããã³ã°ãšèµ·åæã®ã¢ã³ããã¯ïŒ ãããããããã³ã°ã«ãã£ãŠãã¡ã€ã«ãæœåºããããšãªããåäžã®å®è¡å¯èœãã¡ã€ã«ãäœæããããšãã§ããŸããã ããããããã¯ãŸãããªãå€ãã®åé¡ãåŒãèµ·ãããã®ã§ãããã¯ç§ã®å¥œãŸãã解決çã§ã¯ãããŸããã
ç§ã¯å€ããå°ãªããæšæºçãªè§£æ±ºçãæãã§ããŸãïŒããã¯ã¡ããã©ããŸãããâ¢
ãããããæšæºã®ãã©ã«ããŒæ§é ãå®çŸ©ããã®ãçã«ããªã£ãŠããã®ã§ãå®è¡å¯èœãã¡ã€ã«ãreadmeãã©ã€ã»ã³ã¹ãã¡ã€ã«ãªã©ãã«ãŒãã«é
眮ãããã¡ã€ã«ããšã«ç°ãªããæ¢ç¥ã®ããã£ã¬ã¯ããªïŒdotnetã³ã¢ãäŸåé¢ä¿ãªã©ïŒãèšå®ã§ããŸãã ããã«ãããããŒã«ã®æäœãç°¡åã«ãªãã誰ãã䜿çšããããã®ãšäœ¿çšããªããã®ã決å®ã§ããæ©èœãæäŸãããå¯èœæ§ããããŸãã ãã£ã¬ã¯ããªã§zipãå®è¡ããã ãã§ããããã€ãã®åé¡ã解決ããå ŽåããããŸãã
Fody.Costuryã«äŒŒããœãªã¥ãŒã·ã§ã³ã䜿çšããããšã§ãGreenshotã®å±éãç°¡çŽ åããããã«ã€ã¡ãŒãžã³ã°ã䜿çšã§ããããã«ãªãããšã¯ééããããŸãããããµã€ãºãšèªã¿èŸŒã¿æéãçŽæ¥åæžããããšã¯ã§ããŸããã ã§ããããããã§ãå°ãæéããããããšãé¡ã£ãŠããŸãïŒ
@ayendeç§ãããªãã«å察ããããšãèš±å¯ããŠãã ãã:)
ããã¯çã®ãµãŒãã¹ã§ãããWebã¢ããªã±ãŒã·ã§ã³ãããã³äžè¬ã«ãµãŒããŒããŒã¹ã®é·æéå®è¡ã¢ããªã¯ã1åéãã®èµ·åã³ã¹ãã®åœ±é¿ãåããŸããããåæã«ããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãåäžãã¡ã€ã«é åžã¢ãã«ããæãå€ãã®ã¡ãªããã享åã§ãããã®ã§ã¯ãããŸããã ïŒã¬ã€ãŽã³ã¯äŸå€ã§ãããæšæºã§ã¯ãããŸãã;ïŒïŒ
ç§ã®èŠè§£ã§ã¯ãåäžãã¡ã€ã«ã®é åžã¯ãäž»ã«ãŠãŒã¶ãŒã察象ãšããã¢ããªã±ãŒã·ã§ã³ãšãŠãŒãã£ãªãã£ã察象ãšããŠããŸãã ãã®ãããªã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒããã³ããŒãå®è¡ãããŠãŒã¶ãŒã ãããŠè¿ãå°æ¥ã.Net Core 3.0ãUIã©ã€ãã©ãªã®ãµããŒããæäŸãããšãããã®é åžã¢ãã«ã¯éåžžã«äžè¬çã«ãªããŸãã ãã ãããã®ã¢ãã«ã¯ã©ã®ã¢ããªã«ãé©ããŠããªãããšã匷調ããå¿ èŠããããŸãã äž»èŠãªã¢ããªã¯åŒãç¶ãã€ã³ã¹ããŒã©ãŒã䜿çšããŸãã
ããã§åé¡ãšãªãã®ã¯ãäžæãã©ã«ãã«ã³ããŒãããçµã¿èŸŒã¿ã¢ã»ã³ããªã®ãã®ã¢ãã«ã¯ãéåžžã«äººæ°ãåºãå Žåã«ããŸãæ©èœããã§ããããïŒ
ç§ã®èŠè§£ã§ã¯ããããã¯çŸåšã®ã¢ãã«ã®ããã€ãã®æœåšçãªåé¡ã§ãã
ãã®ã¢ãã«ããã¹ãŠã®çš®é¡ã®ã¢ããªã«æé©ã§ã¯ãªããšèšã£ãŠããããã§ã¯ãããŸããã ç§ã¯ãããæ£åžžã«å®è£ ããéå»ã«full.Net Frameworkã§èªåã§äœ¿çšããŸããããç¹å®ã®ã¢ããªã«é©ããŠããŸãã
æé©ãªå®è£ ã¯ããªã³ã«ãŒããã¹ãŠã®ã¢ã»ã³ããªã1ã€ã®ãã¡ã€ã«ã«ããŒãžããããŒãžã§ã³ã ãšæããŸãã
@popcatalin81åäžã®èŠç¹ãæã€äžçã¯è²§åŒ±ãªãã®ã§ãã ãããŠãç§ã¯èªåã®ãããã€ã¡ã³ãã¢ãã«ãå¯äžã®ãã®ã§ãããšèããã»ã©å²æ ¢ã§ã¯ãããŸããã
ç§ã念é ã«çœ®ããŠããã®ã¯ãããŠã³ããŒããšããã«ã¯ãªãã¯ã®ã·ããªãªã§ãã
ä»ã®ãšãããäœçŸãã®ãã¡ã€ã«ããããã£ã¬ã¯ããªã«ç§»åããŠé©åãªãã¡ã€ã«ãèŠã€ããã®ã¯é¢åãªã®ã§ãå®è¡ããã«ã¯ã·ã§ã«ã¹ã¯ãªããã解åããŠã¯ãªãã¯ããå¿
èŠããããŸãã
äžæãã¡ã€ã«ã®æ§æã«ã€ããŠã ç§ã¯ããã«éåžžã«å察ããŸãã æ§æãã¡ã€ã«ã¯ãä»ã®ãŠãŒã¶ãŒã«è¡šç€ºããããã®ã§ããã䜿çšãããŠããå®éã®ãã¡ã€ã«ã®ããé£ã«ååšããå¿
èŠããããã©ããã«é ãããŠããŸããã
ãŠãŒã¶ãŒãå¿
èŠãªãšãã«IsolatedStorage
ãã¡ã€ã«ãã©ãã»ã©æªããã¯ãã§ã«èŠãŠããŸããã
以åã®ããŒãžã§ã³ã®RavenDBã§ã¯ããã£ã¬ã¯ããªã¬ã€ã¢ãŠããç°¡çŽ åãã衚瀺ããããã¡ã€ã«ã®æ°ãæžããããã«å€ãã®ãã®ãçµ±åããŸãããããã¯ããœãããŠã§ã¢ã®äœ¿ããããã«æ·±å»ãªåœ±é¿ãåãŒããŸããã
ãã®æ©èœã¯ILMergeã䜿çšããŸããïŒ ããã§ãªãå Žåã¯ããªãã§ããïŒ èœãšãç©Žãããã°èªåèªèº«ãæè²ããããšæããŸãã
ç§ã¯ææ¡ããããããã¯ã¢ã³ããšã¯ã¹ãã©ã¯ããã¢ãããŒããç¹ã«ãã£ã¹ã¯äžã®ãã¡ã€ã«ãæœåºããå Žåã¯å¥œãã§ã¯ãããŸããã ã·ã³ãã«ã§ãããåé¡ãå€ãããŸãã ãã£ã¹ã¯ã«æœåºããã«ããã¹ãŠãã¡ã¢ãªå ãããåäœããã¯ãã§ãã
corertãã€ãã£ãã³ã³ãã€ã©ãCostura.Fodyã®ãããªãã®ã§ãªããã°ãªããªããšæããŸãã
ãªãã·ã§ã³ã§ããã€ããªãµã€ãºã®åæžãè©Šã¿ãå¿ èŠããããŸãïŒæªäœ¿çšã®åç §ãåé€ããILãç¡å¹ã«ããŸãïŒã
å
dotnet core 3.0ãç»å Žããåã®æ°ãæéãç§ã¯Fody.Costuraã䜿çšããŠãããã§èª¬æããããšãã»ãŒå®è¡ããŠããŸããã ãã«ãäžã®ãããã³ã°ãšèµ·åæã®ã¢ã³ããã¯ïŒ
costuraã¯ïŒããã©ã«ãã§ã¯ïŒããã£ã¹ã¯ã«è§£åãããªãããšã«æ³šæããŠãã ããã ãªãœãŒã¹ããçµã¿èŸŒã¿ã¢ã»ã³ããªãïŒã¡ã¢ãªå ã§ïŒæœåºãããã€ãçµç±ã§ããŒãããŸã
ã³ã³ããã¹ã@SimonCroppã«æè¬ããŸãããã£ã¹ã¯ãžã®è§£åãšãã¹ããªãŒã ããã®èªã¿èŸŒã¿ã®äž¡æ¹ã®ãªãã·ã§ã³ãæ€èšããŠããŸãã çŽç²ãªILã®ã¹ããªãŒã ããã®ããŒããã«ããŒããããšã¯ãæåã®å埩ã§å¯èœãããããŸããã
@jeffschwMSFTãšããã§ãã·ãŒã ã¬ã¹ã«ããŒãžããã¢ã»ã³ããªïŒããã³ãªãã·ã§ã³ã®ããªãŒã·ã§ã€ã¯ïŒã®æ©èœã»ããã¯ãç§ãäžçŽåžæ°ãšããŠèŠãããã®ã§ãã ã³ã¹ãã¥ã©ã¯ç§ã®æã人æ°ã®ãããããžã§ã¯ãã®1ã€ã§ããããµããŒãã«ããªãã®æéãããããããžã§ã¯ãã§ããããŸãã ãããã£ãŠãMSã代æ¿æ¡ãçºè¡šããå ŽåïŒããŒã¿çã§ãã£ãŠãïŒãç§ã«ç¥ãããŠãã ããããã°ããæéããããŠã¬ãã¥ãŒããcosturaã®readmeãšnugetã®èª¬æã«ãMSã®ä»£æ¿æ¡ããããŸãããè¿œå ããŸãã
å¯èœæ§ã¯äœãã§ãããdiffã©ã€ã»ã³ã¹ã®äžã§costuraã®ã³ãŒãããªãªãŒã¹ããå¿ èŠãããå Žåã¯ããç¥ãããã ããã
ã¢ãã©ã«/ã€ãªã³ã«ãŒã.NETCoreããŒã«ãã§ãŒã³ã«çµ±åãå§ãã@SimonCroppã«æè¬ããŸããã¬ãã¥ãŒã®ç³ãåºã«ã€ããŠãããªããåãäžããŸãã
costuraã¯ïŒããã©ã«ãã§ã¯ïŒããã£ã¹ã¯ã«è§£åãããªãããšã«æ³šæããŠãã ããã ãªãœãŒã¹ããçµã¿èŸŒã¿ã¢ã»ã³ããªãïŒã¡ã¢ãªå ã§ïŒæœåºãããã€ãçµç±ã§ããŒãããŸã
ããã«è¯ãããšã«ã AppDomain.AssemblyResolve
ã€ãã³ãã䜿çšããŠãªã³ããã³ãã§ããŒãããããšæããŸãããããã£ãŠãå¿
èŠãªãšãã«ã¢ã»ã³ããªãïŒã¡ã¢ãªã«ïŒããŒãããã ããªã®ã§ãã¹ã¿ãŒãã¢ããã«å€§ããªåœ±é¿ãäžããããšã¯ãããŸããã
ããã§ã®äŒè©±ã«é ããŸããã ããããã§ã«ã«ããŒãããŠããå Žåã¯ãè©«ã³ããŸãã
ããã§ã®ã¢ãŒãã£ãã¡ã¯ãã¯æ±ºå®è«çã§ãããšæ³å®ã§ããŸããïŒ ãããã£ãŠãåããã«ãã¯åžžã«åããã€ããªãçæããŸããïŒ ãã€ãåäœã æ£èŠã®ä»éãããã§ãã¯ãµã ã䜿çšããŠãã€ããªãé åžã§ããããšã圹ç«ã¡ãŸãã
@morganbrããã«ã¯ããããã®èªã¿ç©ãå¿ èŠã§ãã ãããŸã§ã«è¡ããã決å®ããã°ã«èšé²ããããšã¯å¯èœã§ããããïŒ
@edblackburnãã£ãŒãããã¯ã«åºã¥ããŠæŽæ°ããããã¶ã€ã³ããŸãšããŠããŸãã @swaroop-sridharãçŸåšèšèšãæšé²ããŠããŸãã
ãã®æ©èœã¯ILMergeã䜿çšããŸããïŒ ããã§ãªãå Žåã¯ããªãã§ããïŒ èœãšãç©Žãããã°èªåèªèº«ãæè²ããããšæããŸãã
@simplejackcoder ILMergeã¯ãå€ãã®ã¢ã»ã³ããªã®ILã1ã€ã«çµåããŸããããã®éçšã§ãããŒãžãããã¢ã»ã³ããªã®å ã®IDã倱ãããŸãã ãã®ãããå ã®ã¢ã»ã³ããªåã«åºã¥ããªãã¬ã¯ã·ã§ã³ã®äœ¿çšãªã©ã¯å€±æããŸãã
ãã®åãçµã¿ã®ç®çã¯ãã¢ã»ã³ããªãããŒãžããããšã§ã¯ãªããã¢ã»ã³ããªã®IDãç¶æããªããã¢ã»ã³ããªãããã±ãŒãžåããããšã§ãã ããã«ãã¢ã»ã³ããªã ãã§ãªãããã€ãã£ããã€ããªãæ§æãã¡ã€ã«ãå Žåã«ãã£ãŠã¯ã©ã³ã¿ã€ã ãããã³ã¢ããªã«å¿ èŠãªãã®ä»ã®äŸåé¢ä¿ãããã±ãŒãžåããå¿ èŠããããŸãã
ILã®ããŒãžã¯ãILã«é©å¿ã§ããã¢ããªã«ãšã£ãŠäŸ¿å©ãªæ©èœã§ããããã®åé¡ãšã¯ãŸã£ããç°ãªãæ©èœã§ãã
ãã¶ã€ã³ã¬ãã¥ãŒã¯https://github.com/dotnet/designs/pull/52ã«æçš¿ãããŠããŸã
ä»åŸãPRã®è°è«ãç¶ããŠãããŸãããã
åäžãã¡ã€ã«ã䜿çšããã人ã®ããã«ããã€ã質åããããŸãã ããªãã®çãã¯ç§ãã¡ã®éžæè¢ãçµã蟌ãã®ã«åœ¹ç«ã¡ãŸãïŒ
- ã©ã®ãããªã¢ããªã§äœ¿çšããå¯èœæ§ããããŸããïŒ ïŒããšãã°ãWindowsäžã®WPFïŒLinux Dockerã³ã³ãããŒå ã®ASP.NETïŒä»ã«äœãïŒïŒ
- ã¢ããªã«ïŒ.NET以å€ã®ïŒC ++ /ãã€ãã£ãã³ãŒããå«ãŸããŠããŸããïŒ
- ã¢ããªã¯ãã¢ããªã®ãã«ãã«å ã å«ãŸããŠããªãã£ããã©ã°ã€ã³ããã®ä»ã®å€éšdllãããŒãããŸããïŒ
- ã¢ããªãåæ§ç¯ããŠåé åžããã»ãã¥ãªãã£ä¿®æ£ãçµã¿èŸŒãããšãããšããªãã§ããïŒ
- ã¢ããªã®èµ·åã200ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
- ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 10ïŒ 20ïŒ 50ïŒ 75ïŒ 100ïŒ
- ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
- ã¢ããªã®ãµã€ãºãååã«ãªãå Žåã¯ãè¿œå ã®äœæ¥ãåãã§è¡ããŸããïŒ
--single-file
ãæå®ããŠ1ã€ã®å®è¡å¯èœãã¡ã€ã«ãååŸããŸãã Windowsã®å Žåãããã¯.exe
ã§çµãããšäºæ³ãããŸãããLinuxã®å Žåãå®è¡å¯èœãã€ããªã«ãªããŸãã--optimizing-level=5
ã䜿çšããŠæé©åã¬ãã«ãèšå®ããããã®ãã©ã°ã§ããå¯èœæ§ããããŸã@BlitzkriegSoftwareã«æè¬ããŸãã
ããã§ææ¡ããèšèšã¯ãããªãã®ãŠãŒã¹ã±ãŒã¹ãã«ããŒããŠãããšæããŸãã ãã¶ã€ã³ãã芧ãã ããããã£ãŒãããã¯ããåŸ
ã¡ããŠãããŸãã
åäžãã¡ã€ã«ã䜿çšããã人ã®ããã«ããã€ã質åããããŸãã ããªãã®çãã¯ç§ãã¡ã®éžæè¢ãçµã蟌ãã®ã«åœ¹ç«ã¡ãŸãïŒ
- ã©ã®ãããªã¢ããªã§äœ¿çšããå¯èœæ§ããããŸããïŒ ïŒããšãã°ãWindowsäžã®WPFïŒLinux Dockerã³ã³ãããŒå ã®ASP.NETïŒä»ã«äœãïŒïŒ
- ã¢ããªã«ïŒ.NET以å€ã®ïŒC ++ /ãã€ãã£ãã³ãŒããå«ãŸããŠããŸããïŒ
- ã¢ããªã¯ãã¢ããªã®ãã«ãã«å ã å«ãŸããŠããªãã£ããã©ã°ã€ã³ããã®ä»ã®å€éšdllãããŒãããŸããïŒ
- ã¢ããªãåæ§ç¯ããŠåé åžããã»ãã¥ãªãã£ä¿®æ£ãçµã¿èŸŒãããšãããšããªãã§ããïŒ
- ã¢ããªã®èµ·åã200ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
- ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 10ïŒ 20ïŒ 50ïŒ 75ïŒ 100ïŒ
- ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
- ã¢ããªã®ãµã€ãºãååã«ãªãå Žåã¯ãè¿œå ã®äœæ¥ãåãã§è¡ããŸããïŒ
ããªããåãåã£ããã£ãŒãããã¯ã¯ãäž»ã«2019幎以åã®éçºã«é¢ãããã®ã§ãããããã¯éåžžãããã¯ã°ã©ãŠã³ãã§èµ·åãããWebãµãŒãã¹ãã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ãããã³ãã®ä»ã®ãµãŒãã¹ã§ãã ãããã.netã³ã¢3.0ã§ã¯ãWPFããã³UIã¢ããªã®ãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ãã .NetFramework4.8ã¯.NetStandard2.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ã³ã¢3ã®åçåãããæ¹æ³ã§msbuild /dotnetCLIã«çµ±åããäœæ¥ãé²è¡äžã§ããããã¯è¡ããããããã®ããŒã«ã®äœ¿çšã¯ç°¡åã«å®è¡ã§ããŸãïŒäŸïŒç¹å®ã®msbuildããããã£ã®èšå®ïŒã
ãããã®ããŒã«ã¯ãã¹ãŠããã¬ãŒããªãããããŸãã ããšãã°ãcrossgenã¯äºåã«ãã€ãã£ãã³ãŒããçæãããããèµ·åã«åœ¹ç«ã¡ãŸããããã€ããªã®ãµã€ãºã倧ãããªãåŸåããããŸãã åäžãã¡ã€ã«ãªãã·ã§ã³ã䜿çšãããšãã¢ããªãåäžãã¡ã€ã«ã«å ¬éã§ããŸããããã€ãã£ããã€ããªããã£ã¹ã¯ã«æµåºãããªã©ã®çç±ã§ãèµ·åãé ããªãå¯èœæ§ããããŸãã
@ swaroop-sridharãè¿ä¿¡ã«æéãå²ããŠããã ãããããšãããããŸãã
ãã®ãœãªã¥ãŒã·ã§ã³ãããªãã®ããã«æ©èœããªããšæããã©ãããæ確ã«ãããã£ã
èªå·±å®çµåã®ãã®ã«ã€ããŠã¯ãŸã æœåºãè¡ãããŠããããã«èŠããcrossgenïŒãŸãã¯èµ·åæã®JITæéã§åæžãããã®ïŒã®ã¹ããŒã¿ã¹ã¯ç§ã«ã¯ããããŸããã§ããã çŸåšã®ãã¶ã€ã³ãããã«ãªã³ã¯ããŠããã¹ããŒãžã³ã°ããã¥ã¡ã³ããèªãã§ããããç§ãã¡ã«ãšã£ãŠããé¢çœããããã®ã®ããã«èŠããŸããã ãããèãããšãç§ã¯ãä»åŸãã°ããã®éããããã®ãããã«.NETFrameworkã䜿çšããããšã«åºå·ãç¶ããã ãããšèããŠããŸããã 誀解ãããããããŸããã
ãããã®ããŒã«ã¯ãã¹ãŠããã¬ãŒããªãããããŸãã ããšãã°ãcrossgenã¯äºåã«ãã€ãã£ãã³ãŒããçæãããããèµ·åã«åœ¹ç«ã¡ãŸããããã€ããªã®ãµã€ãºã倧ãããªãåŸåããããŸãã
ããããããã®ããã€ãã¯äž¡åã®å£ã§ããããšãç解ããã JITãåŸæ¥ããæ©èœããŠããæ¹æ³ã§ãngenã¯åžžã«CLI/GUIã¢ããªã®åå©ã§ããã éå±€åãããã³ã³ãã€ã«ã®ããã€ãã®çµã¿åãããšãã©ã³ã¿ã€ã èªäœã®ããŒãããåãããã¯ã¹ã§å®è¡ãããŠããä»ã®å€ãã®.NET Frameworkããã»ã¹ã«ãã£ãŠå¿ ãããååŽãããªããšããäºå®ã«ãããCoreã§ã®æ確ãªã«ãããå°ãªããªãå¯èœæ§ããããŸãã
@ swaroop-sridharçŸåšåãå ¥ããããŠããææ¡ã«é¢ããŠç§ãæ±ããŠãã倧ããªæžå¿µã¯ããã®ã¹ãããã§ã
æ®ãã®216ãã¡ã€ã«ã¯èµ·åæã«ãã£ã¹ã¯ã«æœåºãããŸãã
ãHelloWorldããå®è¡ããã«ã¯216åã®ãã¡ã€ã«ãå¿ èŠãªããã§ãããããããããå Žæã®ãã£ã¹ã¯ã«æœåºãããšãåçŽãªã³ãã³ãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³ãåé€ããã®ãé£ãããªããŸãã ã€ã³ã¹ããŒã©ãŒãä»ããŠæäŸãããªãã£ãããŒã«ãåé€ããå Žåãå®å šã«åé€ããããã«ä»ã®ãã¡ã€ã«ãæ¢ãå¿ èŠã¯ãããŸããã
ç§èŠã§ãããgolangãšåæ§ã®å
¬éãšã¯ã¹ããªãšã³ã¹ãã¿ãŒã²ããã«ããå¿
èŠããããŸãã golangãšã¯ã¹ããªãšã³ã¹ãšå®å
šã«äžèŽãããã«ã¯crossgen
ãèšå®ããå¿
èŠããããŸããïŒJITãšéå±€åã³ã³ãã€ã«ã«è² ããããã1ïŒ1ã®äžèŽã¯_è¯ã_ãã®ã§ã¯ãªããšäž»åŒµããããšãã§ããŸãïŒããããªãã§ããªãã®éšåãéæããããšãã§ããŸãã ç§ã¯äœå¹Žã«ãããã£ãŠå€ãã®ããŒã«ã䜿çšããŠåæ§ã®ãšã¯ã¹ããªãšã³ã¹ãå®çŸããŠããŸããããæãå¹æçãªã®ã¯ãã¢ã»ã³ããªããŒããŒã«ããã¯ãä»ããçµã¿èŸŒã¿ãªãœãŒã¹ã§ããïŒILMergeã¯åä»ã§ãCostura.Fodyã¯ãŸã ååšããŠããŸããã§ããïŒã ææ¡ã«èšèŒãããŠããããšã¯ããã®æ©èœãå®å
šã«è€è£œããããšããã§ããŸããã .NET Coreã«ã¯éåžžã«åŒ·åãªæªæ¥ããããŸãããã³ãã³ãã©ã€ã³ããŒã«ã®éçºã«äœ¿çšã§ããã®ã¯ãæ°çŸã®äŸåé¢ä¿ãæã¡æ©ãããæã§æ³¢æã€ããŒãã¹ãã©ããã³ãŒãã䜿çšããŠãã£ã¹ã¯äžã®ã©ããã«åãåºãå¿
èŠãããéãå¶éãããŸãã
ç§ã®dotnet/coreclrïŒ1ã®ãŠãŒã¹ã±ãŒã¹ã¯ã³ãã³ãã©ã€ã³ãŠãŒãã£ãªãã£ã§ããã1ã€ã®ãã¡ã€ã«ã§ãããæœåºã¯ç§ã®å¥œã¿ã§ã¯ãããŸããã ããããã³ãã³ãã®äžéšãšããŠéžæè¢ãäžããããšã¯ããªãŒã«ã€ã³ã¯ã³ãšãªãŒã«ã€ã³ã¯ã³ã®èªå·±è§£åã®ã©ã¡ãããåãæ¿ããããšãææããŠãããŸãã èªå·±è§£ååã®å Žåã解åããããã¡ã€ã«ãã¯ãªãŒã³ã¢ããããundo
ãå«ããå¿
èŠããããŸãã åè
ã®å ŽåããŠãŒãã£ãªãã£ãåé€ãããšããããšã¯ãäžè¬çãªãŠãŒãã£ãªãã£ã®ãã©ã«ãã«é
眮ããã®ã«é©ãã1ã€ã®ãã¡ã€ã«ãåé€ããããšãæå³ããŸããã2çªç®ã®å Žåãšåæ§ã«ãã¯ãªãŒã³ã¢ããã容æã«ããåé¿ããããã«ãã€ã³ã¹ããŒã«ã«ã¯ç¬èªã®ãã©ã«ããå¿
èŠã§ããã¢ã³ã€ã³ã¹ããŒã«ã«ãã£ãŠå
±æãã¡ã€ã«ãåé€ãããã·ããªãªã ããã€ãã®èãã ç§ãèšã£ãããã«ã1ã€ã®ãã¡ã€ã«ãŠãŒãã£ãªãã£ïŒã€ã³ã¹ããŒã«ã¯å¿
èŠãããŸããïŒã¯ããããžã§ã¯ãã®ãŠãŒãã£ãªãã£ãïŒããŒã«ã¹ãã¹ãšããŠïŒé »ç¹ã«äœæãããããç§ã®äž»ãªãŠãŒã¹ã±ãŒã¹ã§ãã ããããäž¡æ¹ã®ã·ããªãªã®ãŠãŒã¹ã±ãŒã¹ãèŠãããšãã§ããŸãã ãããããããã¯ç°ãªããŸãã
åäžãã¡ã€ã«ã䜿çšããã人ã®ããã«ããã€ã質åããããŸãã ããªãã®çãã¯ç§ãã¡ã®éžæè¢ãçµã蟌ãã®ã«åœ¹ç«ã¡ãŸãïŒ
- ã©ã®ãããªã¢ããªã§äœ¿çšããå¯èœæ§ããããŸããïŒ ïŒããšãã°ãWindowsäžã®WPFïŒLinux Dockerã³ã³ãããŒå ã®ASP.NETïŒä»ã«äœãïŒïŒ
- ã¢ããªã«ïŒ.NET以å€ã®ïŒC ++ /ãã€ãã£ãã³ãŒããå«ãŸããŠããŸããïŒ
- ã¢ããªã¯ãã¢ããªã®ãã«ãã«å ã å«ãŸããŠããªãã£ããã©ã°ã€ã³ããã®ä»ã®å€éšdllãããŒãããŸããïŒ
- ã¢ããªãåæ§ç¯ããŠåé åžããã»ãã¥ãªãã£ä¿®æ£ãçµã¿èŸŒãããšãããšããªãã§ããïŒ
- ã¢ããªã®èµ·åã200ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
- ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 10ïŒ 20ïŒ 50ïŒ 75ïŒ 100ïŒ
- ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
- ã¢ããªã®ãµã€ãºãååã«ãªãå Žåã¯ãè¿œå ã®äœæ¥ãåãã§è¡ããŸããïŒ
ç§èŠã§ãããgolangãšåæ§ã®å ¬éãšã¯ã¹ããªãšã³ã¹ãã¿ãŒã²ããã«ããå¿ èŠããããŸãã
@thegreatco ïŒã¯ãããã€ãã£ãã³ãŒããžã®å®å šãªã³ã³ãã€ã«ã¯ãåäžãã¡ã€ã«ã®ã¢ããªãæ§ç¯ããããã®åªãããªãã·ã§ã³ã§ãã GOã®ãããªèšèªã¯ããã©ã€ããªã¢ãã«ãšããŠäºåïŒAOTïŒã³ã³ãã€ã«ã䜿çšããŠæ§ç¯ãããŠããŸããããã«ã¯ãJITã³ã³ãã€ã«ã«ãã£ãŠå®çŸãããåçèšèªæ©èœã«äžå®ã®å¶éããããŸãã
CoreRTã¯ãAOTã³ã³ãã€ã«æžã¿ã¢ããªçšã®.NetCoreãœãªã¥ãŒã·ã§ã³ã§ãã ãã ããCoreRTãå©çšå¯èœã«ãªããŸã§ããã®åé¡ã§ã¯ä»ã®æ¹æ³ã§åäžãã¡ã€ã«ã®ã¢ããªãå®çŸããããšããŠããŸãã
ãHelloWorldããå®è¡ããã«ã¯216åã®ãã¡ã€ã«ãå¿ èŠãªããã§ããã
HelloWorldã«å¿ èŠãªãã¡ã€ã«ã®æ°ãæžããããã«å©çšã§ããããã€ãã®ãªãã·ã§ã³ããããŸãã
ãããããã£ã¹ã¯ã®ããå Žæã«æœåºãããšãåçŽãªã³ãã³ãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³ãåé€ããã®ãé£ãããªããŸãã
- åäžãã¡ã€ã«æ©èœã®éçºã次ã®æ®µéã«é²ãã«ã€ããŠããã£ã¹ã¯ã«ããŒãããã¡ã€ã«ã®æ°ã¯æžå°ããã»ãšãã©ã®ã¢ããªã§ã¯çæ³çã«ã¯ãŒãã«ãªããŸãã ãã ããåæ段éã§ã¯ãããã€ãã®ãã¡ã€ã«ïŒãã€ãã£ãã³ãŒããå«ããã¡ã€ã«ïŒãããŒãå¿ èŠããããŸãã
- ãã£ã¹ã¯ã«ããŒãããã¡ã€ã«ã®å Žæã¯ãåžžã«æ±ºå®è«çã§æ§æå¯èœã§ãã ãããã£ãŠãããŒãããã¡ã€ã«ã¯ç°¡åãªã¹ã¯ãªããã§ã¯ãªãŒã³ã¢ããã§ããŸãã ããããããã¯çæ³çã§ã¯ãªãããšã«åæããŸãã
æ確å@mattpwhiteãããããšãã
ã¯ããæ©èœéçºã®åŸã®æ®µéãŸã§ãèªå·±å®çµåã¢ããªã¯ãã£ã¹ã¯ã«æœåºããããã¡ã€ã«ã確èªããŸãã äžèšã®ã³ã¡ã³ãã§æžãããã¯ããã¯ã®ããã€ãã䜿çšããŠãã¢ããªã®ç¶æ³ãæ¹åã§ããå ŽåããããŸãã
@BlitzkriegSoftwareããã®ãåçããããšãããããŸãã
ãã ããã³ãã³ãã¹ã€ããã®äžéšãšããŠãªãŒã«ã€ã³ã¯ã³ãšãªãŒã«ã€ã³ã¯ã³ã®èªå·±è§£ååã®ã©ã¡ãããéžæã§ããããšãææããŠãããŸãã
åäžãã¡ã€ã«ãšããŠå ¬éãããã¢ããªãæœåºãå¿ èŠãšãããã©ããã¯ãã¢ããªã®ã³ã³ãã³ãã«ãã£ãŠç°ãªããŸãïŒäŸïŒãã€ãã£ããã¡ã€ã«ãå«ãŸããŠãããã©ããïŒã ãã³ãã©ãŒã®èšèšã¯ããã¹ãŠã®ãã¡ã€ã«ãæœåºãããã©ããã決å®ããããã®ããã€ãã®æ§æãæäŸããŸãã ã¢ããªãå®è¡æã«ãã¡ã€ã«ãžã®æœåºã䜿çšããŠã¯ãªããªããšããããããã£ãè¿œå ã§ããŸãã
<propertygroup>
<SingleFileExtract> Never | Always | AsNeeded </SingleFileExtract>
</propertygroup>
ããã§ã®ç解ã¯æ¬¡ã®ãšããã§ããSingleFileExtract=Neverãã³ã³ãã€ã«ãããšãã«ãæœåºïŒãã€ãã£ããã€ããªïŒã§ã®ã¿åŠçã§ãããã¡ã€ã«ãã¢ããªã«å«ãŸããŠããå Žåãåäžãã¡ã€ã«ãžã®å ¬éã¯å€±æããŸãã
èªå·±è§£ååã®å Žåã¯ã解åããããã¡ã€ã«ãã¯ãªãŒã³ã¢ããããåãæ¶ããå«ããå¿ èŠããããŸãã
åççã«èãããŸãã æœåºã®æ£ç¢ºãªå ŽæïŒååšããå ŽåïŒã¯ã決å®è«çã§æ§æå¯èœã§ãã ãããã£ãŠãã¢ããªãšãã®æœåºããããã¹ãŠã®äŸåé¢ä¿ãåé€ããã¹ã¯ãªãããäœæã§ããŸãã
@DoCodeã®ãåçããããšãããããŸãã ããªãã®ã·ããªãªã¯ããã©ã°ã€ã³ã䜿çšãããšããç¹ã§èå³æ·±ããã®ã§ãã
ãã©ã°ã€ã³èªäœã«ããã€ãã®äŸåé¢ä¿ïŒã¡ã€ã³ã¢ããªãšå
±æãããŠããªãïŒãããå Žåããã©ã°ã€ã³ãïŒäŸåé¢ä¿ãåã蟌ãŸããïŒåäžãã¡ã€ã«ãšããŠå
¬éããå¿
èŠããããŸããïŒ ããããšãã
ã¯ã@swaroop-sridharããããç®æšã§ãã ãã®å Žåããã©ã°ã€ã³ã«ã¯äŸåé¢ä¿ãåã蟌ãŸããŠããå¿ èŠããããšæããŸãã å ±æã®äŸåé¢ä¿ã®ã¿ããåäžãã¡ã€ã«ã®ã¡ã€ã³ã¢ããªã®å€éšã«çãŸã£ãŠããå¿ èŠããããŸãã
ä»æ¥ã @ madskristensenã¯ãVisualStudioããã³äººæ°ã®ããNewtonsoft.JsonNuGetããã±ãŒãžãšåªãã説æãå ±æããŸããã
ç§ãã¡ã¯æã åããããªç¶æ³ã§åãç¶æ³ã«ãªããŸãïŒ
@DoCodeã«æè¬ããŸãã åäžãã¡ã€ã«ã®ã¢ããªãå®è£ ãããŠå®å®ããããåäžãã¡ã€ã«ã®ãã©ã°ã€ã³ã®æ©èœã«å¯ŸåŠããããšãèšç»ããŠããŸãã ãã¶ã€ã³ããã¥ã¡ã³ãã§ã¯ããã©ã°ã€ã³ã«ã€ããŠããã§èª¬æããŠããŸãã
ãã®æ©èœ@swaroop-sridharã«ç¶ç¶çã«é¢äžããŠããã ããããããšãããããŸãã å ã«æ»ãã³ãã³ãããããšãç¹ã«å ã®ã¹ããŒãžã«æé©ã§ãã
1-ã©ã®ãããªã¢ããªã§äœ¿çšããå¯èœæ§ããããŸããïŒ ïŒããšãã°ãWindowsäžã®WPFïŒLinux Dockerã³ã³ãããŒå ã®ASP.NETïŒä»ã«äœãïŒïŒ
2-ã¢ããªã«ïŒ.NET以å€ã®ïŒC ++ /ãã€ãã£ãã³ãŒããå«ãŸããŠããŸããïŒ
ã¯ã
3-ã¢ããªã¯ãã¢ããªã®ãã«ãã«å ã å«ãŸããŠããªãã£ããã©ã°ã€ã³ãŸãã¯ãã®ä»ã®å€éšdllãããŒãããŸããïŒ
ã¯ããã§ãæ¢ç¥ã®èšå·ã¯ãã§ã«ããã®ã§ãåå°ãé ãã®ã§åå°ã«é ŒããŸãã
4-ã»ãã¥ãªãã£ä¿®æ£ãçµã¿èŸŒãããã«ã¢ããªãåæ§ç¯ããŠåé åžããŸããïŒ
ã¯ã
5-ã¢ããªã®èµ·åã200ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
ããããããå°ãé ãã§ã
6-ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 10ïŒ 20ïŒ 50ïŒ 75ïŒ 100ïŒ
ãããžã§ã¯ãã«ãã£ãŠç°ãªããŸãããåçŽãªã³ãã³ãã©ã€ã³ããŒã«ã®å Žåã1æ¡ã®mbããã倧ãããªãããšã¯ãªããšæããŸãã
7-ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
éçº/ã€ãã¬ãŒã·ã§ã³æéã«åœ±é¿ãäžããªãéãããªãªãŒã¹ãã«ãæéãé·ããŠãåé¡ãããŸãã
ãã ãã.netã³ã¢ã¢ããªã¯ãåŸæ¥ã®.netFrameworkã¢ããªãããé·ãæ§ç¯ãããŠããããšãå¿ããªãã§ãã ãã
æ¯å¹ŽãœãããŠã§ã¢ãé ããªãåŸåã¯åãå ¥ããããŸãããããŒããŠã§ã¢ã¯åªããŠããŸããããã®é床ãé ãçç±ã¯ãããŸããã
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ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
ç§ã¯10ç§æªæºãªãäœã§ã倧äžå€«ã ãšæããŸãã èµ·åæéã¯ãã¹ãçã§äºæž¬å¯èœã§ããéããéåžžã¯éèŠã§ã¯ãããŸãããã€ãŸããã©ã€ãã©ãªãåãé åºã§ããŒããããå€æ°ãåãé åºã§åæåããããªã©ã§ãã
ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 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ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
net.coreã¯ãã§ã«å°ãé ãããŸãã ãã ããæ°ç§ã®å¢å ã¯èš±å®¹ãããŸãã 5ç§-絶察ã«ãããŸããã
ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 10ïŒ 20ïŒ 50ïŒ 75ïŒ 100ïŒ
æè¿ã¯é¢ä¿ãããŸãã
ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
5åãŸã§ã¯èš±å®¹ã§ãããšæããŸãã UWPã®15ã20åã®ãªãªãŒã¹ãã«ãã¯ãã¿ããªãæãããŠããŸãã
ã¢ããªã®ãµã€ãºãååã«ãªãå Žåã¯ãè¿œå ã®äœæ¥ãåãã§è¡ããŸããïŒ
ãã¡ããã
ããããšã@mjr27
ããã§ã¹ããŒãž1ã®å®è£ ãå®äºãã 3.0.100-preview5-011568ããå©çšã§ããŸãã
ããã§èª¬æããããã«ã PublishSingleFile
ããããã£ãtrue
ã«èšå®ããããšã§ãã¢ããªã1ã€ã®ãã¡ã€ã«ã«å
¬éã§ããŸãã
ãã®ããŒãžã§ã³ã§ã¯ãããã§èª¬æããããã«ããã¹ãŠã®åã蟌ã¿ãã¡ã€ã«ã¯æåã®å®è¡æã«ãã£ã¹ã¯ã«æœåºããã以éã®å®è¡ã§åå©çšãããŸãã
ã³ã³ãã€ã«ã¹ã«ãŒããã
ãã¡ã€ã«ãåå¥ã®ãã¡ã€ã«ãšããŠå
¬éãã£ã¬ã¯ããªã«æžã蟌ãŸããããåäžã®ãã¡ã€ã«ãšããŠæžã蟌ãŸãããã«ããããããæéã«å€§ããªéãã¯ãããŸããã
ãã¡ã€ã«ãµã€ãºãšèµ·å
次ã®è¡šã¯ãåäžãã¡ã€ã«ãšããŠæ§ç¯ãããããã€ãã®ã¢ããªã®ããã©ãŒãã³ã¹ã瀺ããŠããŸãã
枬å®| ã³ã³ãœãŒã«Fw| ã³ã³ãœãŒã«ã»ã«ã| 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.0RTMã§çµäºããŸããïŒ ãŸãã¯ãããããå®è£ ããããŸã§3.0以éåŸ ã€å¿ èŠããããŸããïŒ
ããã§èª¬æããããã«ã.netã³ã¢3.0ã¯ããã¬ãŒã ã¯ãŒã¯ã«äŸåããçŽç²ãªmsilã¢ããªããã³ãã«ããçŽæ¥å®è¡ã§ããããã«ãã¹ããŒãž2ãå®è£ ããããšãæåŸ ãããŠããŸãã æ®ãã®ã¹ããŒãžã¯ãä»åŸã®ãªãªãŒã¹ã§æ€èšãããŸãã
ããã§èª¬æããããã«ã.netã³ã¢3.0ã¯ããã¬ãŒã ã¯ãŒã¯ã«äŸåããçŽç²ãªmsilã¢ããªããã³ãã«ããçŽæ¥å®è¡ã§ããããã«ãã¹ããŒãž2ãå®è£ ããããšãæåŸ ãããŠããŸãã æ®ãã®ã¹ããŒãžã¯ãä»åŸã®ãªãªãŒã¹ã§æ€èšãããŸãã
:(ãããRTMã«å°éã§ããããšãæãã§ããã
@cup dotnet publish -o out /p:PublishSingleFile=true /p:RuntimeIdentifier=win-x64
ã§ã§ãããšæããŸããã ããã©ã³ã³ãœãŒã«ã¢ããªãäœæãããã®ã³ãã³ããå®è¡ããŠãã¹ãããŸããã ããã¯ããŸããããŸããã
.pdbãã¡ã€ã«ãdotnet publish -o out /p:PublishSingleFile=true /p:RuntimeIdentifier=win-x64 /p:IncludeSymbolsInSingleFile=true
ã«ãã³ãã«ããããšã§ãããã«å
ã«é²ãããšãã§ããŸãã
詳现ãªã¡ã¢ãæäŸããŠããã@seesharprunã«æè¬ããŸãã ã¯ã@cup ãã³ãã³ãã©ã€ã³ã®åäžãã¡ã€ã«å
¬éã«æšå¥šãããæ¹æ³ã¯ãã³ãã³ãã©ã€ã³ããPublishSingleFile
ããããã£ãèšå®ããããšã§ãã
@etherealjoy coreclrã©ã³ã¿ã€ã ãªããžããªã¯ãã»ãšãã©ã®å Žåã1ãæã»ã©ã§æ©èœãåäœããããã«ããã¯ããŠã³ãããŸãã ãã¹ãŠã®ã¹ããŒãžã«ååãªæéã¯ãªããšæããŸãã 次ã®ãªãªãŒã¹ã§æ¬¡ã®ã¹ããŒãžãæ¥ãããšãæåŸ ããŠããŸãã
ç§ã¯ä»æ¥ãããæ©èœãããŸããããæœåºããŒã¹ãã£ã¬ã¯ããªã®å€æŽã¯æ©èœããŠããªãããã§ãã ãã®ã»ã¯ã·ã§ã³ã«ãããšã ExtractBaseDirãšåŒã°ããruntimeconfigã«ã¢ããªã±ãŒã·ã§ã³ã¹ã€ãããè¿œå ããŠãã¢ããªã±ãŒã·ã§ã³ãæœåºãããå Žæãå€æŽã§ããã¯ãã§ãã
ç§ã¯ãã®ãããªruntimeconfig.template.jsonãæã£ãŠããŸã
{
"configProperties" : {
"ExtractBaseDir": "C:\\"
},
"ExtractBaseDir": "C:\\"
}
çæãããapp.runtimeconfig.jsonã¯æ¬¡ã®ããã«ãªããŸãã
{
"runtimeOptions": {
"configProperties": {
"ExtractBaseDir": "C:\\"
},
"ExtractBaseDir": "C:\\"
}
}
çæãããexeãå®è¡ããŠãããšãã¯ããŸã tmpãã©ã«ããŒã«ç§»åããŸãã
ãã®æ©èœã¯Preview5ã§ã¯æºåãã§ããŠããªããšæããŸãããruntimeconfig.jsonã®ã©ãã«ãExtractBaseDirããé 眮ãããã®ããæ確ã§ãªããäŸããªãããã確èªããããšæããŸãã
@igloo15ãããæã£ãŠããŠãããŠããããšãã
çŸåšã®ãã¬ãã¥ãŒã§ã¯ãç°å¢å€æ°DOTNET_BUNDLE_EXTRACT_BASE_DIR
ã®ã¿ãæå¹ã«ãªã£ãŠããŸãã ããã¯ãå®è£
ã®çŸåšã®æ®µéã§ã¯ã runtimeconfig.json
ãå«ããã¹ãŠã®ãã¡ã€ã«ãåŠçãããåã«ãã£ã¹ã¯ã«æœåºãããããã§ãã
次ã®ãã¬ãã¥ãŒã§ExtractBaseDir
ã®ãµããŒããè¿œå ããäœæ¥ãããŠããŸãã
ãããASP.NETCoreãããžã§ã¯ãã§æ©èœãããæ¹æ³ã«é¢ããã¬ã€ãã³ã¹ã¯ãããŸããïŒ æšå¥šãããã¢ãããŒãã¯ããªãã¬ã¯ã·ã§ã³ã䜿çšããŠãã·ã¹ãã ã¿ã€ããã©ãããããŒããããŠããããèŠã€ãããã®ãã£ã¬ã¯ããªãåºæºã«ããŠIHostingEnvironment ContentRootPathãšWebRootPathãèšå®ããããšã§ããïŒ
@keithwill AppContext.BaseDirectory
ã䜿çšããŠãapp.dllããã³ä»ã®ãã¹ãŠã®ãã¡ã€ã«ããã£ã¹ã¯ã«æœåºãããå ŽæãååŸã§ããŸãã ãããã£ãŠããããContentRootPath
ãšããŠäœ¿çšã§ããŸãã
@ igloo15 ïŒãã®ãªãã·ã§ã³ã䜿çšããå Žåã®ã·ããªãªãæããŠããã ããŸãããã
runtimeconfig.json
èšå®ãå¿
èŠã§ããïŒãã®èšå®ã®ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãããå Žåã¯ãä»ã®éçºè ãããé£çµ¡ãããããããšæããŸãã
@ swaroop-sridhar
ç§ã¯ããªãå¥åŠãªç¶æ³ã«ãããŸãã ç§ã®ãœãããŠã§ã¢ã¯ãããã¯ãŒã¯å ±æã«ä¿åããããããã¯ãŒã¯å ±æã¯ã©ã³ãã ãªWindows VMã«ãªã³ã¯ããããããã¯ãŒã¯å ±æããçŽæ¥å®è¡ãããŸãã ãããã¯ãŒã¯å ±æãããœãããŠã§ã¢ãå®è¡ããããã«ã¹ãã³ã¢ãããããWindowsVMã¯ãäœãå€æŽãŸãã¯å€æŽã§ããŸããã ãã°ãæ§æãã¡ã€ã«ãªã©ã¯ãã¹ãŠãããã¯ãŒã¯å ±æäžã«äœæããå¿ èŠããããŸãã
äžæè°ãªããšã«ããã®èšå®ã«ãããã·ã¹ãã å šäœã§è€æ°ã®ãœãããŠã§ã¢ã1ã€ã®ãã©ã«ããŒã«ã¬ã€ã¢ãŠããããã®ãã©ã«ããŒæ§é ãããŸããŸãªæ§æ/ããŒãžã§ã³ã«ã¯ããŒã³åã§ããŸãã 次ã«ãç¹å®ã®ããŒãžã§ã³ãå®è¡ããå¿ èŠãããå Žåã管çãœãããŠã§ã¢ã¯vmsãèµ·åããvmsäžã®ãã©ã€ããç¹å®ã®ããŒãžã§ã³ã®ãããã¯ãŒã¯å ±æã«ãããããŠãœãããŠã§ã¢ãå®è¡ããŸãã
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ïŒã«ããæ¹ããå®è£ ãããç°¡åã§å¹ççã§ããããšã«åæããŸãã ããããšãã
ããã«ã¡ã¯ããã®ãããã¯ã«ã€ããŠããã€ã質åããããŸãã
.NET Framework 4.7.2ïŒããšãã°ïŒã¢ããªã±ãŒã·ã§ã³ãåäžã®å®è¡å¯èœãã¡ã€ã«ã«ããã±ãŒãžåããããã«ãåäžãã¡ã€ã«é åžæ©èœã䜿çšããããšæããŸãã ããã¯ãã®æ©èœã®ç®çã§ããããããšã.NET Coreã¢ããªã±ãŒã·ã§ã³ããµããŒãããããšã ããç®çãšããŠããŸããïŒ
ç§ã®2çªç®ã®è³ªåã¯ãããã±ãŒãžã³ã°ãã©ã®ããã«è¡ããããã«é¢ãããã®ã§ãã å®è¡å¯èœãã¡ã€ã«ãäœæããããšãã¿ãŒã²ãããã¬ãŒã ã¯ãŒã¯ã©ã³ã¿ã€ã ãå®è¡å¯èœãã¡ã€ã«ã«ãã³ãã«ãããŸããïŒ ãŸãã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã¿ãŒã²ãããã·ã³ã«ããªã€ã³ã¹ããŒã«ããå¿ èŠããããŸããïŒ
@gaviriar.NETFrameworkã¢ããªã±ãŒã·ã§ã³ããµããŒãããŠãããšã¯æããŸããã ãããŠãã¯ãã.NET Coreã©ã³ã¿ã€ã ãå®è¡å¯èœãã¡ã€ã«ã«ãã³ãã«ã§ããŸãïŒãããããèªå·±å®çµåãå ¬éïŒã
@tomrus88ãåçããããšãããããŸãã ããã¯ã.NETFrameworkã¢ããªã±ãŒã·ã§ã³ã«é¢ããŠã¯æ¬åœã«æ®å¿µã§ãã .NET Frameworkã©ã³ã¿ã€ã ãå®è¡å¯èœãã¡ã€ã«ã«ãã³ãã«ããããã«äœ¿çšã§ããæšå¥šæ¹æ³ã¯ãããŸããïŒ
ããã¥ã¡ã³ãã®é¢é£ããäœæ¥ã»ã¯ã·ã§ã³ã«ããŒã«ã®ãªã¹ãã衚瀺ãããŸãã äžèšã§ææ¡ãããŠãŒã¹ã±ãŒã¹ã«ç¹ã«æšå¥šã§ãããã®ã¯ãããŸããïŒ
@gaviriar.NETFrameworkã¯WindowsOSã®äžéšã§ãã å®è¡å¯èœãã¡ã€ã«ã«ãã³ãã«ããããã®ãµããŒããããŠããæ¹æ³ã¯ãããŸããã
@gaviriarã©ã³ã¿ã€ã ããã³ãã«ããå¿ èŠãããããšã¯ã.NETCoreã«åãæ¿ããäž»ãªçç±ã®1ã€ã§ãã
@ jnm2ãš@jkotasã®èª¬æã«æè¬ããŸããããã§ã¯.NETã®äžçã«noobããŸãã .NETCoreã«åãæ¿ããããšæããŸãã ãã ãã.NETFrameworkã察象ãšããŠããã¬ã¬ã·ãŒã©ã€ãã©ãªãšå¯Ÿè©±ããå¿ èŠãããå Žåã«çŽé¢ããŠããŸãã ãã®ãããªå Žåããã®ã©ã€ãã©ãªãæäœããå¿ èŠãããå Žåãã¢ããªã.NETCoreã«åãæ¿ããããšã¯ã§ããªããšç解ããŠããŸãã ãŸãã¯ãç§ã®ã¢ããªã.NET Coreã§ãããªãããåŸæ¥ã®.NET Frameworkã©ã€ãã©ãªãšå¯Ÿè©±ã§ãããããªä»£æ¿ã¢ãããŒãã¯ãããŸããïŒ
å³æžé€šã«ãã£ãŠç°ãªããŸãã .NET Frameworkã察象ãšããå€ãã®ã©ã€ãã©ãªã¯ã.NETCoreã§ãæ£åžžã«æ©èœããŸãã .NET Coreã§ã©ã€ãã©ãªã䜿çšããããšããŸãããïŒ ãããæ©èœããªãããšã確èªããå Žåãããã«å¯Ÿãã解決çãåŸããããŸã§åãæ¿ããããšã¯ã§ããŸããã
ç§ã¯å®éã«ãããè©ŠããŸãããããŠã£ã³ããŠåºæã®ã©ã€ãã©ãªã«ã€ããŠè©±ããŠããã®ã§ãããã¯æ©èœããŸããã .NET Frameworkãã¿ãŒã²ããã«ããããšã«åºå·ããããªããèšãããã«.NET Coreã®æ¥œãã¿ãéã以å€ã«éžæè¢ã¯ãªããšæããŸãïŒ/
@gaviriarããã¯ãããã¯ããå€ããŠããŸããã Microsoft.Windows.Compatibilityã説æããŠããæ£ç¢ºãªç®çã®ããã«.NETCoreçšã®WindowsAPIãæäŸããWindowsäºææ§NuGetããã±ãŒãžãè©ŠããŸããã
@gaviriar ïŒããã«ããã€ãã®èª¬æïŒ
å®è¡å¯èœãã¡ã€ã«ãäœæããããšãã¿ãŒã²ãããã¬ãŒã ã¯ãŒã¯ã©ã³ã¿ã€ã ãå®è¡å¯èœãã¡ã€ã«ã«ãã³ãã«ãããŸããïŒ ãŸãã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã¿ãŒã²ãããã·ã³ã«ããªã€ã³ã¹ããŒã«ããå¿ èŠããããŸããïŒ
ããã¯ãã«ãã«ãã£ãŠç°ãªããŸãã ãã¬ãŒã ã¯ãŒã¯ã«äŸåããïŒã©ã³ã¿ã€ã ãã¿ãŒã²ããã«ã€ã³ã¹ããŒã«ãããïŒã¢ããªãšèªå·±å®çµåïŒã©ã³ã¿ã€ã ãã¢ããªã«ããã±ãŒãžåãããïŒã¢ããªã®äž¡æ¹ãåäžãã¡ã€ã«ãšããŠå ¬éã§ããŸããã.netã³ã¢3.0ã¢ããªã®ã¿ã§ãã
ããã¥ã¡ã³ãã®é¢é£ããäœæ¥ã»ã¯ã·ã§ã³ã«ããŒã«ã®ãªã¹ãã衚瀺ãããŸãã äžèšã§ææ¡ãããŠãŒã¹ã±ãŒã¹ã«ç¹ã«æšå¥šã§ãããã®ã¯ãããŸããïŒ
.net Frameworkã®å Žåãç§ãææ¡ã§ããæåã®è§£æ±ºçã¯ãã¢ããªããã¡ã€ã«æœåºãåŠçããããšã§ãã äŸïŒäŸåé¢ä¿ã管ç察象ãªãœãŒã¹ãšããŠã¢ããªãã€ããªã«åã蟌ã¿ãèµ·åæã«ãªãœãŒã¹ãæ瀺çã«æœåºããŸãã ãã³ãã«ã©ã€ãã©ãªããã³ãã«ãšæœåºã«äœ¿çšããããšãã§ããŸããïŒã©ã€ãã©ãªã¯netstandardã§æ§ç¯ãããŠããããïŒã管ç察象ãªãœãŒã¹ã䜿çšããæ¹ãåªãããœãªã¥ãŒã·ã§ã³ã§ãã
@igloo15ãš@swaroop-sridharãããã¯ããå€ããŠããããšãèæ ®ããŠããããã®å ¥åã«æè¬ããŸãã 誰ãä»ã®äººããã€ãèªãã§ãããšãã«ãã®è°è«ã圹ã«ç«ã€ãšæãããšãé¡ã£ãŠããŸããã
ç§ã¯ããªããç§ãšå ±æãããªãã·ã§ã³ãè©äŸ¡ããç§ã®ãŠãŒã¹ã±ãŒã¹ã«æé©ãªã¢ãããŒããäœã§ãããããç¥ããããŸãã
ããããšãïŒ
ã¯ã€ãã¯ã¢ããããŒãïŒ
ãã®åçŽãªHelloWorldã¢ããªã±ãŒã·ã§ã³ããã¹ãããŸããã åäžãã¡ã€ã«ã®å®è¡å¯èœãã¡ã€ã«ãæ£åžžã«ãã«ãã§ããŸãã ãã ãããããžã§ã¯ãæ§æãããããããã«ãèªå·±å®çµåã§ããããšãæå³ãããŠããŸãã ãããã.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
ãçæããŸã
å®è¡å¯èœãã¡ã€ã«ãã.NETCoreã©ã³ã¿ã€ã ãã€ã³ã¹ããŒã«ãããŠããªãWindows7ã€ã³ã¹ããŒã«ã«ã³ããŒããŸã
HelloWorld.exe
å®è¡ããŸã
@gaviriarããªããå
¬éããäŸãè©ŠããŠã¿ãŸããããããŸããããŸããã
ã€ãŸããæ£åžžã«å®è¡ãããHelloWorldçšã®èªå·±å®çµåã®åäžexeãæ§ç¯ããŸããã
ç§ãèŠãããšãã§ããã®ã¯ãã¢ããªãdotnet publish / pïŒPublishSingleFile =trueãŸãã¯/pïŒPublishSingleFile = falseãšããŠãã«ãããŠããå®è¡å¯èœãã¡ã€ã«ã®ãµã€ãºã¯å€æŽãããªããšããããšã§ãã ããã¯äºæ³ãããåäœã§ããïŒ
ããã¯çµ¶å¯Ÿã«äºæ³ãããŠããŸããã åäžãã¡ã€ã«ã¢ããªã¯çŽ70MBã§ããå¿ èŠããããŸãïŒgitlabããŒãžã«ç€ºãããŠãããããã°ãã«ãã®å ŽåïŒã ãã以å€ã®å Žåãããã¯éåžžã®apphostã§ãããäžèšã§èª¬æãããšããã«å€±æããããšãäºæ³ãããŸãã ã¯ãªãŒã³ãªãã£ã¬ã¯ããªããå ¬éããŠããŸããïŒ
ãããžã§ã¯ããã¡ã€ã«ã«é¢ãããã1ã€ã®æ³šæç¹-ããããã£ã®1ã€ãIncludeSymbolsInSingleFile
ïŒ$ã§ã¯ãªãIncludeSymbolsInFile
ãšããŠèª€ã£ãŠèšè¿°ãããŠããŸãã ããããããã¯ããªããå ±åããåé¡ãšã¯äœã®é¢ä¿ããããŸããã
@gaviriarã¿ãŒã²ããã©ã³ã¿ã€ã èå¥åã¯äœã§ããã æ£ããèšå®ããªããšãæ£ããhostfxr.dllããã³ãã«ãããŸããã hostfxr.dllã«ã¯ãWindows7ãã·ã³ã«ã¯ååšããªãç¹å®ã®vc++åé åžå¯èœãã¡ã€ã«ãå¿ èŠã§ããå¯èœæ§ããããŸãã æå®ããããã¹ã«dllãååšããããšã確èªããäŸåé¢ä¿ãŠã©ãŒã«ãŒããŒã«ã«ããŒãããããšããå Žåã¯ãäŸåããŠããdllãååšãããã©ããã確èªã§ããŸãã
ILã®ããŒãžïŒILMergeã®ãããªããŒã«ã¯ãå€ãã®ã¢ã»ã³ããªã®ILã1ã€ã«çµåããŸããããã®éçšã§ã¢ã»ã³ããªã®IDã倱ããŸãã ããã¯ãåäžãã¡ã€ã«æ©èœã®ç®æšã§ã¯ãããŸããã
ã¢ã»ã³ããªã®ã¢ã€ãã³ãã£ãã£ã倱ã
ããã¯åé¡ã§ã¯ãããŸããã
ã·ã³ã°ã«exeã®èªå·±å®çµåæ©èœã«zip/unzipãŸãã¯ä»ã®ãã³ãã«ãœãªã¥ãŒã·ã§ã³ã䜿çšããããšã¯åžžã«çŠæ¢ãããŠããŸãã
ããã¯æ¬¡ã®åé¡ãåŒãèµ·ããããã§ãã
ã·ã³ã°ã«exeãã¡ã€ã«ã®ãµã€ãºãæžããæ¹æ³ïŒ?? ãŸãã¯ããªãexeãã¡ã€ã«ã倧ããããã®ã«ãHello Worldã ããªã®ãïŒ??
åžžã«åé¡ãããã察åŠããå¿
èŠããããŸãã培åºçã«ãã£ãŠã¿ãŸãããã
å®éãæåããIL-Mergeãšåæ§ã®æ¹æ³ã䜿çšããå¿
èŠããããŸãã
å®éã人ã
ã¯åäžã®EXEã«ããã»ã©å€¢äžã«ãªã£ãŠããããã§ã¯ãããŸããã
exeïŒ1ïŒ+ dllïŒ1-2ïŒãOKã§ããã400ããŠã³ãdllã§ã¯ãããŸããã
pplã¯ãã³ãŒãããµãŒããŒãã£ã¹ã¯ã«å®è¡ãããªãããã«ãããµãŒããŒã¡ã¢ãªã䜿çšããŠå®è¡ããããšãæãã§ããŸããã
人ã
ã¯åã«å±éã®ã³ã¹ããåæžãããã ãã§ããïŒãã£ã¹ã¯ãã¡ã¢ãªã垯åå¹
ãªã©...ïŒ
3.0ãã€ã«ã¹ããŒã³ãåé€ããã®ã§ããã®åé¡ã¯ããã®ããã¥ã¡ã³ãã§èª¬æãããŠãã段éãéããŠåäžãã¡ã€ã«æ©èœã®å®è£ ã远跡ããŸããããã¯ã3.0ãªãªãŒã¹ã®ç¯å²ãè¶ ããŠããŸãã
@sgf ããã¡ã€ã«ãµã€ãºãå°ããããããã«å¿
èŠãªäœæ¥ãããããšã«åæããŸãã ãµã€ãºçž®å°ã®æ©äŒã«ã¯2ã€ã®åœ¢åŒããããç¹ã«åäžã®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ããããšã§ãã äŸïŒ GetModuleFileNameW
(Null, <buffer>, <len>)
@ chris3713çŸåšãexeã®å Žæã«ã¢ã¯ã»ã¹ããããã®æè¯ã®æ¹æ³ã¯ããã€ãã£ãAPIã«PInvokeããããšã§ãã äŸïŒ
GetModuleFileNameW
(Null, <buffer>, <len>)
ãããã§ãç§ã¯Process.GetCurrentProcess().MainModule.FileName
ã䜿çšããããšã«ãªããŸããã
PublishSingleFile = trueã§å ¬éãããWindowsãµãŒãã¹ãšããŠãasp.netã³ã¢ã¯ãŒã«ãŒ/WebAPIã§æ£åžžã«åäœããŸãã
ãµãŒãã¹ãç»é²ããŠsc create testwk binPath="[...]/MyAspNetCoreWorker.exe"
ã次ã«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ãèŠãã®ãåŸ
ã¡ãããŸããð
ã¡ãªã¿ã«ãã¹ããŒãž2ã¯åŒãç¶ã.Net Core 3.0ã®äžéšã«ãªãäºå®ã§ããïŒ
äœæ¥ããããšãããããŸãã.netã³ã¢ã§ã®å ¬éãµãŒãã¹ã¯æ¬åœã«ã·ã³ãã«ã«ãªããŸããð
CoreRTïŒïŒ 2.5mb ïŒ
zipããã¯ãªããé ããã³ã¹ããªãããšã³ãžã³ã«ã¯å¿ èŠãªãã®ã ããå«ãŸããæªäœ¿çšã®æ©èœã¯csproj configïŒãªãã¬ã¯ã·ã§ã³ïŒã䜿çšããŠç¡å¹ã«ãããŸã
ããã¯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ã¿ãŒã²ãããç¶ããŠïŒ /t:Rebuild
ïŒåŒã³åºããšãåºåãµã€ãºã倧ãããªããŸãã
ã芧ããã ãããããšãããããŸã@am11 ã å€ããã€ããªãä¿æããå ¬éã¯æ¢ç¥ã®åé¡ã§ãïŒcc @nguerreraïŒã
.Net Core 3ãã¬ãã¥ãŒ8以éãåäžãã¡ã€ã«ã§å
¬éãããã¢ããªãèµ·åã§ããŸããã
ã€ãã³ããã¥ãŒã¢ã§ãã®ãšã©ãŒãçºçããŸããïŒ
ç§ã¯WindowsServer2019ã䜿çšããŠããŸã
ç·šéïŒãã®ãšã©ãŒã¯ã.Net Core SDKPreview7ã.NetCoreSDK 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 .NetCoreP9ãã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ãªããžããªã«åé¡ãå ±åããŠãã ããã
ç§ã¯ããã調ã¹ãŸããããããã¯ãäžæãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ã§ããªãç°å¢ã§ã¢ããªãå®è¡ãããŠããå Žåã«ã®ã¿çºçããŸãã ããšãã°ããããè¡ãå ŽåïŒ
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
win32APIã䜿çšããŠäžæãã£ã¬ã¯ããªãæ¢ãããšã«æ³šæããŠãã ããã ããã¯envã䜿çšããŸãã å€æ°TMP
ãç¶ããŠTEMP
ãªã©ã æåã®withå€ã«ç¡å¹ãªãã¹ãå«ãŸããŠããå Žåããã®ããã«å€±æããŸãã
ãããä¿®æ£ããã«ã¯ãäžæãã¹ãæ£ããèšå®ãããŠããããšã確èªããããæœåºãå®è¡ããå Žæã«DOTNET_BUNDLE_EXTRACT_BASE_DIR
ãæ瀺çã«èšå®ããŸãã
@Safirionãªããã®æ瀺ãéã£ãŠããã ããŸããïŒ ãã®å€±æã¯æ±ºå®è«çã§ããïŒ
@jeffschwMSFTãäžèšã§ææ¡ããããã«ãcore-setupãªããžããªã«åé¡ãå ±åããŠãã ããã
.Net CoreãRC1ã«æŽæ°ããŠãµãŒããŒãåèµ·åããåŸããã®åé¡ãåçŸã§ããŸããã ïŒRC1ãã¢ã³ã€ã³ã¹ããŒã«ãããã¬ãã¥ãŒ9ãå床ã€ã³ã¹ããŒã«ããŠãRC1ã«å床ã¢ããã°ã¬ãŒãããããšããŸããããä»åã¯ã¢ããªãæ£åžžã«èµ·åããŸãïŒ
ãã®ãšã©ãŒã¯ãSDK3.0P7ããSDK3.0P8ããã³SDK3.0P9ããSDK3.0RC1ãžã®ç§»è¡æã«çºçããŸããã
ãŸãã2ã€ã®ã±ãŒã¹ã§ã¯ããµãŒããŒãåèµ·åããã ãã§åé¡ã解決ããŸãã
RC1ã«ã¢ããã°ã¬ãŒããããšãã¯ã.Net Core WindowsãµãŒãã¹ïŒã·ã¹ãã ã«ãã£ãŠèµ·åãããããã C:\Windows\Temp\.net
ãã©ã«ããŒã䜿çšããŠæœåºããã¯ãŒã«ãŒïŒãš.Net Core WPFã¢ããªïŒãŠãŒã¶ãŒèµ·åã»ãã·ã§ã³ã¹ã¯ãªããã«ãã£ãŠèµ·åïŒã䜿çšããŸãã ããããããã®ãšã©ãŒã¯ã.NetCoreSDKã®ã€ã³ã¹ããŒã«äžã«å®è¡ãããŠãã.Netã³ã¢ã¯ãŒã«ãŒãåå ã§ããå¯èœæ§ããããŸããããããŸãã...
ã©ã³ã¿ã€ã ã§ã¯ãªãSDKãã€ã³ã¹ããŒã«ããããšã«æ³šæããŠãã ãããããã¯ã3 .Coreã©ã³ã¿ã€ã ïŒasp.netã³ã¢ããã¹ã¯ããã.netã³ã¢ãããã³ã³ã¢ïŒãåæã«ãããã€ããå¿ èŠãããã https ïŒ//dot.netã§ã¯ããã«ã©ã³ã¿ã€ã ããæäŸãããªãããã§ããã€ã³ã¹ããŒã©ãŒãïŒDesktop Runtimeã€ã³ã¹ããŒã©ãŒãèŠã€ãããªãã®ã§ãéžæã®äœå°ã¯ãããŸããïŒ...
æŽæ°ïŒæ°ã«ããªãã§ãããã¥ã¡ã³ããèŠã€ããŸããã
ãããããªãã®ããŒãã¯ãŒã¯ã«æè¬ããŸãïŒ
æ§æãã¡ã€ã«ïŒããšãã°ãApp.configïŒã¯ã©ã®ããã«é åžãããããšã«ãªã£ãŠããŸããïŒ æ£ç¢ºãªã³ãã³ãã·ãŒã±ã³ã¹ã䜿çšããŠãRHEL7.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 -system-interface
@morganbr
ã©ã®ãããªã¢ããªã§äœ¿çšããå¯èœæ§ããããŸããïŒ ïŒããšãã°ãWindowsäžã®WPFïŒLinux Dockerã³ã³ãããŒå ã®ASP.NETïŒä»ã«äœãïŒïŒ
Windowsçšã®ãããã¬ã¹ããã³WPFã¢ããª
ã¢ããªã«ïŒ.NET以å€ã®ïŒC ++ /ãã€ãã£ãã³ãŒããå«ãŸããŠããŸããïŒ
ã¯ããããŸããŸãªãã€ãã£ãdllãå¶åŸ¡ã§ããªããµãŒãããŒãã£ã¢ã€ãã ãä»ã®ããŒã ã®å éšã¢ã€ãã ãP/InvokeããŸãã
ã¢ããªã¯ãã¢ããªã®ãã«ãã«å ã å«ãŸããŠããªãã£ããã©ã°ã€ã³ããã®ä»ã®å€éšdllãããŒãããŸããïŒ
ã¯ãããã ããCompilerServicesã䜿çšããŠãœãŒã¹ããã³ã³ãã€ã«ããŸãã
ã¢ããªãåæ§ç¯ããŠåé åžããã»ãã¥ãªãã£ä¿®æ£ãçµã¿èŸŒãããšãããšããªãã§ããïŒ
ã¯ã
ã¢ããªã®èµ·åã200ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
ã¯ããç§ãã¡ã®ã¢ããªã¯éåžžãé·æééãããŸãŸã«ãªã£ãŠããŸãã
ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
ã¯ããæ°ååŸ ã€ããšãã§ããŸãã
ã¢ããªã®ãµã€ãºãååã«ãªãå Žåã¯ãè¿œå ã®äœæ¥ãåãã§è¡ããŸããïŒ
ã¯ã
ããããšã@john-cullen
æœåºããã«åäžãã¡ã€ã«ã¢ããªãå®è¡ãããããã¿ã€ãå®è£ ã®ããã«ãããã€ãã®PRãsingle-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ã500ããªç§é ãå Žåã¯ãããã䜿çšããŸããïŒ 5ç§ã¯ã©ãã§ããïŒ
ã¯ãã
ïŒãŠãŒã¶ãŒã«äœããèµ·ãã£ãŠããããšãéç¥ããããã«ãããã¹ãåºåãŸãã¯ã¡ãã»ãŒãžããã¯ã¹ãæäŸããã®ã¯çŽ æŽãããããšã§ãïŒ
- ã¢ããªã§èš±å®¹ã§ãããšæãããæ倧ãµã€ãºã¯ã©ããããã§ããïŒ 5 MBïŒ 10ïŒ 20ïŒ 50ïŒ 75ïŒ 100ïŒ
10ã20 Mb
- ãµã€ãºãèµ·åæéãæé©åããããã«ãããé·ããªãªãŒã¹ãã«ãæéãåãå ¥ããŸããïŒ ããªããåãå ¥ããæé·ã®ãã®ã¯äœã§ããïŒ 15ç§ïŒ 30ç§ïŒ 1åïŒ 5åïŒ
1å以äžã§å€§äžå€«ã§ãã
- ã¢ããªã®ãµã€ãºãååã«ãªãå Žåã¯ãè¿œå ã®äœæ¥ãåãã§è¡ããŸããïŒ
ããããã
è¿ä¿¡ããããšãããããŸãã@lenardgã
ãã®åé¡ã¯ã.NETCore3.0åäžãã¡ã€ã«é åžæ©èœã®é²æç¶æ³ã远跡ããŸãã
ãã®æ©èœã®èšèšããã¥ã¡ã³ããšã¹ããŒãžã³ã°èšç»ã¯æ¬¡ã®ãšããã§ãã
ããã¯ãå±éã容æã«ãããµã€ãºãçž®å°ããããã®éåžžã«äŸ¿å©ãªæ©èœã§ãã
ç¹ã«ãã°ã«ãŒãããªã·ãŒãä»ããŠç°å¢ãå³å¯ã«å¶åŸ¡ãããŠãããšã³ã¿ãŒãã©ã€ãºå±éã®å Žåãèšèšã«é¢ããæ¹åç¹ã¯ã»ãšãã©ãããŸããã
æ¡ä»¶ä»ãã§ãåäžã®å®è¡å¯èœãã¡ã€ã«ãããã¯ããªããå§çž®ããããšã¯å¯èœã§ããïŒ
ã€ãŸããã©ããã®ãããªããžãã¯ãè¿œå ããã®ã§ãä»ã®ããŒã«ãçµ±åããå¿
èŠã¯ãããŸããã
å§çž®ãããšãããã«å°ããªexeãçæãããŸãã
exeãèµ·åãããšããã®å 容ãäžæãã©ã«ãã«å±éãããŸãã åœç€Ÿã®è£œåã§ã¯ãç¹å®ã®ãŠãŒã¶ãŒãµã€ãã§ãã¯ã©ã€ã¢ã³ããã·ã³ãå³å¯ã«å¶åŸ¡ãããŠãããå®è¡å¯èœãã¡ã€ã«ãäžæãã©ã«ããŒãŸãã¯ïŒ userprofileïŒ ã®å Žæããèµ·åããããšã¯ã§ããŸããã
æœåºããå Žæãæå®/å¶åŸ¡ããããšã¯å¯èœã§ããããŸãã¯ãã\ extractããŸãã¯ãã®ãããªãµããã©ã«ããŒå
ã®ãã€ã³ãã¬ãŒã¹æœåºãã§ããå¯èœæ§ããããŸããïŒ
ããã«ãããã°ã«ãŒãããªã·ãŒãžã®æºæ ãšãåäžã®exeæ©èœã䜿çšã§ããããã«ãªããŸãã
@RajeshAKumar https://github.com/dotnet/core-setup/issues/7940
ãç¥ãããããã£ãã®ã§ãããä»æ¥ã¯@Safirionãšåãåé¡ãçºçããŸããã ç§ã¯ubuntuãã¿ãŒã²ããã«ããdotnetcore3.0ã¢ããªãæã£ãŠããŠããããSynologyãµãŒããŒã§å®è¡ããŸããã æœåºãããŸããã§ãã-ãèŽåœçãªãšã©ãŒãçºçããŸããããã³ãã«ã®ã³ã³ãã³ããæœåºã§ããŸããã§ããããšãããšã©ãŒã§å€±æãç¶ããŸããã äœåºŠãåæ§ç¯ããŸããããåãããšã§ãã ãã¹ããåèµ·åããåŸãããã¯åã³æ£åžžã«åäœããŸããã
ããã«ãã¡ã€ã«ããã¯ãªã©ããããã©ããããããŠããããããã°ããæ¹æ³ããããã©ãããç解ããã®ã«åœ¹ç«ã¡ãŸãã
@RajeshAKumar dotnet / core-setupïŒ7940
ãã®ãªã³ã¯ãã©ã®ããã«åœ¹ç«ã€ãããããŸããã
ããã¯äžæçãªæœåºã«ã€ããŠè©±ããŠããã ãã§ããç§ã¯äžèšã®3ã€ã®ãã€ã³ãããªã¹ãããŸããã
ãããŠãç§ã¯ããªãã«ãããã®1ã€ã®è§£æ±ºçãäžããŸããã ç§ã¯ä»ã®2ã€ã«ã€ããŠã¯ããããŸãã
ãããŠãç§ã¯ããªãã«ãããã®1ã€ã®è§£æ±ºçãäžããŸããã ç§ã¯ä»ã®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 ïŒãã³ãã«ãããsingle-exeã®å§çž®ã¯ã.net 5ã§æ€èšäžã®æ©èœã§ãïŒ https ïŒ//github.com/dotnet/designs/blob/master/accepted/single-file/design.md#compression
ä»ã®ãšãããçæãããsingle-exeãå§çž®ããã«ã¯ãä»ã®ãŠãŒãã£ãªãã£ã䜿çšããå¿ èŠããããŸãã
@RajeshAKumar ã眲åã«é¢ããŠã¯ãå ¬éãããŠsingle-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 ã眲åã«é¢ããŠã¯ãå ¬éãããŠsingle-exeã«ãã³ãã«ããããã¹ãŠã®ãã¡ã€ã«/ãã€ããªã«çœ²åã§ããŸãã ãã¹ããåã蟌ã¿ã³ã³ããŒãã³ãããã£ã¹ã¯ã«æœåºãããšãåã ã®ãã¡ã€ã«èªäœã眲åãããŸãã åè¿°ã®ããã«ããã«ããããåäžãã¡ã€ã«èªäœã«çœ²åããããšãã§ããŸãã
ããã¯ããªãã®èŠä»¶ãæºãããŠããŸããïŒ
ãã³ã³ãã€ã«ãã解é€ããŠããŒããå
¬éããæ¹æ³ãç解ããããšããŠããŸãã
çŸåšã次ã®ã³ãã³ãã䜿çšããŠããããã眲åã§ããŸããã
èšå®publishargs=-cãªãªãŒã¹/pïŒPublishSingleFile = True / pïŒPublishTrimmed = True / pïŒPublishReadyToRun = false
dotnet publish -r win-x64 -o bin \ Output \ Win64ïŒ
publishargsïŒ
äžèšã¯ããªã ãããã±ãŒãžãšåæ§ã«ã³ã³ãã€ã«ãããã®ã§ãããããå£ãæ¹æ³ãããããŸããã
çæ³çã«ã¯ããªãã®ã¢ãããŒãã䜿çšããããã«ãç§ã¯ã³ã³ãã€ã«ãã眲åããæåŸã«ãããå
¬éããå¿
èŠããããŸãã
@Webreaperåé¡ãåçŸã§ããå Žåã¯ã
COREHOST_TRACE
ããªã³ã«ããŠã¢ããªãå®è¡ãïŒCOREHOST_TRACE
ç°å¢å€æ°ã1
èšå®ïŒãçæããããã°ãå ±æããŠãã ããã ããããšãã
ããããšãã åèµ·åãããããçŸåšã¯ãªããªã£ãŠããŸãããå床çºçããå Žåã«åããŠãããšäŸ¿å©ã§ãã
@RajeshAKumarã¯ããã³ãã«ã®çŽåã«å®è¡ãããã¿ãŒã²ããã«çœ²åãã¿ã°ä»ãããå¿
èŠããããŸãã
PublishReadyToRun
ãšPublishTrimmed
ã䜿çšããŠãããããæšæºã®Afterbuild
ãŸãã¯BeforePublish
ã¿ãŒã²ããã䜿çšããããšã¯ã§ããŸããã
BundlePublishDirectory
ã®çŽåã§å®è¡ããã眲åãå®è¡ããã¿ãŒã²ãããè¿œå ã§ããŸãã
@ swaroop-sridhar
ããã¯éåžžã«åªããæ©èœã§ãã ã©ã®dotnetãªãªãŒã¹ã§ããŸããŸãªã¹ããŒãžããã€å©çšå¯èœã«ãªããã«ã€ããŠã®ãªã³ã¯ã¯ãããŸããïŒ
@etherealjoyã«æè¬ããŸãã ãã³ãã«ããçŽæ¥å®è¡ãããåäžãã¡ã€ã«ã®äœæ¥ã¯é²è¡äžã§ãããç§ã®ç解ãæ·±ããããã«.net5ãªãªãŒã¹ã察象ãšããŠããŸãã
@RajeshAKumarã¯ããã³ãã«ã®çŽåã«å®è¡ãããã¿ãŒã²ããã«çœ²åãã¿ã°ä»ãããå¿ èŠããããŸãã
PublishReadyToRun
ãšPublishTrimmed
ã䜿çšããŠãããããæšæºã®Afterbuild
ãŸãã¯BeforePublish
ã¿ãŒã²ããã䜿çšããããšã¯ã§ããŸããã
BundlePublishDirectory
ã®çŽåã§å®è¡ããã眲åãå®è¡ããã¿ãŒã²ãããè¿œå ã§ããŸãã
ããããšãã
ããªããäžãããªã³ã¯ã¯MSãã«ãã¿ã¹ã¯ã®ããã«èŠããŸãã
ãBundlePublishDirectoryãã®ãã³ãã©ãŒãäœæããã«ã¯ã©ãããã°ããã§ããïŒ ããã¯ã¹ã¿ãžãª/ãããžã§ã¯ãã®å°éå
·/ãã«ãã€ãã³ãã«ãããŸããããããšãæåããäœããäœæããå¿
èŠããããŸããïŒ
ãã®å Žåã @ RajeshAKumarã¯ããã«ãåã®ãã«ãåŸã®ã€ãã³ãããããã现ãããã®ãå¿
èŠã«ãªããŸãã
ãããã£ãŠããããžã§ã¯ããã¡ã€ã«ãç·šéããŠã次ã®ãããªãã®ãè¿œå ããå¿
èŠããããšæããŸãã
<Target Name="Sign" BeforeTargets="BundlePublishDirectory">
...
</Target>
ããã§dotnet pack
ã³ãã³ãã®äºæ³ãããåäœã¯äœã§ããïŒ ã·ã³ã°ã«ãšã°ãŒã¢ãŒãã£ãã¡ã¯ããããŒã«ã«ã®nugetãªããžããªã«ããã·ã¥ããããšããŸãããã Chocolateyã䜿çšããŠã€ã³ã¹ããŒã«ããããšãããšããããžã§ã¯ããã¡ã€ã«ã«ãªã¹ããããŠãããã¹ãŠã®nugetdepsã埩å
ããããšããŸãã ããã¯ä»¥åã¯äºæ³ãããŠãããã®ã§ããããã®åäœã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ãªããžããªã«ããã·ã¥ããããšããŸãããã Chocolateyã䜿çšããŠã€ã³ã¹ããŒã«ããããšãããšããããžã§ã¯ããã¡ã€ã«ã«ãªã¹ããããŠãããã¹ãŠã®nugetdepsã埩å ããããšããŸãã ããã¯ä»¥åã¯äºæ³ãããŠãããã®ã§ããããã®åäœãSFDã«å¯ŸããŠæ£ãããã©ããã¯çåã§ãã
@catlion PublishSingleFile
ããããã£ã¯ã dotnet publish
ã³ãã³ãã§ã®ã¿ãµããŒããããŸãã ãããã£ãŠã dotnet pack
ã«ã¯åœ±é¿ããŸããã ã·ã³ã°ã«ãã¡ã€ã«ãšããã±ãŒãžã³ã°ã®äž¡æ¹ã䜿çšããåæ©ã¯ãããŸããïŒ
ç·šéïŒèµ·åæã«å€ãããŒãžã§ã³ãèªåçã«ã¯ãªãŒã³ã¢ããããæ¹æ³ã¯ãããŸããïŒ
çŸåšã®ãªãªãŒã¹ã®@Safirionã§ã¯ãã¯ãªãŒã³ã¢ããã¯æåã§è¡ããããã¹ãã¯æœåºããããã¡ã€ã«ãåé€ããããšã¯ããŸãããããã¯ãå°æ¥ã®å®è¡ã§åå©çšãããå¯èœæ§ãããããã§ãã
ã¯ããèªåã§ã¯ãªãŒããŒãäœããŸãð
ãè¿äºããããšãããããŸãã
@cupã¯ãmonoã«ã€ããŠç¹å¥ãªããšã§ã¯ãªããåãªãæšæºã®ã³ã³ãã€ã«ã§ãããnugetåç
§ãè¿œå ããããã«ãªããŸããããã®ãœãªã¥ãŒã·ã§ã³ã¯ããã¯ãåäžã®ãã¡ã€ã«ã§ã¯ãããŸããã ã¢ãã¯mkbundle
ãæã£ãŠããŸãããåäžã®ãã¡ã€ã«ãå®çŸããããã«
@Suchimanããããã§ããïŒ äžèšã®ç§ã®äŸã§ã¯ãåäžã®3KBãã¡ã€ã«ãçæãããŸãã dotnetã®æå°ãµã€ãºã¯27MBã®ããã§ããã次ã®ããã«ãªããŸãã
https://github.com/dotnet/coreclr/issues/24397#issuecomment -502217519
@cupã¯ã
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
@Suchimanããããã§ããïŒ äžèšã®ç§ã®äŸã§ã¯ãåäžã®3KBãã¡ã€ã«ãçæãããŸãã dotnetã®æå°ãµã€ãºã¯27MBã®ããã§ããã次ã®ããã«ãªããŸãã
3kãã¡ã€ã«ã¯ãmonoããã§ã«ã€ã³ã¹ããŒã«ãããŠããããã«ã®ã¿æ©èœããŸãã dotnetcoreåäžãã¡ã€ã«é åžã®èŠç¹ã¯ãclrãã€ã³ã¹ããŒã«ããå¿ èŠããªãããšã§ããããã¯ãã©ã³ã¿ã€ã ãå«ãã¹ã¿ã³ãã¢ãã³ã®åäžexeã§ãã
@Webreaperã¯ãå®éã«ã¯ãã¢ãã©ã«ã®mcsã®ã¿ã䜿çšããŠã³ã³ãã€ã«ãããšæããŸãã圌ã¯mono sun-mon.exe
ãèšè¿°ããŠããªãã£ãããã.NETFrameworkã§å®è¡ãããå¯èœæ§ããããŸãã
ãã ãã.NET Coreã¯ãã©ã³ã¿ã€ã ããã¬ã€ã³ã¹ããŒã«ãããŠããã·ããªãªãã€ãŸããã¬ãŒã ã¯ãŒã¯ã«äŸåããå±éããµããŒãããŠããŸãã .deps.json
ã.runtimeconfig.json
ãªã©ã®.NET Coreçšã®è¿œå ãã¡ã€ã«ãããã€ãããããããã®å Žåã¯ãŸã å®å
šã«åäžã®ãã¡ã€ã«å±éã§ã¯ãããŸããã
@ chris3713çŸåšãexeã®å Žæã«ã¢ã¯ã»ã¹ããããã®æè¯ã®æ¹æ³ã¯ããã€ãã£ãAPIã«PInvokeããããšã§ãã äŸïŒ
GetModuleFileNameW
(Null, <buffer>, <len>)
ç§ã¯ãŸã Windows以å€ã§äž¡æ¹ã®ã¢ãããŒããè©ŠããŠããŸãããã Environment.CurrentDirectory
ã®æ¹ãåªãããœãªã¥ãŒã·ã§ã³ã®ããã§ãã
ç·šéïŒãããã ãã®ãã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªãšã³ããªãã€ã³ãã§å€æŽãããå¯èœæ§ããããŸãã ãã¡ã
å°ãé¢é£ããã¡ã¢ã§ãVS for Macã®ææ°ã®ãã¬ãã¥ãŒã§Blazorã¢ããªã®åäžãã¡ã€ã«å ¬éã§ãã®ãªã°ã¬ãã·ã§ã³ãèŠã€ããŸããïŒ https ïŒ//github.com/aspnet/AspNetCore/issues/17079-ç§ã¯ããã以äžã§å ±åããŸããAspNeCore / Blazorã§ãããããã¯coreclrã°ã«ãŒãã«ããé¢é£ããŠããå¯èœæ§ããããŸã-確ãã§ã¯ãããŸããã ããªããã¡ãåãåãããã«ãããæ®ããŸãïŒ
@Suchiman泚æããŠãã ããããã®ã³ã³ãã€ã©ã«ã¯åé¡ããããŸãïŒ
@cupã¯ãç§ãååãä»ãããã¡ã€ã«ãã¹ã䜿çšããŠããããšãé€ããŠãC ++ã§èšè¿°ãããå€ãCïŒ5ã³ã³ãã€ã©ã䜿çšããŠããŸããããã¯ãroslynã§ã¯ãªãããããããã®çç±ã§ãã®åé¡ã解決ããŸãã ããããroslynã¯åãããšãè¡ãããšãã§ããŸããããã¹ãç°ãªããŸã...
å°ãé¢é£ããã¡ã¢ã§ãVS for Macã®ææ°ãã¬ãã¥ãŒã§ã®Blazorã¢ããªã®åäžãã¡ã€ã«å ¬éã§ãã®ãªã°ã¬ãã·ã§ã³ãèŠã€ããŸããïŒ aspnet / AspNetCoreïŒ17079 -AspNeCore / Blazorã§å ±åããŸãããããããåå ã§ããå¯èœæ§ããããŸãcoreclrã°ã«ãŒãã«ããé¢é£æ§ããããŸã-ããããªãã ããªããã¡ãåãåãããã«ãããæ®ããŸãïŒ
@Webreaperåé¡ãå ±åããŠããã ãããããšãããããŸããéçã¢ã»ããã«é¢ããASP.netã®åé¡ã®ããã§ãã ã ãããããã¯ãããæåºããã®ã«é©åãªå Žæã§ãã
*æçš¿ãä»ã®å·ããããã«ç§»åããŸãã
@ swaroop-sridharã
DotNet Coreã·ã³ã°ã«ãã¡ã€ã«WPFã¢ããªã®èµ·åæéã¯ã.net4.7ã§ãã«ããããå ã®ILMerge-edWPFã¢ããªã±ãŒã·ã§ã³ãããã¯ããã«é ããªããŸãã ããã¯äºæ³ãããããšã§ããããããšãå°æ¥æ¹åãããã®ã§ããããïŒ
ãã«ãã¯ç§ã®ImageOptimizerããæ¥ãŠããŸãïŒhttpsïŒ//github.com/devedse/DeveImageOptimizerWPF/releases
| ã¿ã€ã| æšå®ååèµ·åæé| æšå®2åç®ã®èµ·åæé| ãµã€ãº| ããŠã³ããŒããªã³ã¯|
| -| -| -| -| -|
| .NET 4.7.0 + ILMerge | ã3ç§| ã1ç§| 39.3mb | ãªã³ã¯|
| dotnet publish -rwin-x64-cãªãªãŒã¹--self-contained=false / pïŒPublishSingleFile = true | ã10ç§| ã3ç§| 49mb | |
| dotnet publish -r win-x64-cãªãªãŒã¹/pïŒPublishSingleFile = true | ã19ç§| ã2ç§| 201 mb | |
| dotnet publish -r win-x64-cãªãªãŒã¹/pïŒPublishSingleFile = true / pïŒPublishTrimmed = true | ã15ç§| ã3ç§| 136mb | ãªã³ã¯|
| dotnet publish -rwin-x64-cãªãªãŒã¹| ã2.5ç§| ã1.5ç§| exeãã¡ã€ã«ã®å Žåã¯223kbïŒdllã§ã¯+ 400mbïŒ| |
@devedseã¯ã確ãã«ãã2åç®ã®èµ·åãã¯ïŒæåã®èµ·å以å€ã®ïŒè€æ°åã®å®è¡ã®å¹³åã§ããïŒ
èå³ããããŸããã/p:PublishSingleFile=true /p:PublishTrimmed=true
ã®å®è¡ã `/p:PublishSingleFile=true
ã®å®è¡ãããé ãçç±ã«ã€ããŠã®èª¬æããããŸããããããã£ãŠã調æ»ããåã«ãã2çªç®ã®ã¹ã¿ãŒãã¢ãããã®æ°å€ãå®å®ããæ°å€ã§ãããã¹ã¿ãŒãã¢ããã®éããåçŸå¯èœã§ããããšã確èªããããšæããŸãã
ãŸãããã®åé¡ã¯åäžãã¡ã€ã«ãã©ã°ã€ã³ã«é¢ãããã®ã§ãããperfãã£ã¹ã«ãã·ã§ã³ãæ°ããåé¡ã«ç§»åããããdotnet / coreclrïŒ20287ã«ç§»åããŠãã ããã ããããšãã
@ swaroop-sridharããããå¹³åã§ãããšããããªãã®è³ªåã«çããŠïŒ
ãããæ£ç¢ºã«èšæããã®ã¯å°ãé£ããã®ã§ãã¿ã€ãã³ã°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åäžã«ã«ãŠã³ãããèµ·åæéã«å€§ããªéãããããã©ããã確èªããããã«æ°åè©Šè¡ããããšã«ãã£ãŠè¡ãããŸããã ããè¯ãæ¹æ³ãç¥ã£ãŠããå Žåã¯ãç§ã®ãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããããšã§ç°¡åã«åçŸã§ããŸãïŒhttps://github.com/devedse/DeveImageOptimizerWPF
ç§ã®äž»ãªè³ªåã¯ããã³ãã«ãããŠããªã.exeãã¡ã€ã«ãšæ¯èŒããŠããã³ãã«ãããïŒåäžãã¡ã€ã«ïŒã¢ããªã±ãŒã·ã§ã³ã®èµ·åã«æéããããçç±ã«é¢ãããã®ã§ãã
ç§ã¯ããã§ééã£ãŠãããããããŸããããåäžã®ãã¡ã€ã«ã«ã¯ãªãŒããŒããããããã®ã§ãããã¯ç§ã«ã¯çã«ããªã£ãŠããŸãã åºæ¬çã«ãå¥ã®ã¢ããªãèµ·åããŠããã¢ããªããããŸãã ILMergeãçŽæ¥èµ·åããŠããéã ILMergeã¯ãåç §ãããdllãexeã«ããŒãžããã ãã§ãçŸåšPublishSingleFileã§å®è¡ãããŠããå¥ã®ã¬ã€ã€ãŒã«ãã¹ãŠãã©ããããŸããã§ããã
@devedseåäžã®ãã¡ã€ã«ã¯ãåºæ¬çã«ãããããããã®å®è¡ãéå§ããåã«ããã§ãã¯ãµã ã®æœåºããã§ãã¯ãªã©ãè¡ã£ãŠããŸãã
ããããã®æéãããã£ãçç±ã ãšæããŸãã
æœåºã¯ããã£ãã·ã¥ããããããã次åã®å®è¡ã§ã¯IOãªãŒããŒãããã¯ãããŸããã
@RajeshAKumar ãããŒãããã®ã·ããªãªã§å®éã«é²ãæ¹æ³ãæœåºããŠããŸããïŒ ILMergeã®æ¹æ³ã§ãå®éã«DLLã1ã€ã®ãã³ãã«ã«ããŒãžããæ¹ãããã®ã§ã¯ãªãã§ããããã
ç¹ã«å€§ããª.exeãã¡ã€ã«ã®å Žåã¯ããã¹ãŠã®ãã¡ã€ã«ã2åä¿åããããã®ãã£ã¹ã¯å®¹éã®ã³ã¹ããçºçããŸãã
@devedseç§ãã¡ã¯çããã®æ©èœã®æ¬¡ã®æ®µéïŒãã³ãã«ããå®è¡ïŒãåŸ ã£ãŠããŸãããä»ã®ãšããããããå¯äžã®è§£æ±ºçã§ãã ð
https://github.com/dotnet/designs/blob/master/accepted/single-file/staging.md
ããã¯ããã¹ã¯ãããã§JITã䜿çšããããšã§åŸããããã®ã§ãããèµ·åãé ããAppleã ãããããç解ããŠããããã«èŠããŸã
ïŒã»ãšãã©ã®å Žåããã§ã«è¿°ã¹ãããšãç¹°ãè¿ããŸãïŒïŒ
æåã®èµ·åã¯ã¯ããã«é
ããªããšäºæ³ãããŸã-ã¢ããªããã£ã¹ã¯ã«æœåºããŸã-éåžžã«å€ãã®IOã 2åç®ä»¥éã®èµ·åã¯ãã¢ããªã®éåäžãã¡ã€ã«ããŒãžã§ã³ãšã»ãŒåãã§ããå¿
èŠããããŸãã å
éšæž¬å®ã§ã¯ãéãã¯èŠãããŸããã§ããã
枬å®æ¹æ³ïŒãã¬ãŒã¹ïŒWindowsã§ã¯ETWïŒã䜿çšããŸãã-ããã»ã¹ã®éå§æã«ã€ãã³ããããã次ã«ããã«äœ¿çšã§ããã©ã³ã¿ã€ã ã€ãã³ãããããŸã-ããããããã¯å¿ ãããç°¡åã§ã¯ãããŸããã
@Safirionãè¿°ã¹ãããã«ã.exeããçŽæ¥ïŒãã£ã¹ã¯ãžã®æœåºãªãã§ïŒãããŒãžã³ãŒãã®ã»ãšãã©ãå®è¡ããå¿ èŠãããåäžãã¡ã€ã«ã®æ¬¡ã®æ¹åã«åãçµãã§ããŸãã ãããããŸã ãªãªãŒã¹ãã¬ã€ã³ãçŽæããããšã¯ã§ããŸããã
JITïŒãã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ã¯Ready2RunïŒCoreFXãWPFïŒã§ããªã³ã³ãã€ã«ããå¿ èŠããããããèµ·åæã«ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®ã¿ãJITããå¿ èŠããããŸãã å®ç§ã§ã¯ãããŸãããã倧ããªéããçãã¯ãã§ãã èµ·åæéãçŽ1ã2ç§ã§ããããšãèãããšããã¹ãŠã®ãã¹ãã§ãã§ã«ããã䜿çšããŠãããšæããŸãã
ãããããŸã§ã次ã®ã¹ããããèšç»ãããŠããããšã«æ°ã¥ããŸããã§ããã ããã¯ãããæ確ã«ããŸãã
æåã®èµ·åã¯ã¯ããã«é ããªããšäºæ³ãããŸã-ã¢ããªããã£ã¹ã¯ã«æœåºããŸã-éåžžã«å€ãã®IOã
ããã¯æ±ºããŠèµ·ãããªãã¯ãã§ããããªãã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ããã¶ã€ã³ã«ãã£ãŠæããããã®ã«ããŸããæãããéžæãããã¯ããªãããŠãŒã¶ãŒã«éçºè ã圌ãã®ããã«äœ¿çšããŠããæè¡ãå«ãæ¹æ³ã§ã
@Safirionãè¿°ã¹ãããã«ã.exeããçŽæ¥ïŒãã£ã¹ã¯ãžã®æœåºãªãã§ïŒãããŒãžã³ãŒãã®ã»ãšãã©ãå®è¡ããå¿ èŠãããåäžãã¡ã€ã«ã®æ¬¡ã®æ¹åã«åãçµãã§ããŸãã ãããããŸã ãªãªãŒã¹ãã¬ã€ã³ãçŽæããããšã¯ã§ããŸããã
ããã«å€æŽãããã®ã«ããªãä»ããæ£åŒã«ãªãªãŒã¹ããã®ã§ããïŒ ãã¬ãã¥ãŒ/å®éšãšããŠããŒã¯ããå¿ èŠããããŸã
ç§ã®æèŠã§ã¯ãããã¯æéãšãªãœãŒã¹ã®ç¡é§ã§ãããAOTã³ã³ãã€ã«ãšããªãŒã·ã§ãŒãã³ã°ã«çŠç¹ãåããããã¹ãŠã®ãªãœãŒã¹ãããã«çœ®ããããã¯ã§åæ¢ããŸã
@RUSshyãªããããªã«å«ããªã®ïŒ æåã«èµ·åãããšãã«èµ·åãé ãããããªãå Žåã¯ãåäžãã¡ã€ã«ã®å±éã䜿çšããªãã§ãã ããã
èµ·åæéã¯10ç§æªæºã§ãåããŠå®è¡ããã ããªã®ã§åé¡ãããŸããã ç§ã¯ãµãŒããŒåŽã®ãŠã§ãã¢ããªããããã€ããŠããŸããã€ãŸããã»ãšãã©ã®å ŽåãäžåºŠèµ·åããŠããæ°æ¥/æ°é±éå®è¡ãããã®ã§ãæåã®æœåºã¯ç©äºã®ã¹ããŒã ã§ã¯ãããããã§ã-ãããã£ãŠããããã³ã³ãã€ã«ãããã€ã¡ãŒãžã1ã€ã«ãªããŸã§äžæåæ¢ããŸããããã¯ãäœçŸãã®DLLããã®å Žæã«ã³ããŒãããããã¯ããã«ç°¡åã«ãããã€ã§ããããã§ãã
ç§ã®å Žåã¯+1ã§ãåäžã®exeãçæãããã«ãããã«ãŒãšãã¢ããªãå®è¡ããããã®åå¥ã®ããã«ãŒããããŸãïŒããããããã®ãªãéåžžã®ã¢ã«ãã€ã³ããã«ãŒã€ã¡ãŒãžã䜿çšïŒã bulidã¹ãããã®åŸãã©ã³ã¿ã€ã ã³ã³ããã1åãããããŒãããã¬ã€ã€ãŒãdocker-commit
ããŸãã ãã®åŸããã¬ãŒã ã¯ãŒã¯ã«äŸåããå±éãšæ¯èŒããŠãããã©ãŒãã³ã¹ã®äœäžã¯èŠãããŸããã§ããã ãã³ãã«ããã®ããŒããã¡ã€ã«ã¡ã«ããºã ãå®è£
ãããŠåºè·ãããããäžéã®ãããããŒãæé ãåé€ããŸãã
@ vitek-karasãããã³ãã«ããã©ã³ã¿ã€ã ã¢ã»ãããããŒããããæ©èœã®è¿œè·¡ã«åé¡ã¯ãããŸããïŒ ã©ããªé害ãããã®ãââãç解ããããšã«èå³ããããŸãã :)
@ am11çŸåšã詳现ãªèšç»ããŸãšããŠããŸãã https://github.com/dotnet/coreclr/tree/single-exeã§è¡ããããããã¿ã€ããèŠãããšãã§ããŸãã å®éã®å®è£ ã¯ããããããã»ã©éãã¯ãããŸããïŒæããã«ãããè¯ããã¡ã¯ã¿ãªã³ã°ãªã©ã§ãããã³ã¢ãšãªãã¢ã€ãã¢ã¯æ£ããããã§ãïŒã
@Webreaper Webã¢ããªã®å Žåãããã¯ãŸã£ããåé¡ã§ã¯ãããŸãããããããã.NetCore3ãWPF/WinForméçºã«æšå¥šãããŠããã100åã®.dllã§å€±ããããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³.exeãå
±æããããšã¯ãªãã·ã§ã³ã§ã¯ãªãããã§ãããã®æ©èœã®æåã®æ®µéã«é¢é£ãããã©ã¹ãã¬ãŒã·ã§ã³ãç解ããŠãã ããã
;ïŒ
ãããŠãä»æ¥ãexeãã¯ãªãã¯ããåã«10ç§ïŒãŸãã¯3ç§ä»¥äžïŒåŸ ã€ãŠãŒã¶ãŒã¯ããŸããã èªã¿èŸŒã¿ã€ã³ãžã±ãŒã¿ãŒããªããšããäºå®ã¯ããã®æ©èœã®2çªç®ã®å€§ããªåé¡ã§ãã æ®å¿µãªãããèªã¿èŸŒã¿ã€ã³ãžã±ãŒã¿ãŒã¯.Net Core 3.1ã®äžéšã§ã¯ãªãããã§ãããã®ããããŠãŒã¶ãŒã¯èŸæ±åŒ·ãåŸ ã€å¿ èŠããããŸã...
ãã¹ã¯ãããéçºè ã¯æ¬åœã«ã¹ããŒãž2ãåŸ ã£ãŠããŸããå®éã.Net Coreã§ã®ãã¹ã¯ãããéçºã¯ãšã³ããŠãŒã¶ãŒã«ãšã£ãŠæ¬åœã«æªãçµéšã§ãããããããã¯.Net5ã®äžéšã«ãªããšæããŸãã
@RUSshyãªããããªã«å«ããªã®ïŒ æåã«èµ·åãããšãã«èµ·åãé ãããããªãå Žåã¯ãåäžãã¡ã€ã«ã®å±éã䜿çšããªãã§ãã ããã
ããã¯å«ãã§ã¯ãããŸãããããã¯å»ºèšçã§æ£çŽãªãã£ãŒãããã¯ã§ãã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ïŒãããªãŒããŒã©ã€ãã§ããªããªãŒããŒã©ã€ããªãã§ã·ãªã¢ã«åããããã€ããã·ãªã¢ã©ã€ã¶ãŒå®è£ ã®ã¢ã»ã³ããªåã«çµã³ä»ããããšãè³¢æã§ãããšå€æãããããã³ãŒãã移åã§ããªãããšãçºèŠããŸããã
åçãæããšã©ãŸãããããšã«åããé²æ©ã¯é²æ©ã§ãã
ãšããã§ããã³ãã«ãµã€ãºãšããŒãæéãåæžããããã°ã©ã å šäœãæé©åã§ããããã«ãã¢ã»ã³ããªãããŒãžããæ¹æ³ãæ¢ããŠããŸããã ç§ã¯ããã®åé¡ãå®éã«ã¯ããã察象ãšããŠããªãããšãåéããŸãã
ç·šéïŒãã®æçš¿ã¯æ確ã«ããããã«ããã€ãã®åå¿ãéããã®ã§ã ã¡ã¿ããã°ã©ãã³ã°ã¯ãã³ãŒããããŒã¿ã§ãããç§ã®ç®¡çäžã«ããèšèšæã«è¡ãããã¹ãã ãšæããŸãã
ä¿¡é Œã§ããäžå€æ¡ä»¶ãé©çšããããã«äœ¿çšããã®ã奜ããªã¿ã€ãã ã©ã³ã¿ã€ã ãªãã¬ã¯ã·ã§ã³ã¯ãã®ä¿¡é Œãå£ããŸãã
ãããã£ãŠãã©ã³ã¿ã€ã ãªãã¬ã¯ã·ã§ã³ãèšèšæã®ã¡ã¿ããã°ã©ãã³ã°ã«çœ®ãæããããšæããŸãã ã¢ãã©ã€ã¶ãŒãã¯ã€ãã¯ãã£ãã¯ã¹ããªãã¡ã¯ã¿ãªã³ã°ãªã©ã®ãŠãŒã¹ã±ãŒã¹ãšéè€ããããšã§ããã匷åã«ãªãå¯èœæ§ããããŸãã
ãã®ãšãªã¢ãžã®ãµãã¹ã¯ã©ã€ããŒã®ã¿ã°ä»ãïŒ@ swaroop-sridhar
賌èªãåžæããå Žåã¯ãdanmosemsftã«éç¥ããŠãã ããã
åäžãã¡ã€ã«æ©èœã®èšèšã¯ããã®ããã¥ã¡ã³ãã«ãããŸãïŒ https ://github.com/dotnet/designs/blob/master/accepted/2020/single-file/design.md
ãã®åé¡ã§ã®åäžãã¡ã€ã«ã¢ããªã®é²è¡ç¶æ³ã®è¿œè·¡ïŒ httpsïŒ//github.com/dotnet/runtime/issues/36590ã
ãã®å·ã«é¢ãããã£ãŒãããã¯ãšææ¡ãããããšãããããŸããã
æãåèã«ãªãã³ã¡ã³ã
ããã¯æ±ºããŠèµ·ãããªãã¯ãã§ããããªãã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ããã¶ã€ã³ã«ãã£ãŠæããããã®ã«ããŸããæãããéžæãããã¯ããªãããŠãŒã¶ãŒã«éçºè ã圌ãã®ããã«äœ¿çšããŠããæè¡ãå«ãæ¹æ³ã§ã
ããã«å€æŽãããã®ã«ããªãä»ããæ£åŒã«ãªãªãŒã¹ããã®ã§ããïŒ ãã¬ãã¥ãŒ/å®éšãšããŠããŒã¯ããå¿ èŠããããŸã
ç§ã®æèŠã§ã¯ãããã¯æéãšãªãœãŒã¹ã®ç¡é§ã§ãããAOTã³ã³ãã€ã«ãšããªãŒã·ã§ãŒãã³ã°ã«çŠç¹ãåããããã¹ãŠã®ãªãœãŒã¹ãããã«çœ®ããããã¯ã§åæ¢ããŸã