1.c#ç¨åºç¼è¯å¥½ä»¥åå
å«Frameworkï¼å®è£
ç¨åºå·¨å¤§
2.C#è¯è¨çç¼è¯ç¯å¢
c#ç¨åºç¼è¯å¥½ä»¥åå å«Frameworkï¼å®è£ ç¨åºå·¨å¤§
é¦å ä¸è½½Salamander .Net Linker软件å ã
å©ç¨Salamander .Net Linkerçæå¯è±ç¦».net frameworkç¯å¢è¿è¡çç¨åº
Linkeræ¯ä¸ä¸ªå½ä»¤è¡å·¥å ·,源码rancher 源码分析å®ä»¥å°æ们ç.netç¨åºçæå¯è±ç¦».net frameworkç¯å¢è¿è¡çç¨åº .
Linkerä¸æ¯æä¸æçè·¯å¾,å¨ç¨åºä¸ä¹ä¸è½æä¸æçæ è¯ç¬¦.
Linker æ2ç§é¨ç½²æ¹å¼-mdeployå-nativeï¼-mdeployæ¹å¼æåçèæç¯å¢å¤§æ¦MBå·¦å³ï¼è-nativeæ¹å¼åæ¯å°MSIL代ç 转æ¢ä¸ºNativeImagesï¼é å-ilæ令使ç¨ï¼æç»æååºæ¥çèæç¯å¢ä¸å°MB.
è¯æ³åå«æ¯:
-mdeployæ¹å¼ï¼linker -mdeploy -casoff æ¨çç¨åº.exe (-casoffæ¯ä¸ºäºé¿å ä¸äºbug)
-nativeæ¹å¼ï¼linker -native -il System -il System.* -il mscorlib -il accessibility æ¨çç¨åº.exe
注æï¼-nativeæ¹å¼å¿ é¡»éå è¿4个-ilï¼æææ¯æè¿äºç¨åºéä¸è½¬æ¢ä¸ºNativeImagesï¼å¦ææªéå -ilï¼åé常èæ¶ï¼èä¸æååºæ¥çæ¡æ¶å°è¿MBã
è¿ééç¨çSalamander .Net Linkeræ¯ä»ç½ä¸ä¸è½½çç ´è§£ç,ä» ä¾äº¤æµå¦ä¹ ä¹ç¨.
æ¥éª¤:
1,ç¹å»è¿è¡:setenv.batèªå¨å®ä½å°å½åLinkeræå¨çç®å½.
2,éç¨ä¸é¢æå°ç第äºç§æ¹å¼.å¨æ示符ä¸è¾å ¥:linker -native -il System -il System.* -il mscorlib -il accessibility mygamePath.exe,æ§è¡å,ç¨åºä¼å¨mygamePath.exe æ以ç®å½ä¸çæä¸ä¸ªåå«mdeployed çæ件夹.éé¢å°±æ¯çæçå¯ä»¥åç¬è¿è¡çç¨åºäº.
C#è¯è¨çç¼è¯ç¯å¢
ç´æ¥ç¨NET Frameworkèªå¸¦çcsc.exeè¿è¡ç¼è¯å°±å¯ä»¥äºï¼å ¨å½ä»¤è¡æ¹å¼
======================
C:\>csc /help |more
Microsoft (R) Visual C# ç¼è¯å¨çæ¬7.. [CLR version v1.0.]
çæææ (C) Microsoft Corp -ãä¿çæææå©ã
Visual C# ç¼è¯å¨é项
- è¾åºæ件 -
/out:<æ件> è¾åºæ件åï¼å¦ææªæå®ï¼åä»ç¬¬ä¸ä¸ªæºæ件派çï¼
/target:exe çææ§å¶å°å¯æ§è¡æ件ï¼é»è®¤ï¼ (缩å: /t:exe)
/target:winexe çæ Windows å¯æ§è¡æ件 (缩å: /t:winexe)
/target:library çæåº (缩å: /t:library)
/target:module çæè½æ·»å å°å ¶ä»ç¨åºéç模å (缩å: /t:module)
/define:<符å·å表> å®ä¹æ¡ä»¶ç¼è¯ç¬¦å· (缩å: /d)
/doc:<æ件> è¦çæç XML ææ¡£æ件
- è¾å ¥æ件 -
/recurse:<éé 符> æ ¹æ®éé 符è§èï¼å æ¬å½åç®å½ååç®å½ä¸çæææ件
/reference:<æ件å表> ä»æå®çç¨åºéæ件å¼ç¨å æ°æ® (缩å: /r)
/addmodule:<æ件å表> å°æå®ç模åé¾æ¥å°æ¤ç¨åºéä¸
- èµæº -
/winres:<æ件> æå® Win èµæºæ件 (.res)
/winicon:<æ件> 使ç¨è¯¥å¾æ è¾åº
/resource:<èµæºä¿¡æ¯> åµå ¥æå®çèµæº (缩å: /res)
/linkresource:<èµæºä¿¡æ¯>å°æå®çèµæºé¾æ¥å°æ¤ç¨åºéä¸ (缩å: /linkres)
- 代ç çæ -
/debug[+|-] ååºè°è¯ä¿¡æ¯
/debug:{ full|pdbonly} æå®è°è¯ç±»åï¼âfullâæ¯é»è®¤ç±»åï¼å¯ä»¥å°è°è¯ç¨åº
éå å°æ£
å¨è¿è¡çç¨åºï¼
/optimize[+|-] å¯ç¨ä¼å (缩å: /o)
/incremental[+|-] å¯ç¨å¢éç¼è¯ (缩å: /incr)
- é误åè¦å -
/warnaserror[+|-] å°è¦åè§ä¸ºé误
/warn: 设置è¦åç级 (0-4) (缩å: /w)
/nowarn:<è¦åå表> ç¦ç¨æå®çè¦åä¿¡æ¯
/reference:<æ件å表> ä»æå®çç¨åºéæ件å¼ç¨å æ°æ® (缩å: /r)
/addmodule:<æ件å表> å°æå®ç模åé¾æ¥å°æ¤ç¨åºéä¸
- èµæº -
/winres:<æ件> æå® Win èµæºæ件 (.res)
/winicon:<æ件> 使ç¨è¯¥å¾æ è¾åº
/resource:<èµæºä¿¡æ¯> åµå ¥æå®çèµæº (缩å: /res)
/linkresource:<èµæºä¿¡æ¯>å°æå®çèµæºé¾æ¥å°æ¤ç¨åºéä¸ (缩å: /linkres)
- 代ç çæ -
/debug[+|-] ååºè°è¯ä¿¡æ¯
/debug:{ full|pdbonly} æå®è°è¯ç±»åï¼âfullâæ¯é»è®¤ç±»åï¼å¯ä»¥å°è°è¯ç¨åº
éå å°æ£
å¨è¿è¡çç¨åºï¼
/optimize[+|-] å¯ç¨ä¼å (缩å: /o)
/incremental[+|-] å¯ç¨å¢éç¼è¯ (缩å: /incr)
- é误åè¦å -
/warnaserror[+|-] å°è¦åè§ä¸ºé误
/warn: 设置è¦åç级 (0-4) (缩å: /w)
/nowarn:<è¦åå表> ç¦ç¨æå®çè¦åä¿¡æ¯
- è¯è¨ -
/checked[+|-] çæ溢åºæ£æ¥
/unsafe[+|-] å 许âä¸å®å ¨â代ç
- æ项 -
@<æ件> 读åååºæ件以è·å¾æ´å¤é项
/help æ¾ç¤ºæ¤ç¨æ³ä¿¡æ¯ (缩å: /?)
/nologo åæ¶ç¼è¯å¨çæä¿¡æ¯
/noconfig ä¸è¦èªå¨å å« CSC.RSP æ件
- é«çº§ -
/baseaddress:<å°å> è¦çæçåºçåºå
/bugreport:<æ件> å建ä¸ä¸ªâé误æ¥åâæ件
/codepage: æå®æå¼æºæ件æ¶è¦ä½¿ç¨ç代ç 页
/utf8output UTF-8 ç¼ç çè¾åºç¼è¯å¨æ¶æ¯
/main:<ç±»å> æå®å å«å ¥å£ç¹çç±»åï¼å¿½ç¥ææå ¶ä»å¯è½çå ¥å£ç¹ï¼
(缩å:
/m)
/fullpaths ç¼è¯å¨çæå®å ¨éå®è·¯å¾
/filealign: æå®ç¨äºè¾åºæ件èç对é½æ¹å¼
/nostdlib[+|-] ä¸å¼ç¨æ ååº (mscorlib.dll)
/lib:<æ件å表> æå®è¦å¨å ¶ä¸æç´¢å¼ç¨çéå ç®å½