ÐÂÊéÍƽ飺¡¶ÓïÒåÍø¼¼ÊõÌåϵ¡·
×÷ÕߣºöÄÔ£ÖÒ£¬ºú࣬³Ì¹¨
   XMLÂÛ̳     W3CHINA.ORGÌÖÂÛÇø     ¼ÆËã»ú¿ÆѧÂÛ̳     SOAChinaÂÛ̳     Blog     ¿ª·Å·­Òë¼Æ»®     ÐÂÀË΢²©  
 
  • Ê×Ò³
  • µÇ¼
  • ×¢²á
  • Èí¼þÏÂÔØ
  • ×ÊÁÏÏÂÔØ
  • ºËÐijÉÔ±
  • °ïÖú
  •   Add to Google

    >> ±¾°æÌÖÂÛ.NET,C#,ASP,VB¼¼Êõ
    [·µ»Ø] ÖÐÎÄXMLÂÛ̳ - רҵµÄXML¼¼ÊõÌÖÂÛÇø ¡ú ¼ÆËã»ú¼¼ÊõÓëÓ¦Óà ¡ú ¡º Dot NET,C#,ASP,VB ¡» ¡ú [תÌû]ʹÓàC# 2.0 ÃüÁîÐбàÒëÆ÷ ¡ó²é¿´ÐÂÌû ¡ó Óû§ÁÐ±í ¡ó

      ·¢±íÒ»¸öÐÂÖ÷Ìâ  ·¢±íÒ»¸öÐÂͶƱ  »Ø¸´Ö÷Ìâ  (¶©Ôı¾°æ) ÄúÊDZ¾ÌûµÄµÚ 3975 ¸öÔĶÁÕߣ £ ä¯ÀÀÉÏһƪÖ÷Ìâ  Ë¢Ð±¾Ö÷Ìâ   Ê÷ÐÎÏÔʾÌù×Ó¡¡ä¯ÀÀÏÂһƪÖ÷Ìâ
     * Ìù×ÓÖ÷Ì⣺ [תÌû]ʹÓàC# 2.0 ÃüÁîÐбàÒëÆ÷ ¾Ù±¨  ´òÓ¡  ÍƼö  IEÊղؼР
       ±¾Ö÷ÌâÀà±ð:     
     Qr ˧¸çÓ´£¬ÀëÏߣ¬ÓÐÈËÕÒÎÒÂð£¿
      
      
      ÍþÍû£º9
      µÈ¼¶£º²©Ê¿¶þÄ꼶(°æÖ÷)
      ÎÄÕ£º4392
      »ý·Ö£º29981
      ÃÅÅÉ£ºXML.ORG.CN
      ×¢²á£º2004/5/15

    ÐÕÃû£º(ÎÞȨ²é¿´)
    ³ÇÊУº(ÎÞȨ²é¿´)
    ԺУ£º(ÎÞȨ²é¿´)
    ¸øQr·¢ËÍÒ»¸ö¶ÌÏûÏ¢ °ÑQr¼ÓÈëºÃÓÑ ²é¿´QrµÄ¸öÈË×ÊÁÏ ËÑË÷QrÔÚ¡º Dot NET,C#,ASP,VB ¡»µÄËùÓÐÌù×Ó ·ÃÎÊQrµÄÖ÷Ò³ ÒýÓûظ´Õâ¸öÌù×Ó »Ø¸´Õâ¸öÌù×Ó ²é¿´QrµÄ²©¿ÍÂ¥Ö÷
    ·¢ÌùÐÄÇé [תÌû]ʹÓàC# 2.0 ÃüÁîÐбàÒëÆ÷

    ·¢²¼ÈÕÆÚ£º 12/22/2004 | ¸üÐÂÈÕÆÚ£º 12/22/2004
    Andrew W. Troelsen£¬Microsoft MVP

    Intertech Training

    ÕªÒª£º±¾ÎÄ·ÖÎöÁËʹÓà C# ÃüÁîÐбàÒëÆ÷ csc.exe Éú³ÉÓ¦ÓóÌÐòµÄ¹ý³Ì¡£Í¬Ê±£¬»¹½«Ïò¶ÁÕß½éÉܺܶàΪ C# 2.0 ¶ÀÓеıàÒëÆ÷Ñ¡ÏÀýÈ磬extended/reference ±êÖ¾ºÍÇ¿Ãû³ÆÖ§³Ö¡£ÔĶÁÍê±¾ÎĵÄÄÚÈÝÖ®ºó£¬Äú½«Äܹ»ÇáËɵØÔÚûÓÐÏòµ¼µÄ»·¾³ÖÐÉú³Éµ¥Îļþ³ÌÐò¼¯ºÍ¶àÎļþ³ÌÐò¼¯¡£

    ÊÊÓÃÓÚ£º

    Microsoft Visual C# 2.0

    ×¢ ±¾Îļٶ¨ÄúÊìϤ C# ±à³ÌÓïÑÔºÍ .NET Framework µÄ½á¹¹¡£ÌåÑéÒ»ÏÂʹÓÃÃüÁîÐй¤¾ßµÄ¸Ð¾õ»¹½«Ö¤Ã÷ºÜÓаïÖú¡£

    ÏÂÔØ CSCSample.msi Îļþ¡£

    ±¾Ò³ÄÚÈÝ
    scsc.exe ´øÀ´µÄÀÖȤ
    C# ±àÒëÆ÷Ñ¡Ïî¸ÅÀÀ
    ÅäÖû·¾³±äÁ¿
    ÃüÁîÐлù´¡ÖªÊ¶
    ÓÃÓÚÖ¸¶¨ÊäÈëºÍ¿ØÖÆÊä³öµÄÑ¡Ïî
    ±àÒë .NET ´úÂë¿â
    ʹÓà C# ÏìÓ¦Îļþ
    ʹÓà /reference ÒýÓÃÍⲿ³ÌÐò¼¯
    Àí½â C# 2.0 ÒýÓñðÃû
    ʹÓà /addmodule Éú³É¶àÎļþ³ÌÐò¼¯
    ´´½¨ Windows ´°ÌåÓ¦ÓóÌÐò
    ͨ¹ý csc.exe ʹÓÃ×ÊÔ´
    ʹÓà /define ¶¨ÒåÔ¤´¦ÀíÆ÷·ûºÅ
    csc.exe µÄÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ïî
    ÔÓÏî
    С½á

    scsc.exe ´øÀ´µÄÀÖȤ
    ¼¸ºõûÓÐÈË»á·ñÈϼ¯³É¿ª·¢»·¾³ (IDE)£¨ÀýÈ磬Visual Studio 2005 ºÍ Visual C# Express 2005£©ËùÌṩµÄÄÜʹ±à³Ì¹¤×÷±äµÃÏ൱¼òµ¥µÄÖî¶à¹¦ÄÜ¡£µ«ÊÇ£¬Êµ¼ÊÉÏ IDE ×Ô¼ºÍ¨³£²»ÄÜÌṩ¶Ô»ù´¡±àÒëÆ÷µÄËùÓз½ÃæµÄ·ÃÎÊ¡£ÀýÈ磬Visual Studio 2005 ²»Ö§³ÖÉú³É¶àÎļþ³ÌÐò¼¯¡£

    ´ËÍ⣬Á˽âÔÚÃüÁîÐбàÒë´úÂëµÄ¹ý³Ì£¬¶ÔÓÚ¾ßÓÐÒÔÏÂÌØÕ÷µÄÓû§¿ÉÄÜÓÐÓãº

    • Æ«°®×î¼òµ¥µÄÉú³É .NET Framework Ó¦ÓóÌÐòµÄ·½·¨¡£

    • Ï£Íû½Ò¿ª IDE ´¦ÀíÔ´´úÂëÎļþµÄ·½·¨µÄÃØÃÜ¡£

    • Ï£ÍûÀûÓà .NET Éú³ÉʵÓù¤¾ß£¬ÀýÈ磬nant »ò msbuild¡£

    • ûÓм¯³É¿ª·¢»·¾³£¬ÀýÈ磬Visual Studio£¨µ«Êµ¼ÊÉϾßÓÐÃâ·ÑÌṩµÄ .NET Framework SDK£©¡£

    • ÕýÔÚ»ùÓÚ UnixµÄϵͳ£¨ÔÚ¸ÃϵͳÖУ¬ÃüÁîÐÐÊDZØÐëʹÓõŤ¾ß£©ÉÏʹÓà .NET Framework£¬²¢ÇÒÏ£Íû¸üºÃµØÁ˽â Mono ºÍ/»ò Portable .NET ECMA ¼æÈÝ C# ±àÒëÆ÷¡£

    • ÕýÔÚÑо¿µ±Ç°Î´¼¯³Éµ½ Visual Studio Öеı¸Ñ¡ .NET ±à³ÌÓïÑÔ¡£

    • Ö»ÊÇÏ£ÍûÀ©Õ¹ËûÃÇµÄ C# ±à³ÌÓïÑÔ֪ʶ¡£


    Èç¹ûÄúÊôÓÚÉÏÃæËùÊöµÄÕâЩÓû§£¬ÄÇô¾ÍÖÒʵÓÚ×Ô¼ºµÄÑ¡Ôñ²¢¼ÌÐø¶ÁÏÂÈ¥°É¡£

    ·µ»ØÒ³Ê×
    C# ±àÒëÆ÷Ñ¡Ïî¸ÅÀÀ
    C# ±àÒëÆ÷ csc.exe ÌṩÁË´óÁ¿ÓÃÓÚ¶Ô´´½¨ .NET ³ÌÐò¼¯µÄ·½Ê½½øÐпØÖƵÄÑ¡Ïî¡£Õ¾ÔÚÒ»¸ö½Ï¸ß²ã´ÎÀ´¿´£¬ÃüÁîÐÐÑ¡ÏîÊôÓÚÏÂÁа˸öÀà±ðÖ®Ò»£¨±í 1£©¡£

    ±í 1. csc.exe ÌṩµÄ±ê¼ÇµÄÀà±ð

    C# ±àÒëÆ÷Àà±ð ¶¨Òå
    Êä³öÎļþ
    ÓÃÓÚ¿ØÖÆËùÉú³ÉµÄ³ÌÐò¼¯µÄ¸ñʽ¡¢¿ÉÑ¡µÄ XML ÎĵµÎļþºÍÇ¿Ãû³ÆÐÅÏ¢µÄÑ¡Ïî¡£

    ÊäÈëÎļþ
    ʹÓû§¿ÉÒÔÖ¸¶¨ÊäÈëÎļþºÍÒýÓõijÌÐò¼¯µÄÑ¡Ïî¡£

    ×ÊÔ´
    ÓÃÓÚ½«ÈκαØÐèµÄ×ÊÔ´£¨ÀýÈ磬ͼ±êºÍ×Ö·û´®±í£©Ç¶Èëµ½³ÌÐò¼¯ÖеÄÑ¡Ïî¡£

    ´úÂëÉú³É
    ÕâЩѡÏî¿ØÖƵ÷ÊÔ·ûºÅµÄÉú³É¡£

    ´íÎóºÍ¾¯¸æ
    ¿ØÖƱàÒëÆ÷´¦ÀíÔ´´úÂë´íÎó/¾¯¸æµÄ·½Ê½¡£

    ÓïÑÔ
    ÆôÓÃ/½ûÓà C# ÓïÑÔ¹¦ÄÜ£¨ÀýÈ磬²»°²È«´úÂ룩ÒÔ¼°Ìõ¼þ±àÒë·ûºÅµÄ¶¨Òå¡£

    ÔÓÏî
    ¸ÃÀà±ðµÄ×îÓÐȤµÄÑ¡ÏîʹÄú¿ÉÒÔÖ¸¶¨ csc.exe ÏìÓ¦Îļþ¡£

    ¸ß¼¶
    ¸ÃÀà±ðÖ¸¶¨Ò»Ð©¸ü¼ÓÉî°Â²¢ÇÒͨ³£²»Ì«ÖØÒªµÄ±àÒëÆ÷Ñ¡Ïî¡£


    ×¢ 1.0 ºÍ 1.1 °æ±¾µÄ C# ±àÒëÆ÷ÖдæÔÚµÄ /incremental ±êÖ¾ÏÖÔÚÒѹýʱ¡£

    ÔÚÔĶÁ±¾ÎĵĹý³ÌÖУ¬Äú½«Á˽âÿ¸ö±àÒëÆ÷Àà±ðÖдæÔڵĺËÐÄ ±êÖ¾£¨×îÖØÒªµÄ´ÊÊǺËÐÄ£©¡£¶ÔÓÚ´ó¶àÊý¿ª·¢·½°¸£¬¿ÉÒÔ°²È«µØºöÂÔ C# ±àÒëÆ÷µÄºÜ¶à¸ß¼¶Ñ¡Ïî¡£Èç¹ûÄúÐèÒªÓйر¾ÎÄδÓèÌÖÂÛµÄ csc.exe ¹¦ÄܵÄÏêϸÐÅÏ¢£¬Ç뾡¹Ü·ÅÐÄ£¬Äú¿ÉÒÔ²ÎÔÄ Microsoft Visual Studio 2005 Îĵµ°ïÖúϵͳ£¨Ö»Ðë´Ó¡°Search¡±Ñ¡ÏÖÐËÑË÷¡°csc.exe¡±²¢ÉîÈë²éÔÄ£©¡£

    ×¢ MSDN ÎĵµÒ²»á¶ÔÄúÒ²ºÜËù°ïÖú£¬ÒòΪËüÃèÊöÁËÈçºÎÔÚ Visual Studio£¨Èç¹û¿ÉÓã©ÄÚ²¿ÉèÖà csc.exe µÄÌض¨Ñ¡Ïî¡£

    ·µ»ØÒ³Ê×
    ÅäÖû·¾³±äÁ¿
    ÔÚʹÓÃÈκΠ.NET SDK ÃüÁîÐй¤¾ß£¨°üÀ¨ C# ±àÒëÆ÷£©Ö®Ç°£¬ÐèÒªÅäÖÿª·¢¼ÆËã»úÒÔʶ±ðËüÃǵĴæÔÚ¡£×î¼òµ¥µÄ·½·¨ÊÇʹÓà Start | All Programs | Visual Studio 2005 | Visual Studio Tools ²Ëµ¥Ñ¡ÏÆô¶¯Ô¤ÅäÖÃµÄ Visual Studio ÃüÁîÌáʾ¡£ÕâÒ»Ìض¨µÄ¿ØÖÆ̨Äܹ»×Ô¶¯³õʼ»¯±ØÒªµÄ»·¾³±äÁ¿£¬¶øÎÞÐëÄúÖ´ÐÐÈκβÙ×÷¡££¨Visual Studio .NET 2003 Óû§ÐèÒªÆô¶¯ËûÃǸ÷×ÔµÄÃüÁîÌáʾ£©¡£

    ×¢ Èç¹ûÄúûÓÐ Visual Studio£¬µ«ÊÇÒѾ­°²×°ÁË .NET Framework SDK£¬Ôò¿ÉÒÔ´Ó Start | All Programs | Microsoft .NET Framework SDK 2.0 ²Ëµ¥Ñ¡ÏîÆô¶¯Ô¤ÅäÖõÄÃüÁîÌáʾ¡£

    Èç¹ûÄúÏ£Íû´ÓÈÎÒâµÄ ÃüÁîÌáʾʹÓà .NET ÃüÁîÐй¤¾ß£¬ÔòÐèÒªÊÖ¶¯¸üмÆËã»úµÄ Path ±äÁ¿¡£×ö·¨ÊÇ£¬ÇëÓÒ¼üµ¥»÷×ÀÃæÉ쵀 My Computer ͼ±ê²¢Ñ¡Ôñ Properties ²Ëµ¥Ñ¡Ïî¡£´Ó³öÏֵĶԻ°¿òÖУ¬µ¥»÷λÓÚ Advanced Ñ¡ÏÏÂÃæµÄ Environment Variables °´Å¥¡£´Ó³öÏֵĶԻ°¿òÖУ¬ÔÚ System ±äÁ¿Áбí¿òÖеĵ±Ç° Path ±äÁ¿µÄ½áβÌí¼ÓÒÔÏÂĿ¼Çåµ¥£¨Çë×¢Ò⣬±ØÐëÓ÷ֺŷָô¸÷¸öÌõÄ¿£©£º

    C:\Windows\Microsoft.NET\Framework\v2.0.40607
    C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

    ×¢ ÉÏÃæµÄÁбíÖ¸ÏòÎҵĵ±Ç° .NET 2.0 ²âÊÔ°æµÄ·¾¶¡£ÄúµÄ·¾¶¿ÉÄÜÒò Visual Studio ºÍ/»ò .NET SDK µÄ°²×°ºÍ°æ±¾µÄ²»Í¬¶øÂÔÓв»Í¬£¬Òò´ËÇëÈ·±£Ö´ÐÐÍêÕûÐÔ¼ì²é¡£

    ÔÚ¸üРPath ±äÁ¿Ö®ºó£¬ÇëÁ¢¼´¹Ø±ÕËùÓжԻ°¿òºÍµ±Ç°´ò¿ªµÄÈκΠConsole ´°¿Ú£¬ÒÔ±ãÌá½»ÉèÖá£ÄúÏÖÔÚÓ¦µ±Äܹ»´ÓÈκÎÃüÁîÌáʾִÐÐ csc.exe ºÍÆäËû .NET ¹¤¾ßÁË¡£Òª½øÐвâÊÔ£¬ÇëÊäÈëÒÔÏÂÃüÁ

    csc -?
    ildasm -?

    Èç¹ûÄú¿´µ½ÓдóÁ¿ÐÅÏ¢ÏÔʾ³öÀ´£¬ÄÇôÄú¾Í¿ÉÒÔ¼ÌÐøÁË¡£

    ·µ»ØÒ³Ê×
    ÃüÁîÐлù´¡ÖªÊ¶
    ÒѾ­Äܹ»ÊìÁ·µØÔÚÃüÁîÐй¤×÷µÄÓû§ÔÚʹÓà csc.exe ʱ²»»áÓÐÈκÎÎÊÌ⣬Òò¶ø¿ÉÒÔÌøµ½ÏÂÒ»½Ú¡£µ«ÊÇ£¬Èç¹ûÄúʹÓÃÃüÁîÐеĴÎÊýºÜÓÐÏÞ£¬ÄÇôÇëÈÃÎÒ˵Ã÷һЩ»ù±¾µÄÏêϸÐÅÏ¢£¬ÒÔ±ã½øÐбØÒªµÄ×¼±¸¡£

    Ê×ÏÈ£¬¿ÉÒÔʹÓ÷´Ð±¸Ü»òµ¥¸ö¶Ì»®ÏßÖ¸¶¨ csc.exe µÄÑ¡Ïî¡£Æä´Î£¬ÔÚ / »ò - ÒÔ¼°ËæºóµÄ±êÖ¾Ö®¼ä¾ßÓжîÍâµÄ¿Õ¸ñÊÇ·Ç·¨ µÄ¡£Òò´Ë£¬¡°-help¡±ÊÇÍêÈ«ÕýÈ·£¬¶ø¡°- help¡±¾ÍÐв»Í¨ÁË¡£ÎªÁ˼ÓÒÔ˵Ã÷£¬ÈÃÎÒÃÇʹÓà help ±êÖ¾¼ì²éÍêÕûµÄÃüÁîÐÐÑ¡Ï£º

    csc -help
    csc /help

    Èç¹ûÒ»ÇÐÕý³££¬ÔòÄúÓ¦µ±¿´µ½ËùÓпÉÄܵıêÖ¾£¬Èçͼ 1 Ëùʾ¡£

    ͼ 1. °ïÖú±êÖ¾


    ºÜ¶àÑ¡ÏÌṩÁ˼òд±íʾ·¨£¬ÒÔ±ãΪÄú½ÚʡһЩ¼üÈëʱ¼ä¡£¼ÙÉè help ±êÖ¾µÄ¼òд±íʾ·¨ÊÇ ?£¬ÔòÄú¿ÉÒÔÈçÏÂËùʾÁгö csc.exe µÄÑ¡Ï

    csc -?
    csc /?

    ºÜ¶àÑ¡ÏÐèÒª¸½¼ÓµÄÐÞÊΣ¬ÀýÈ磬Ŀ¼·¾¶ºÍÎļþÃû¡£ÕâÖÖÐÔÖʵıê־ʹÓÃðºÅ½«±êÖ¾ÓëËüµÄÐÞÊηָô¿ªÀ´¡£ÀýÈ磬/reference Ñ¡ÏîÒªÇó½« .NET ³ÌÐò¼¯µÄÃû³Æ°üÀ¨ÔÚ³ÌÐò¼¯Çåµ¥ÖУº

    csc /reference:MyLibrary.dll ...

    ÆäËû±êÖ¾ÔÚÐÔÖÊÉÏÊǶþÔª µÄ£¬ÒòΪËüÃÇ»òÕß±»ÆôÓà (+)£¬»òÕß±»½ûÓà (-)¡£¶þÔª±êÖ¾×ÜÊÇĬÈÏΪËüÃǵĽûÓÃ״̬£¬Òò´ËÄúͨ³£Ö»ÐèҪʹÓüӺűê¼Ç¡£ÀýÈ磬Ҫ½«ËùÓбàÒ뾯¸æ¶¼ÊÓΪ´íÎ󣬿ÉÒÔÆôÓà warnaserror ±êÖ¾£º

    csc /warnaserror+ ...

    ±êÖ¾µÄ˳ÐòÎ޹ؽôÒª£¬µ«ÊÇÔÚÖ¸¶¨ÊäÈëÎļþ¼¯ºÏ֮ǰ£¬±ØÐëÁгöËùÓбêÖ¾µÄ¼¯ºÏ¡£ÁíÍâÖµµÃ˵Ã÷µÄÊÇ£¬ÔÚÐÞÊκÍËüµÄ¹ØÁªÊý¾ÝÖ®¼ä¾ßÓжîÍâµÄ¿Õ¸ñÊÇ·Ç·¨ µÄ¡£ÀýÈ磬ÇëʹÓà /reference:MyLibrary.dll£¬¶ø²»ÒªÊ¹Óà /reference:MyLibrary.dll¡£

    ·µ»ØÒ³Ê×
    ÓÃÓÚÖ¸¶¨ÊäÈëºÍ¿ØÖÆÊä³öµÄÑ¡Ïî
    ÎÒÃǽ«Òª·ÖÎöµÄµÚÒ»×éÃüÁîÐÐÑ¡ÏîÓÃÓÚÖ¸¶¨±àÒëÆ÷ÊäÈ루±í 2£©ºÍ¿ØÖƵõ½µÄÊä³ö£¨±í 3£©¡£Çë×¢Ò⣬ÏÂÃæµÄ±í»¹±ê¼ÇÁËÌض¨ÓÚ C# 2.0 µÄÑ¡ÏîºÍÈκοÉÓõļòд±íʾ·¨¡£

    ±í 2. csc.exe µÄÒÔÊäÈëΪÖÐÐĵÄÑ¡Ïî

    ÊäÈë±êÖ¾ ¶¨Òå ÊÇ·ñÌض¨ÓÚ C# 2.0£¿
    /recurse
    ֪ͨ csc.exe ±àÒëλÓÚÏîÄ¿µÄ×ÓĿ¼½á¹¹ÖÐµÄ C# Îļþ¡£¸Ã±êÖ¾Ö§³ÖͨÅä·ûÓï·¨¡£
    ·ñ

    /reference (/r)
    ÓÃÓÚÖ¸¶¨ÒªÔÚµ±Ç°±àÒëÖÐÒýÓõÄÍⲿ³ÌÐò¼¯¡£
    ·ñ£¬µ«ÊÇ 2.0 ±àÒëÆ÷ÌṩÁ˱ðÃû±äÌå¡£

    /addmodule
    ÓÃÓÚÖ¸¶¨Òª°üÀ¨ÔÚ¶àÎļþ³ÌÐò¼¯ÖеÄÄ£¿é¡£
    ·ñ


    ±í 3. csc.exe µÄÒÔÊä³öΪÖÐÐĵÄÑ¡Ïî

    Êä³ö±êÖ¾ ¶¨Òå ÊÇ·ñÌض¨ÓÚ C# 2.0£¿
    /out
    Ö¸¶¨ÒªÉú³ÉµÄ³ÌÐò¼¯µÄÃû³Æ¡£Èç¹ûÊ¡ÂԸñêÖ¾£¬ÔòÊä³öÎļþµÄÃû³Æ»ùÓÚ³õʼÊäÈëÎļþµÄÃû³Æ£¨¶ÔÓÚ *.dll ³ÌÐò¼¯¶øÑÔ£©»ò¶¨Òå Main() ·½·¨µÄÀàµÄÃû³Æ£¨¶ÔÓÚ *.exe ³ÌÐò¼¯¶øÑÔ£©¡£
    ·ñ

    /target (/t)
    Ö¸¶¨Òª´´½¨µÄ³ÌÐò¼¯µÄÎļþ¸ñʽ¡£
    ·ñ

    /doc
    ÓÃÓÚÉú³É XML ÎĵµÎļþ¡£
    ·ñ

    /delaysign
    ʹÄú¿ÉÒÔʹÓÃÇ¿Ãû³ÆµÄÑÓ³ÙÇ©ÃûÉú³É³ÌÐò¼¯¡£
    ÊÇ

    /keyfile
    Ö¸¶¨ÓÃÓÚ¶Ô³ÌÐò¼¯½øÐÐÇ¿ÃüÃûµÄ *.snk ÎļþµÄ·¾¶¡£
    ÊÇ

    /keycontainer
    Ö¸¶¨°üº¬ *.snk ÎļþµÄÈÝÆ÷µÄÃû³Æ¡£
    ÊÇ

    /platform
    Ö¸¶¨±ØÐë´æÔÚÒÔ±ã³ÐÔسÌÐò¼¯µÄ CPU£¨x86¡¢Itanium¡¢x64 »ò anycpu£©¡£Ä¬ÈÏΪ anycpu¡£
    ÊÇ


    Ò²ÐíÓÃ;×î¶àµÄÊäÈë/Êä³öÑ¡ÏîÊÇ /target¡£¸Ã±ê־ͨ¹ýʹÓø½¼ÓµÄÐÞÊΣ¨±í 4£©¸æËß±àÒëÆ÷Äú¶ÔÉú³ÉÄĸöÀàÐ굀 .NET ³ÌÐò¼¯¸ÐÐËȤ¡£

    ±í 4. /target ±êÖ¾µÄ±äÌå

    Ä¿±êÐÞÊÎ ¶¨Òå
    /target:exe
    ´´½¨»ùÓÚ¿ØÖÆ̨µÄ³ÌÐò¼¯¡£Èç¹ûδָ¶¨ /target Ñ¡ÏÔòÕâÊÇĬÈÏÑ¡Ïî¡£

    /target:winexe
    ´´½¨»ùÓÚ Windows ´°ÌåµÄ¿ÉÖ´ÐгÌÐò¼¯¡£¾¡¹ÜÄú¿ÉÒÔʹÓà /target:exe ´´½¨ Windows ´°ÌåÓ¦ÓóÌÐò£¬µ«¿ØÖÆ̨´°¿Ú½«ÔÚÖ÷´°ÌåµÄºǫ́ÒþÏÖ¡£

    /target:library
    ÓÃÓÚÉú³É .NET ´úÂë¿â (*.dll)¡£

    /target:module
    ´´½¨½«³ÉΪ¶àÎļþ³ÌÐò¼¯µÄÒ»²¿·ÖµÄÄ£¿é¡£


    ·µ»ØÒ³Ê×
    ±àÒë .NET ´úÂë¿â
    ΪÁË˵Ã÷ʹÓà csc.exe µÄÊäÈë/Êä³öÑ¡ÏîµÄ¹ý³Ì£¬ÎÒÃǽ«´´½¨Ò»¸öÇ¿ÃüÃûµÄµ¥Îļþ³ÌÐò¼¯ (MyCodeLibrary.dll)£¬ÒÔ¶¨ÒåÒ»¸öÃûΪ SimpleType µÄÀàÀàÐÍ¡£ÎªÁËչʾ /doc Ñ¡ÏîµÄ×÷Óã¬ÎÒÃÇ»¹½«Éú³ÉÒ»¸ö XML ÎĵµÎļþ¡£

    Ê×ÏÈ£¬ÇëÔÚÇý¶¯Æ÷ C ÉÏ´´½¨Ò»¸öÃûΪ MyCSharpCode µÄÐÂÎļþ¼Ð¡£ÔÚ¸ÃÎļþ¼ÐÖУ¬´´½¨Ò»¸öÃûΪ MyCodeLibrary µÄ×ÓĿ¼¡£Ê¹ÓÃÄúÑ¡ÔñµÄÎı¾±à¼­Æ÷£¨notepad.exe ¾ÍÍêÈ«ºÏºõÐèÒª£©ÊäÈëÒÔÏ´úÂ룬²¢½«¸ÃÎļþ±£´æΪ¸Õ¸Õ´´½¨µÄ C:\MyCSharpCode\MyCodeLibrary Ŀ¼ÖÐµÄ simpleType.cs¡£

    // simpleType.cs
    using System;

    namespace MyCodeLibrary
    {
    /// <summary>
    /// Simple utility type.
    /// </summary>
    public class SimpleType
    {
    /// <summary>
    /// Print out select environment information
    /// </summary>
    public static void DisplayEnvironment()
    {
    Console.WriteLine("Location of this program: {0}",
    Environment.CurrentDirectory);
    Console.WriteLine("Name of machine: {0}",
    Environment.MachineName);
    Console.WriteLine("OS of machine: {0}",
    Environment.OSVersion);
    Console.WriteLine("Version of .NET: {0}",
    Environment.Version);
    }
    }
    }

    ÏÖÔÚ£¬´ò¿ªÃüÁîÌáʾ£¬²¢ÇÒʹÓà cd£¨¸ü¸ÄĿ¼£©ÃüÁîµ¼º½µ½ simpleType.cs ÎļþµÄλÖà (C:\MyCSharpCode\MyCodeLibrary)£º

    cd MyCSharpCode\MyCodeLibrary

    »ò

    cd C:\MyCSharpCode\MyCodeLibrary

    Òª½«¸ÃÔ´´úÂëÎļþ±àÒëΪÃûΪ MyCodeLibrary.dll µÄµ¥Îļþ³ÌÐò¼¯£¬ÇëÖ¸¶¨ÒÔÏÂÃüÁ£º

    csc /t:library /out:MyCodeLibrary.dll simpleType.cs

    ´Ëʱ£¬ÄúÓ¦µ±ÔÚÓ¦ÓóÌÐòĿ¼ÖоßÓÐÒ»¸öÈ«Ð嵀 .NET ´úÂë¿â£¬Èçͼ 2 Ëùʾ¡£

    ͼ 2. Ð嵀 .NET ´úÂë¿â


    µ±ÔÚÃüÁîÐбàÒë¶à¸ö C# Îļþʱ£¬¿ÉÒÔ·Ö±ðÁгöÿ¸öÎļþ - Èç¹ûÄúÏ£Íû±àÒë°üº¬ÔÚµ¥¸öĿ¼ÖÐµÄ C# ÎļþµÄ×Ó¼¯£¬ÔòÕâ¿ÉÄÜÓÐËù°ïÖú¡£¼ÙÉèÎÒÃÇÒѾ­´´½¨ÁËÁíÍâÒ»¸öÃûΪ asmInfo.cs µÄ C# ´úÂëÎļþ£¨±£´æÔÚͬһĿ¼ÖУ©£¬Ëü¶¨ÒåÁËÏÂÁгÌÐò¼¯¼¶±ðÊôÐÔÒÔÃèÊöÎÒÃǵĴúÂë¿â£º

    // asmInfo.cs
    using System;
    using System.Reflection;

    // A few assembly level attributes.
    [assembly:AssemblyVersion("1.0.0.0")]
    [assembly:AssemblyDescription("Just an example library")]
    [assembly:AssemblyCompany("Intertech Training")]

    ÒªÖ»±àÒë simpleType.cs ºÍ asmInfo.cs Îļþ£¬Çë¼üÈ룺

    csc /t:library /out:MyCodeLibrary.dll simpleType.cs asmInfo.cs

    ÕýÈçÄú¿ÉÄÜÏ£ÍûµÄÄÇÑù£¬csc.exe Ö§³ÖͨÅä·û±íʾ·¨¡£Òò¶ø£¬Òª±àÒëµ¥¸öĿ¼ÖеÄËùÓÐÎļþ£¬Çë½ö½« *.cs Ö¸¶¨ÎªÊäÈëÑ¡Ï

    csc /t:library /out:MyCodeLibrary.dll *.cs

    ʹÓà /recurse Ö¸¶¨×ÓĿ¼

    ÔÚ´´½¨Ó¦ÓóÌÐòʱ£¬Äú¿Ï¶¨Ï²»¶ÎªÄúµÄÏîÄ¿´´½¨Âß¼­Ä¿Â¼½á¹¹¡£Äú¿ÉÒÔͨ¹ý½«´úÂëÎļþ·Åµ½Ìض¨µÄ×ÓĿ¼£¨\Core¡¢\AsmInfo¡¢\MenuSystem µÈµÈ£©ÖжÔËüÃǽøÐÐ×éÖ¯£¬¶ø²»Êǽ«¶à´ï 25 ¸öÎļþת´¢µ½ÃûΪ myApp µÄµ¥¸öĿ¼ÖС£¾¡¹ÜÎÒÃǵĵ±Ç°Ê¾ÀýÖ»°üº¬¼¸¸öÎļþ£¬µ«¼ÙÉèÄú½« AsmInfo.cs Îļþ·Åµ½Ò»¸öÃûΪ \AsmInfo µÄеÄ×ÓĿ¼£¨Èçͼ 3 Ëùʾ£©ÖС£

    ͼ 3. Ð嵀 \AsmInfo ×ÓĿ¼


    Òª¸æËß C# ±àÒëÆ÷±àÒëλÓÚ¸ùĿ¼ÒÔ¼° AsmInfo ×ÓĿ¼ÖеÄËùÓÐ C# Îļþ£¬ÇëʹÓà /recurse Ñ¡Ï

    csc /t:library /out:MyCodeLibrary.dll /recurse:AsmInfo /doc:myDoc.xml *.cs

    ÕâÀ/recurse ÒѾ­ÓÃÌض¨×ÓĿ¼µÄÃû³ÆÏÞ¶¨¡£ÒªÖ¸¶¨¶à¸ö×ÓĿ¼£¬ÎÒÃÇ¿ÉÒÔÔÙ´ÎʹÓÃͨÅä·ûÓï·¨¡£Èç¹ûÎÒÃÇÒª½« simpleType.cs ÎļþÒƵ½Ò»¸öеÄÃûΪ Core µÄ×ÓĿ¼ÖУ¬ÔòÎÒÃÇ¿ÉÒÔÓÃÒÔÏÂÃüÁ±àÒëËùÓÐ×ÓĿ¼ÖеÄËùÓÐ C# Îļþ£º

    csc /t:library /out:MyCodeLibrary.dll /recurse:*.cs

    ÔÚÈκÎÒ»ÖÖÇé¿öÏ£¬Êä³ö¶¼ÊÇÏàͬµÄ¡£

    ʹÓà /doc Éú³É XML ÎĵµÎļþ

    SimpleType ÀàÒѾ­Å䱸Á˸÷ÖÖ XML ÔªËØ¡£¾ÍÏñÄúºÜ¿ÉÄÜÖªµÀµÄÄÇÑù£¬C# ±àÒëÆ÷½«Ê¹ÓÃÕâЩ´øÓÐÈýÌõб¸ÜµÄ´úÂë×¢ÊÍÉú³É XML ÎĵµÎļþ¡£Òª¸æËß csc.exe ´´½¨ÕâÑùµÄÎļþ£¬±ØÐëÌṩ /doc Ñ¡Ï²¢ÇÒÓÃÒªÉú³ÉµÄÎļþµÄÃû³ÆÐÞÊÎËü£º

    csc /t:library /out:MyCodeLibrary.dll /recurse:*.cs /doc:myDoc.xml

    ÔÚÓ¦ÓóÌÐòĿ¼ÖУ¬ÄúÏÖÔÚÓ¦µ±¿´µ½Ò»¸öÃûΪ myDoc.xml µÄÐÂÎļþ¡£Èç¹ûÄú´ò¿ª¸ÃÎļþ£¬Ôò»á·¢ÏÖÄúµÄÀàÐÍÒÔ XML µÄÐÎʽ½øÐÐÁË˵Ã÷£¬Èçͼ 5 Ëùʾ¡£

    ͼ 5. XML ÐÎʽµÄÀàÐÍÎĵµ


    ×¢ Èç¹ûÄúÏ£ÍûÁ˽â C# XML ´úÂë×¢Ê͵ÄÏêϸÐÅÏ¢£¬ÔòÇë²ÎÔÄÎÄÕ XML Comments Let You Build Documentation Directly From Your Visual Studio .NET Source Files¡£

    ʹÓà /keyfile ½¨Á¢Ç¿Ãû³Æ

    µ±Ç°Ê¾ÀýµÄ×îºóÒ»ÏîÈÎÎñÊÇΪÎÒÃǵijÌÐò¼¯·ÖÅäÒ»¸öÇ¿Ãû³Æ¡£ÔÚ .NET 1.1 Ï£¬´´½¨Ç¿ÃüÃû³ÌÐò¼¯ÐèҪʹÓà [AssemblyKeyFile] ÊôÐÔ¡£¾¡¹ÜÕâÑù×ö¾ÍºÜºÃÁË£¬µ« C# 2.0 ±àÒëÆ÷ÏÖÔÚÌṩÁË /keyfile ±êÖ¾£¬ÒÔÖ¸¶¨Ç¿Ãû³ÆÃÜÔ¿Îļþ (*.snk) µÄλÖá£

    ÔÚÇý¶¯Æ÷ C ÉÏ´´½¨Ò»¸öÃûΪ MyKeyPair µÄÐÂÎļþ¼Ð£¬È»ºóʹÓÃÃüÁîÌáʾ¸ü¸ÄÖÁ¸ÃĿ¼¡£½ÓÏÂÀ´£¬Ê¹Óà sn.exe ʵÓù¤¾ßµÄ &acirc;€¡°k Ñ¡Ïî´´½¨Ò»¸öÃûΪ myKeyPair.snk µÄÐÂÃÜÔ¿¶Ô¡£

    sn -k myKeyPair.snk

    ҪʹÓà csc.exe ¶Ô MyCodeLibrary.dll ½øÐÐÇ¿ÃüÃû£¬Çë·¢³öÒÔÏÂÃüÁ£º

    csc /t:library /out:MyCodeLibrary.dll /recurse:*.cs /doc:myDoc.xml /keyfile:C:\MyKeyPair\myKeypair.snk

    ÒªÑéÖ¤¸Ã³ÌÐò¼¯µÄÈ·¾ßÓÐÇ¿Ãû³Æ£¬ÇëʹÓð²È«ÊµÓù¤¾ß (secutil.exe) ºÍ &acirc;€¡°s Ñ¡ÏîÏÔʾǿÃû³ÆÐÅÏ¢£º

    secutil /sMyCodeLibrary.dll

    ÄúÓ¦µ±·¢ÏÖ£¬³ÌÐò¼¯Çåµ¥ÖмǼµÄ¹«Ô¿Öµ±»ÏÔʾΪÈçͼ 6 ËùʾµÄÊä³ö¡£

    ͼ 6. ¹«Ô¿ÖµµÄÊä³ö


    C# 2.0 ±àÒëÆ÷ȷʵ»¹ÓÐÆäËûһЩÒÔÇ¿Ãû³ÆΪÖÐÐĵıêÖ¾£¨/delaysign ºÍ /keycontainer£©£¬Äú¿ÉÄÜÏ£ÍûÔÚ¿ÕÏÐʱ¼ÓÒÔÑо¿¡£ÌرðµØ£¬Èç¹ûÄúÏ£ÍûÆôÓÃÑÓ³ÙÇ©Ãû£¬ÔòÇëʹÓà /delaysign Ñ¡Ïî¡£

    ·µ»ØÒ³Ê×
    ʹÓà C# ÏìÓ¦Îļþ
    ¾¡¹Üͨ¹ýÃüÁîÐй¤×÷ʱ¿ÉÒÔÌåÑéµ½ÆäÓëÉú¾ãÀ´µÄÓÅÊÆ£¬µ«Ã»ÓÐÈËÄܹ»·ñÈϼüÈëÊýÊ®¸ö±àÒëÆ÷Ñ¡Ïî¿ÉÄܵ¼ÖÂÊÖÖ¸³é½îºÍ¼Èë´íÎó¡£ÎªÁËÓÐÖúÓÚ¼õÇáÕâÁ½¸öÎÊÌ⣬C# ±àÒëÆ÷Ö§³ÖʹÓÃÏìÓ¦Îļþ¡£

    ×¢ ËùÓÐÃüÁîÌáʾ¶¼ÔÊÐíÄúʹÓà Up ºÍ Down ¼ýÍ·¼ü±éÀúÒÔÇ°µÄÃüÁî¡£

    ÏìÓ¦Îļþ£¨ËüÃÇ°´ÕÕÔ¼¶¨²ÉÓà *.rsp ÎļþÀ©Õ¹Ãû£©°üº¬ÄúÏ£Íû¹©¸øµ½ csc.exe ÖеÄËùÓÐÑ¡Ïî¡£ÔÚ´´½¨Á˸ÃÎļþÒÔºó£¬Äú¾Í¿ÉÒÔ½«ËüµÄÃû³ÆÖ¸¶¨Îª C# ±àÒëÆ÷µÄΨһѡÏΪÁ˱ãÓÚ˵Ã÷£¬ÏÂÃæÌṩÁËÒ»¸ö½«ÓÃÓÚÉú³É MyCodeLibrary.dll µÄÏìÓ¦Îļþ£¨Çë×¢Ò⣬Äú¿ÉÒÔʹÓà # ·ûºÅÖ¸¶¨×¢ÊÍ£©¡£

    # MyCodeLibraryArgs.rsp
    #
    # These are the options used
    # to compile MyCodeLibrary.dll

    # Output target and name.
    /t:library
    /out:MyCodeLibrary.dll

    # Location of C# files.
    /recurse:*.cs

    # Give me an XML doc.
    /doc:myDoc.xml

    # Give me a strong name as well.
    /keyfile:C:\MyKeyPair\myKeypair.snk

    ¸ø¶¨¸ÃÎļþÒÔºó£¬ÄúÏÖÔھͿÉÒÔʹÓà @ Ñ¡ÏîÖ¸¶¨ MyCodeLibraryArgs.rsp ÁË£º

    csc @MyCodeLibraryArgs.rsp

    Èç¹ûÄúÔ¸Ò⣬Ôò¿ÉÒÔÖ¸¶¨¶à¸öÏìÓ¦Îļþ£º

    csc @MyCodeLibraryArgs.rsp @MoreArgs.rsp @EvenMoreArgs.rsp

    Çë¼Çס£¬°´ÕÕÓöµ½µÄ˳Ðò¶ÔÏìÓ¦Îļþ½øÐд¦Àí¡£Òò´Ë£¬ÒÔÇ°µÄÎļþÖеÄÉèÖÿÉÄܱ»ÒÔºóµÄÎļþÖеÄÉèÖÃÖØд¡£

    ĬÈϵÄÏìÓ¦ÎļþºÍ /noconfig Ñ¡Ïî

    ×îºó£¬Çë¼ÇסÓÐÒ»¸öĬÈϵÄÏìÓ¦Îļþ - csc.rsp£¬ËüÓÉ csc.exe ÔÚÿ´Î±àÒëÆÚ¼ä×Ô¶¯´¦Àí¡£Èç¹ûÄú·ÖÎö¸ÃÎļþ£¨ËüÓë csc.exe ±¾ÉíλÓÚÏàͬµÄÎļþ¼ÐÖУ©µÄÄÚÈÝ£¬ÔòÄú½«Ö»ÊÇ·¢ÏÖÒ»×é¾­³£ÒýÓõijÌÐò¼¯£¨System.Windows.Forms.dll¡¢System.Data.dll µÈµÈ£©¡£

    ÔÚÄúÏ£Íû½ûÖ¹°üÀ¨ csc.rsp µÄ¼«ÉÙÊýµÄ³¡ºÏÖУ¬Äú¿ÉÒÔÖ¸¶¨ /noconfig ±êÖ¾£º

    csc /noconfig @MyCodeLibraryArgs.rsp

    ×¢ Èç¹ûÄúÒýÓóÌÐò¼¯£¬¶øʵ¼ÊÉϲ¢²»Ê¹ÓÃËü£¬ÔòËü½«²»»áÔÚ³ÌÐò¼¯Çåµ¥ÖÐÁгö¡£Òò´Ë£¬Çë²»Òªµ£ÐÄ´úÂëÅòÕÍÎÊÌ⣬ÒòΪËüÃǸù±¾²»´æÔÚ¡£

    ·µ»ØÒ³Ê×
    ʹÓà /reference ÒýÓÃÍⲿ³ÌÐò¼¯
    ´Ëʱ£¬ÎÒÃÇÒѾ­Ê¹ÓÃÃüÁîÐбàÒëÆ÷´´½¨Á˾ßÓÐÇ¿Ãû³Æ£¨²¢ÇÒ½øÐÐÁË˵Ã÷£©µÄµ¥Îļþ´úÂë¿â¡£ÏÖÔÚ£¬ÎÒÃÇÐèÒªÒ»¸ö¿Í»§¶ËÓ¦ÓóÌÐòÒÔ±ãʹÓÃËü¡£ÇëÔÚ C:\MyCSharpCode Öд´½¨Ò»¸öÃûΪ MyClient µÄÐÂÎļþ¼Ð¡£ÔÚ¸ÃÎļþ¼ÐÖУ¬´´½¨Ò»¸öÐ嵀 C# ´úÂëÎļþ (simpleTypeClient.cs)£¬¸ÃÎļþ´Ó³ÌÐòµÄÈë¿Úµãµ÷Óþ²Ì¬µÄ SimpleType.DisplayEnvironment() ·½·¨£º

    // simpleTypeClient.cs
    using System;

    // Namespace in MyCodeLibrary.dll
    using MyCodeLibrary;

    namespace MyClientApp
    {
    public class MyApp
    {
    public static void Main()
    {
    SimpleType.DisplayEnvironment();
    Console.ReadLine();
    }
    }
    }

    ÒòΪÎÒÃǵĿͻ§¶ËÓ¦ÓóÌÐòҪʹÓà MyCodeLibrary.dll£¬ËùÒÔÎÒÃÇÐèҪʹÓà /reference£¨»òÖ»ÊÇʹÓà /r£©Ñ¡Ïî¡£¸Ã±êÖ¾ºÜÁé»î£¬ÒòΪÄú¿ÉÒÔÖ¸¶¨ËùÌÖÂÛµÄ *dll µÄÍêÕû·¾¶£¬ÈçÏÂËùʾ£º

    csc /t:exe /r:C:\MyCSharpCode\MyCodeLibrary\MyCodeLibrary.dll *.cs
    »òÕߣ¬Èç¹û˽ÓгÌÐò¼¯µÄ¸±±¾ÓëÊäÈëÎļþλÓÚÏàͬµÄÎļþ¼ÐÖУ¬Ôò¿ÉÒÔÖ»Ö¸¶¨³ÌÐò¼¯Ãû³Æ£º

    csc /t:exe /r:MyCodeLibrary.dll *.cs

    Çë×¢Ò⣬ÎÒûÓÐÖ¸¶¨ /out Ñ¡Ïî¡£¸ø¶¨¸ÃÌõ¼þ£¬csc.exe »ùÓÚÎÒÃǵijõʼÊäÈëÎļþ (simpleTypeClient.cs) ´´½¨ÁËÒ»¸öÃû³Æ¡£´ËÍ⣬ÒÑÖª /target µÄĬÈÏÐÐΪÊÇÉú³É»ùÓÚ¿ØÖÆ̨µÄÓ¦ÓóÌÐò£¬ËùÒÔ /t:exe ²ÎÊýÊÇ¿ÉÑ¡µÄ¡£

    ÔÚÈκÎÇé¿öÏ£¬ÒòΪ MyCodeLibrary.dll ÊÇ˽ÓгÌÐò¼¯£¬ËùÒÔÄúÐèÒª½«¸Ã¿âµÄÒ»¸ö¸±±¾·Åµ½ MyClient Ŀ¼ÖС£ÔÚÄúÍê³É¸Ã¹¤×÷ÒÔºó£¬Äú¾ÍÄܹ»Ö´ÐÐ simpleTypeClient.exe Ó¦ÓóÌÐò¡£Í¼ 7 ÏÔʾÁË¿ÉÄܵIJâÊÔÔËÐС£

    ͼ 7. ¿ÉÄܵIJâÊÔÔËÐÐÊä³ö


    ×¢ Çë»ØÒäÒ»ÏÂÕâ¸öÎÊÌ⣬²»±Ø½«¾ßÓÐÇ¿Ãû³ÆµÄ³ÌÐò¼¯²¿Êðµ½È«¾Ö³ÌÐò¼¯»º´æ (GAC) ÖС£Êµ¼ÊÉÏ£¬ÒòΪǿÃû³Æ¾ßÓÐÌìÈ»µÄ°²È«ÐÔ·½ÃæµÄºÃ´¦£¬ËùÒÔÏòÿ¸ö³ÌÐò¼¯£¨ÎÞÂÛ¹²ÏíÓë·ñ£©ÌṩǿÃû³ÆÊÇÒ»ÖÖ .NET ×î¼Ñ²ßÂÔ¡£

    ÒýÓöà¸öÍⲿ³ÌÐò¼¯

    Èç¹ûÄúÏ£ÍûÔÚÃüÁîÐÐÒýÓôóÁ¿³ÌÐò¼¯£¬Ôò¿ÉÒÔÖ¸¶¨¶à¸ö /reference Ñ¡ÏΪÁË˵Ã÷ÕâÒ»µã£¬¼ÙÉèÎÒÃǵĿͻ§¶ËÓ¦ÓóÌÐòÐèҪʹÓðüº¬ÔÚÃûΪ NewLib.dll µÄ¿âÖеÄÀàÐÍ£º

    csc /t:exe /r:MyCodeLibrary.dll /r:NewLib.dll *.cs

    ×÷ΪһÖÖÉÔ΢¼òµ¥Ò»Ð©µÄÌæ´ú·½·¨£¬Äú¿ÉÒÔʹÓõ¥¸ö /reference Ñ¡Ï²¢ÇÒʹÓ÷ֺŷָôµÄÁбíÖ¸¶¨Ã¿¸ö³ÌÐò¼¯£º

    csc /t:exe /r:MyCodeLibrary.dl;NewLib.dll *.cs

    µ±È»£¬ÔÚ´´×÷ C# ÏìÓ¦ÎļþʱʹÓÃÏàͬµÄÓï·¨¡£

    ¹ØÓÚ /lib µÄ¼ò¶Ì˵Ã÷

    Ôڲ鿴 C# 2.0 ³ÌÐò¼¯±ðÃûµÄ×÷ÓÃ֮ǰ£¬ÇëÔÊÐíÎÒ¶Ô /lib ±êÖ¾¼ÓÒÔ¼ò¶Ì˵Ã÷¡£¸ÃÑ¡Ïî¿ÉÓÃÓÚ½«°üº¬ÓÉ /reference Ñ¡ÏîÖ¸¶¨µÄ³ÌÐò¼¯µÄĿ¼¸æË߸ø csc.exe¡£ÎªÁ˽øÐÐ˵Ã÷£¬¼ÙÉèÄú¾ßÓÐÈý¸öλÓÚÇý¶¯Æ÷ C µÄ¸ùĿ¼ÖÐµÄ *.dll ³ÌÐò¼¯¡£ÒªÖ¸Ê¾ csc.exe ÔÚ C:\ ϲéÕÒ asm1.dll¡¢asm2.dll ºÍ asm3.dll£¬ÐèÒª·¢³öÒÔÏÂÃüÁ£º

    csc /lib:c:\ /reference:asm1.dll;asm2.dll;asm3.dll *.cs

    Èç¹ûÄúδʹÓà /lib£¬ÔòÐèÒª½«ÕâÈý¸ö .NET ´úÂë¿âÊÖ¶¯¸´ÖƵ½°üº¬ÊäÈëÎļþµÄĿ¼ÖС£»¹Çë×¢Ò⣬Èç¹ûÔÚ¸ø¶¨µÄÃüÁÖжà´Î·¢³ö /lib ±êÖ¾£¬Ôò½á¹û½«ÀÛ»ýÆðÀ´¡£

    ·µ»ØÒ³Ê×
    Àí½â C# 2.0 ÒýÓñðÃû
    ¹ØÓÚ /reference Ñ¡ÏîÐèÒª½øÐеÄ×îºóÒ»µã˵Ã÷ÊÇ£¬ÔÚ C# 2.0 ÖУ¬ÏÖÔÚ¿ÉÒÔΪÒýÓõijÌÐò¼¯´´½¨±ðÃû¡£Í¨¹ý¸Ã¹¦ÄÜ£¬¿ÉÒÔ½â¾öÔÚΨһÃüÃûµÄ³ÌÐò¼¯Öаüº¬µÄÃû³ÆÍêÈ«ÏàͬµÄÀàÐÍÖ®¼ä´æÔÚµÄÃû³Æ³åÍ»ÎÊÌâ¡£

    ΪÁË˵Ã÷¸Ã¹¦ÄܵÄʵÓÃÐÔ£¬ÇëÔÚ C:\MyCSharpCode Ŀ¼Öд´½¨Ò»¸öÃûΪ MyCodeLibrary2 µÄÐÂÎļþ¼Ð¡£½«ÏÖÓÐµÄ simpleType.cs ºÍ AsmInfo.cs ÎļþµÄ¸±±¾·Åµ½ÐÂĿ¼ÖС£ÏÖÔÚ£¬Ïò SimpleType ÖÐÌí¼ÓÒ»¸öÄܹ»ÏÔʾ¿Í»§¶ËÌṩµÄ×Ö·û´®µÄз½·¨£º

    /// <summary>
    /// Display a user supplied message.
    /// </summary>
    public static void PrintMessage(string msg)
    {
    Console.WriteLine("You said: {0}", msg);
    }

    ±àÒëÕâЩÎļþ£¬ÒÔ´´½¨Ò»¸öÃûΪ MyCodeLibrary2.dll µÄгÌÐò¼¯£¬ÈçÏÂËùʾ£º

    csc /t:library /out:MyCodeLibrary2.dll *.cs

    ×îºó£¬½«ÕâһдúÂë¿âµÄ¸±±¾·Åµ½ MyClient Îļþ¼Ð£¨Í¼ 8£©ÖС£

    ͼ 8. MyClient Îļþ¼ÐÖеÄдúÂë


    ÏÖÔÚ£¬Èç¹ûÎÒÃǵĵ±Ç°¿Í»§¶Ë³ÌÐòÏ£ÍûÒýÓà MyCodeLibrary.dll ÒÔ¼° MyCodeLibrary2.dll£¬ÔòÎÒÃÇÖ´ÐÐÒÔϲÙ×÷£º

    csc /t:exe /r:MyCodeLibrary.dll;MyCodeLibrary2.dll *.cs

    ±àÒëÆ÷¸æËßÎÒÃÇ£¬ÎÒÃÇÒѾ­ÒýÈëÁËÃû³Æ³åÍ»£¬ÒòΪÕâÁ½¸ö³ÌÐò¼¯¶¼¶¨ÒåÁËÒ»¸öÃûΪ SimpleType µÄÀࣺ

    simpleTypeClient.cs(13,7): error CS0433: The type 'MyCodeLibrary.SimpleType'
    exists in both 'c:\MyCSharpCode\MyClient\MyCodeLibrary.dll' and
    'c:\MyCSharpCode\MyClient\MyCodeLibrary2.dll'

    Õ§¿´ÆðÀ´£¬Äú¿ÉÄÜÈÏΪ¿ÉÒÔͨ¹ýÔÚ¿Í»§¶Ë´úÂëÖÐʹÓÃÍêÈ«ÏÞ¶¨Ãû³ÆÀ´ÐÞ¸´¸ÃÎÊÌâ¡£µ«ÊÇ£¬ÕâÑù×öÎÞ·¨¾ÀÕý¸ÃÎÊÌ⣬ÒòΪÕâÁ½¸ö³ÌÐò¼¯¶¨ÒåÁËÏàͬµÄÍêÈ«ÏÞ¶¨Ãû³Æ (MyCodeLibrary¡£SimpleType)¡£

    ʹÓà /reference ±êÖ¾µÄбðÃûÑ¡ÏÎÒÃÇ¿ÉÒÔΪÒýÓõÄÿ¸ö´úÂë¿âÉú³ÉΨһµÄÃû³Æ¡£ÔÚÎÒÃÇÕâÑù×öÖ®ºó£¬ÎÒÃǾͿÉÒÔ¸üпͻ§¶Ë´úÂ룬ÒԱ㽫ij¸öÀàÐÍÓëÌض¨µÄ³ÌÐò¼¯Ïà¹ØÁª¡£

    µÚÒ»²½ÊÇÐÞ¸Ä simpleTypeClient.cs Îļþ£¬ÒÔʹÓÃÎÒÃǽ«Í¨¹ýÐ嵀 extern alias Óï·¨ÔÚÃüÁîÐÐÖ¸¶¨µÄ±ðÃû£º

    // Extern alias statements must be
    // listed before all other code!
    extern alias ST1;
    extern alias ST2;

    using System;

    namespace MyClientApp
    {
    public class MyApp
    {
    public static void Main()
    {
    // Bind assembly to type using the '::' operator.
    ST1::MyCodeLibrary.SimpleType.DisplayEnvironment();
    ST2::MyCodeLibrary.SimpleType.PrintMessage("Hello!");

    Console.ReadLine();
    }
    }
    }

    Çë×¢Ò⣬ÎÒÃÇÒѾ­Ê¹Óà C# 2.0 extern alias Óï¾ä²¶»ñÁËÔÚÃüÁîÐж¨ÒåµÄ±ðÃû¡£ÕâÀST1£¨¼òµ¥ÀàÐÍ 1£©ÊÇΪ MyCodeLibrary.dll ¶¨ÒåµÄ±ðÃû£¬¶ø ST2 ÊÇ MyCodeLibrary2.dll µÄ±ðÃû£º

    csc /r:ST1=MyCodeLibrary.dll /r:ST2=MyCodeLibrary2.dll *.cs

    ¸ø¶¨ÕâЩ±ðÃû£¬Çë×¢Òâ Main() ·½·¨ÈçºÎʹÓà C# 2.0 ·¶Î§½âÎöÔËËã·û (::) ½«³ÌÐò¼¯±ðÃû°ó¶¨µ½ÀàÐͱ¾Éí£º

    // This says "I want the MyCodeLibrary.SimpleType class
    // that is defined in MyCodeLibrary.dll".
    ST1::MyCodeLibrary.SimpleType.DisplayEnvironment();

    ½ø¶ø£¬/reference Ñ¡ÏîµÄÕâÒ»±äÌå¿ÉÒÔÌṩһÖÖ±ÜÃâÃû³Æ³åÍ»£¨µ±Á½¸ö¾ßÓÐΨһÃû³ÆµÄ³ÌÐò¼¯°üº¬Ãû³ÆÍêÈ«ÏàͬµÄÀàÐÍʱ·¢Éú£©µÄ·½Ê½¡£

    ·µ»ØÒ³Ê×
    ʹÓà /addmodule Éú³É¶àÎļþ³ÌÐò¼¯
    ¾ÍÏñÄú¿ÉÄÜÒѾ­ÖªµÀµÄÄÇÑù£¬¶àÎļþ³ÌÐò¼¯ÌṩÁËÒ»ÖÖ½«µ¥¸ö .NET ¶þ½øÖÆÎļþ·Ö½âΪ¶à¸ö½ÏСµÄСÎļþµÄ·½Ê½£¬ÕâÔÚÔ¶³ÌÏÂÔØ .NET Ä£¿éʱ֤Ã÷ºÜÓаïÖú¡£¶àÎļþ³ÌÐò¼¯µÄ×îÖÕЧ¹ûÊÇÈÃÒ»×éÎļþÏñÒ»¸öµ¥¶ÀÒýÓúͽøÐа汾¿ØÖƵĵ¥ÔªÄÇÑù¹¤×÷¡£

    ¶àÎļþ³ÌÐò¼¯°üº¬Ò»¸öÖ÷ *.dll£¬Ëü°üº¬³ÌÐò¼¯Çåµ¥¡£¸Ã¶àÎļþ³ÌÐò¼¯µÄÆäËûÄ£¿é£¨°´ÕÕÔ¼¶¨£¬ËüÃDzÉÓà *.netmodule ÎļþÀ©Õ¹Ãû£©±»¼Ç¼ÔÚÖ÷Ä£¿éµÄÇåµ¥ÖУ¬²¢ÇÒÓÉ CLR °´Ðè¼ÓÔØ¡£Æù½ñΪֹ£¬Éú³É¶àÎļþ³ÌÐò¼¯µÄΨһ·½Ê½ÊÇʹÓÃÃüÁîÐбàÒëÆ÷¡£

    ΪÁË˵Ã÷¸Ã¹ý³Ì£¬ÇëÔÚ C:\MyCSharpCode Ŀ¼Öд´½¨Ò»¸öÃûΪ MultiFileAsm µÄÐÂ×ÓĿ¼¡£ÎÒÃǵÄÄ¿±êÊÇ´´½¨Ò»¸öÃûΪ AirVehicles µÄ¶àÎļþ³ÌÐò¼¯¡£Ö÷Ä£¿é (Airvehicles.dll) ½«°üº¬µ¥¸öÃûΪ Helicopter µÄÀàÀàÐÍ£¨ÉÔºó¶¨Ò壩¡£³ÌÐò¼¯Çåµ¥±à¼ÁËÒ»¸ö¸½¼ÓÄ£¿é (ufos.netmodule)£¬¸ÃÄ£¿é¶¨ÒåÁËÒ»¸öÃûΪ UFO µÄÀàÀàÐÍ£º

    // ufo.cs
    using System;
    using System.Windows.Forms;

    namespace AirVehicles
    {
    public class UFO
    {
    public void AbductHuman()
    {
    MessageBox.Show("Resistance is futile");
    }
    }
    }

    Òª½« ufo.cs ±àÒëΪ .NET Ä£¿é£¬ÇëÖ¸¶¨ /t:module ×÷ΪĿ±êÀàÐÍ£¬Õâ»á×Ô¶¯×ñÑ­ *.netmodule ÃüÃûÔ¼¶¨£¨Çë»ØÏëһϣ¬Ä¬ÈϵÄÏìÓ¦Îļþ×Ô¶¯ÒýÓà System.Windows.Forms.dll£¬Òò´ËÎÒÃDz»ÐèÒªÏÔʽÒýÓøÿ⣩£º

    csc /t:module ufo.cs

    Èç¹ûÄúÒª½« ufo.netmodule ¼ÓÔص½ ildasm.exe ÖУ¬Äú»á·¢ÏÖÒ»¸ö¼ÇÔØÁ˸ÃÄ£¿éµÄÃû³ÆºÍÍⲿÒýÓóÌÐò¼¯µÄÄ£¿é¼¶±ðÇåµ¥£¨Çë×¢Ò⣬*.netmodules ûÓÐÖ¸¶¨°æ±¾ºÅ£¬ÒòΪÄÇÊÇÖ÷Ä£¿éµÄ¹¤×÷£©£º

    .assembly extern mscorlib{...}
    .assembly extern System.Windows.Forms{...}
    .module ufo.netmodule

    ÏÖÔÚ£¬Çë´´½¨Ò»¸öÃûΪ helicopter.cs µÄÐÂÎļþ£¬¸ÃÎļþ½«ÓÃÓÚ±àÒëÖ÷Ä£¿é Airvehicles.dll£º

    // helicopter.cs
    using System;
    using System.Windows.Forms;

    namespace AirVehicles
    {
    public class Helicopter
    {
    public void TakeOff()
    {
    MessageBox.Show("Helicopter taking off!");
    }
    }
    }

    ¼ÙÉè Airvehicles.dll ÊǸöàÎļþ³ÌÐò¼¯µÄÖ÷Ä£¿é£¬ÔòÄú½«ÐèÒªÖ¸¶¨ /t:library ±êÖ¾¡£µ«ÊÇ£¬ÒòΪÄú»¹Ï£Íû½« ufo.netmodule ¶þ½øÖÆÎļþ±àÂëµ½³ÌÐò¼¯Çåµ¥ÖУ¬ËùÒÔÄú»¹±ØÐëÖ¸¶¨ /addmodule Ñ¡Ï

    csc /t:library /addmodule:ufo.netmodule /out:airvehicles.dll helicopter.cs

    Èç¹ûÄúÒª·ÖÎö airvehicles.dll ¶þ½øÖÆÎļþÄÚ²¿°üº¬µÄ³ÌÐò¼¯¼¶±ðÇåµ¥£¨Ê¹Óà ildasm.exe£©£¬Ôò»á·¢ÏÖ ufo.netmodule ȷʵÊÇʹÓà .file CIL Ö¸Áî¼Ç¼µÄ£º

    .assembly airvehicles{...}
    .file ufo.netmodule

    ¶àÎļþ³ÌÐò¼¯µÄʹÓÃÕß¿ÉÒÔ½ÏÉÙ¹ØÐÄËûÃÇÒªÒýÓõijÌÐò¼¯ÓÉ´óÁ¿¶þ½øÖÆÎļþ×é³ÉÕâÒ»ÊÂʵ¡£Êµ¼ÊÉÏ£¬Ôھ䷨ÉϽ«¿´ÆðÀ´ÓëʹÓõ¥Îļþ³ÌÐò¼¯µÄÐÐΪÍêÈ«Ïàͬ¡£ÎªÁËʹ±¾ÎıäµÃ¸üÓÐȤһЩ£¬ÈÃÎÒÃÇ´´½¨Ò»¸ö»ùÓÚ Windows ´°ÌåµÄ¿Í»§¶ËÓ¦ÓóÌÐò¡£

    ·µ»ØÒ³Ê×
    ´´½¨ Windows ´°ÌåÓ¦ÓóÌÐò
    ÎÒÃǵÄÏÂÒ»¸öʾÀýÏîÄ¿½«ÊÇÒ»¸öʹÓà airvehicles.dll¶àÎļþ³ÌÐò¼¯µÄ Windows ´°ÌåÓ¦ÓóÌÐò¡£ÔÚ C:\MyCSharpCode Ŀ¼Öд´½¨Ò»¸öÃûΪ WinFormClient µÄеÄ×ÓĿ¼¡£´´½¨Ò»¸öÅÉÉú×Ô Form µÄÀ࣬¸ÃÀඨÒåÁ˵¥¸ö Button ÀàÐÍ£¬µ±Ëü±»µ¥»÷ʱ£¬½«´´½¨ Helicopter ºÍ UFO ÀàÐÍ£¬²¢ÇÒµ÷ÓÃËüÃǵijÉÔ±£º

    using System;
    using System.Windows.Forms;
    using AirVehicles;

    public class MyForm : Form
    {
    private Button btnUseVehicles = new Button();

    public MyForm()
    {
    this.Text = "My Multifile Asm Client";
    btnUseVehicles.Text = "Click Me";
    btnUseVehicles.Width = 100;
    btnUseVehicles.Height = 100;
    btnUseVehicles.Top = 10;
    btnUseVehicles.Left = 10;
    btnUseVehicles.Click += new EventHandler(btnUseVehicles_Click);
    this.Controls.Add(btnUseVehicles);
    }

    private void btnUseVehicles_Click(object o, EventArgs e)
    {
    Helicopter h = new Helicopter();
    h.TakeOff();

    UFO u = new UFO();
    u.AbductHuman();
    }

    private static void Main()
    {
    Application.Run(new MyForm());
    }
    }

    ×¢ ÔÚ¼ÌÐø²Ù×÷֮ǰ£¬ÇëÈ·±£½« airvehicals.dll ºÍ ufo.netmodule ¶þ½øÖÆÎļþ¸´ÖƵ½ WinFormClient Ŀ¼ÖС£

    Òª½«¸ÃÓ¦ÓóÌÐò±àÒëΪ Windows ´°Ìå¿ÉÖ´ÐÐÎļþ£¬ÇëÈ·±£Ö¸¶¨ winexe ×÷Ϊ /target ±êÖ¾µÄÐÞÊΡ£Çë×¢Ò⣬ÔÚÒýÓöàÎļþ³ÌÐò¼¯Ê±£¬Ö»ÐëÖ¸¶¨Ö÷Ä£¿éµÄÃû³Æ£º

    csc /t:winexe /r:airvehicles.dll *.cs

    ÔÚÔËÐÐÄúµÄ³ÌÐò²¢µ¥»÷°´Å¥Ö®ºó£¬Äú¾ÍÓ¦µ±¿´µ½°´ÕÕÔ¤ÆÚÏÔʾµÄÿ¸öÏûÏ¢¿ò¡£Í¼ 9 ÏÔʾÁËÎÒ´´½¨µÄÒ»¸öÏûÏ¢¿ò¡£

    ͼ 9. ʾÀýÏûÏ¢¿ò


    ·µ»ØÒ³Ê×
    ͨ¹ý csc.exe ʹÓÃ×ÊÔ´
    ÏÂÒ»¸öÒé³ÌÊÇ·ÖÎöÈçºÎʹÓà csc.exe ½«×ÊÔ´£¨ÀýÈ磬×Ö·û´®±í»òͼÏñÎļþ£©Ç¶Èëµ½ .NET ³ÌÐò¼¯ÖС£Ê×ÏÈ£¬¿ÉÒÔʹÓà /win32Icon Ñ¡ÏîÖ¸¶¨ Win32 *.ico ÎļþµÄ·¾¶¡£¼ÙÉèÄúÒѾ­½«Ò»¸öÃûΪ HappyDude.ico µÄͼ±êÎļþ·Åµ½µ±Ç° Windows ´°ÌåÓ¦ÓóÌÐòµÄÓ¦ÓóÌÐòĿ¼ÖС£Òª½« HappyDude.ico ÉèÖÃΪ¿ÉÖ´ÐÐÎļþµÄͼ±ê£¬Çë·¢³öÒÔÏÂÃüÁ£º

    csc /t:winexe /win32icon:HappyDude.ico /r:airvehicles.dll *.cs

    ´Ëʱ£¬Ó¦µ±¸üпÉÖ´ÐгÌÐò¼¯£¬Èçͼ 10 Ëùʾ¡£

    ͼ 10. ¾­¹ý¸üеĿÉÖ´ÐгÌÐò¼¯


    ³ýÁËʹÓà /win32icon ·ÖÅäÓ¦ÓóÌÐòͼ±êÒÔÍ⣬csc.exe »¹ÌṩÁËÈý¸ö¸½¼ÓµÄÒÔ×ÊԴΪÖÐÐĵÄÑ¡Ï±í 5£©¡£

    ±í 5. csc.exe µÄÒÔ×ÊԴΪÖÐÐĵÄÑ¡Ïî

    csc.exe µÄÒÔ×ÊԴΪÖÐÐĵÄÑ¡Ïî ¶¨Òå
    /resource
    ½« *.resources ÎļþÄÚ²¿°üº¬µÄ×ÊԴǶÈëµ½µ±Ç°³ÌÐò¼¯ÖС£Çë×¢Ò⣬ͨ¹ý¸ÃÑ¡Ïî¿ÉÒÔ¡°ÒÔ¹«¹²·½Ê½¡±Ç¶Èë×ÊÔ´ÒÔ¹©ËùÓÐʹÓÃÕßʹÓ㬻òÕß¡°ÒÔ˽Óз½Ê½¡±Ç¶Èë×ÊÔ´ÒÔ±ã½ö¹©°üº¬³ÌÐò¼¯Ê¹Óá£

    /linkresource
    ÔÚ³ÌÐò¼¯Çåµ¥ÖмǼָÏòÍⲿ×ÊÔ´ÎļþµÄÁ´½Ó£¬µ«Êµ¼ÊÉϲ¢²»Ç¶Èë×ÊÔ´×ÔÉí¡£

    /win32res
    ʹÄú¿ÉÒÔǶÈë´æÔÚÓÚ¾Éʽ *.res ÎļþÖеÄ×ÊÔ´¡£


    ÔÚÎÒÃÇÁ˽âÈçºÎ½«×ÊԴǶÈëµ½ÎÒÃǵijÌÐò¼¯ÖÐÒÔÇ°£¬ÇëÈÃÎÒ¶Ô .NET ƽ̨ÖеÄ×ÊÔ´µÄÐÔÖʽøÐмò¶ÌµÄ½éÉÜ¡£ÕýÈçÄú¿ÉÄÜÒѾ­ÖªµÀµÄÄÇÑù£¬.NET ×ÊÔ´¿ªÊ¼Ê±Í¨³£³ÊÏÖΪһ×é±»¼Ç¼Ϊ XML£¨*.resx Îļþ£©»ò¼òµ¥Îı¾ (*.txt) µÄÃû³Æ/Öµ¶Ô¡£¸Ã XML/Îı¾ÎļþËæºó±»×ª»»ÎªµÈЧµÄ¶þ½øÖÆÎļþ£¬Ëü²ÉÓà *.resources ÎļþÀ©Õ¹Ãû¡£È»ºó£¬ÕâЩ¶þ½øÖÆÎļþ±»Ç¶Èëµ½³ÌÐò¼¯Öв¢ÇÒ±»¼Ç¼ÔÚÇåµ¥ÖС£µ±ÐèÒªÒÔ±à³Ì·½Ê½´Ó¸Ã³ÌÐò¼¯ÖжÁÈ¡×ÊÔ´µÄʱºò£¬System.Resources ÃüÃû¿Õ¼ä»áÌṩºÜ¶àÀàÐÍÀ´Íê³É¸Ã¹¤×÷£¬ÆäÖÐ×îÖµµÃ×¢ÒâµÄÊÇ ResourceManager Àà¡£

    ¾¡¹ÜÄú¿Ï¶¨¿ÉÒÔÊÖ¶¯´´½¨ *.resx Îļþ£¬µ«Äú×îºÃʹÓà resgen.exe ÃüÁîÐй¤¾ß£¨»òÕߣ¬Äúµ±È»¿ÉÒÔʹÓà Visual Studio .NET ±¾Éí£©¡£ËäÈ»±¾ÎIJ»´òËãÃèÊö resgen.exe µÄÈ«²¿ÏêϸÐÅÏ¢£¬µ«ÊÇÈÃÎÒÃÇÑÝÁ·Ò»¸ö¼òµ¥µÄʾÀý¡£

    ʹÓà /resource ǶÈë×ÊÔ´

    ÔÚ MyCSharpCode ÏÂÃæ´´½¨Ò»¸öÃûΪ MyResourceApp µÄÐÂĿ¼¡£ÔÚ¸ÃĿ¼ÖУ¬Ê¹Óà notepad.exe ´´½¨Ò»¸öÃûΪ myStrings.txt µÄÐÂÎļþ£¬²¢ÇÒʹÆä°üº¬ÄúÑ¡ÔñµÄһЩÓÐȤµÄÃû³Æ/Öµ¶Ô¡£ÀýÈ磺

    # A list of personal data
    #
    company=Intertech Training
    lastClassTaught=.NET Security
    lastPresentation=SD East Best Practices
    favoriteGameConsole=XBox
    favoriteComic=Cerebus

    ÏÖÔÚ£¬Ê¹ÓÃÃüÁîÌáʾ£¬Í¨¹ýÒÔÏÂÃüÁ *.txt Îļþת»»ÎªÒ»¸ö»ùÓÚ XML µÄ *.resx Îļþ£º

    resgen myStrings.txt myStrings.resx

    Èç¹ûÄúʹÓà notepad.exe ´ò¿ª¸ÃÎļþ£¬Ôò»áÕÒµ½Ðí¶àÃèÊöÃû³Æ/Öµ¶ÔµÄ XML ÔªËØ£¬ÀýÈ磺

    <data name="company">
    <value xml:space="preserve">Intertech Training</value>
    </data>
    <data name="lastClassTaught">
    <value xml:space="preserve">.NET Security</value>
    </data>

    Òª½«¸Ã *.resx Îļþת»»Îª¶þ½øÖÆµÄ *.resources Îļþ£¬Ö»Ð뽫ÎļþÀ©Õ¹Ãû×÷Ϊ resgen.exe µÄ²ÎÊý½øÐиüУº

    resgen myStrings.resx myStrings.resources

    ´Ëʱ£¬ÎÒÃǾßÓÐÁËÒ»¸öÃûΪ myStrings.resources µÄ¶þ½øÖÆ×ÊÔ´Îļþ¡£Í¨¹ý /resource ±êÖ¾¿ÉÒԴﵽʹÓà csc.exe ½«¸ÃÊý¾ÝǶÈëµ½ .NET ³ÌÐò¼¯ÖеÄÄ¿µÄ¡£¼ÙÉèÎÒÃÇÒѾ­´´×÷ÁËλÓÚ MyResourceApp Ŀ¼ÖеÄÒÔÏ C# Îļþ (resApp.cs)£º

    // This simple app reads embedded
    // resources and displays them to the
    // console.
    using System;
    using System.Resources;
    using System.Reflection;

    public class ResApp
    {
    private static void Main()
    {
    ResourceManager rm = new ResourceManager("myStrings",
    Assembly.GetExecutingAssembly());
    Console.WriteLine("Last taught a {0} class.",
    rm.GetString("lastClassTaught"));
    }
    }

    ÒªÏà¶ÔÓÚÄúµÄ myStrings.resources Îļþ±àÒë¸Ã³ÌÐò¼¯£¬ÇëÊäÈëÒÔÏÂÃüÁ

    csc /resource:myStrings.resources *.cs

    ÒòΪÎÒÉÐδָ¶¨ /out ±êÖ¾£¬ËùÒÔÔÚ¸ÃʾÀýÖУ¬ÎÒÃǵĿÉÖ´ÐÐÎļþµÄÃû³Æ½«»ùÓÚ¶¨ÒåÁË Main() µÄÎļþ resApp.exe¡£Èç¹ûÒ»ÇÐÕý³££¬ÔòÔÚÖ´ÐÐÒÔºó£¬ÄúÓ¦µ±·¢ÏÖÀàËÆÓÚͼ 11 µÄÊä³ö¡£

    ͼ 11. Êä³ö


    ÎÒÏ£ÍûÄúÄܹ»ÇáËɵØʹÓà csc.exe ºÍËùÑ¡µÄÎı¾±à¼­Æ÷´´½¨µ¥ÎļþºÍ¶àÎļþ .NET ³ÌÐò¼¯£¨´øÓÐ×ÊÔ´£¡£©¡£ÄúÒѾ­Ñ§Ï°ÁË csc.exe µÄ×î³£¼ûµÄÃüÁîÐÐÑ¡Ï¶ø±¾ÎĵÄÆäÓಿ·Ö½«·ÖÎöһЩ²»Ì«³£Óõ«ÈÔÈ»ÓаïÖúµÄÑ¡Ïî¡£

    Èç¹ûÄúÔ¸Òâ¼ÌÐøѧϰ£¬ÇëÔÚ MyCSharpCode Îļþ¼ÐÖд´½¨Ò»¸öÃûΪ FinalExample µÄÐÂĿ¼¡£

    ·µ»ØÒ³Ê×
    ʹÓà /define ¶¨ÒåÔ¤´¦ÀíÆ÷·ûºÅ
    ¾¡¹Ü C# ±àÒëÆ÷ûÓÐÕæÕýÔ¤´¦Àí´úÂ룬µ«¸ÃÓïÑÔµÄÈ·ÔÊÐíÎÒÃÇʹÓÃÀàËÆÓÚ C µÄÔ¤´¦ÀíÆ÷·ûºÅÀ´¶¨Òå¸Ã±àÒëÆ÷ÒÔ¼°ÓëÆä½øÐн»»¥¡£Ê¹Óà C# µÄ #define Óï·¨£¬¿ÉÒÔ´´½¨Äܹ»¿ØÖÆÓ¦ÓóÌÐòÄÚ²¿µÄÖ´Ðз¾¶µÄ±ê¼Ç¡£

    ×¢ ±ØÐëÔÚʹÓÃÈκÎÓï¾ä»òÆäËû C# ÀàÐͶ¨Òå֮ǰÁгöËù¶¨ÒåµÄ·ûºÅ¡£

    ΪÁËÀûÓó£¼ûµÄʾÀý£¬¼ÙÉèÄúÏ£Íû¶¨ÒåÒ»¸öÃûΪ DEBUG µÄ·ûºÅ¡£Îª´Ë£¬Çë´´½¨Ò»¸öÃûΪ finalEx.cs µÄÐÂÎļþ£¬²¢½«Æä±£´æÔÚ MyCSharpCode\FinalExample Ŀ¼ÖУº

    // Define a 'preprocessor' symbol named DEBUG.
    #define DEBUG

    using System;

    public class FinalExample
    {
    public static void Main()
    {
    #if DEBUG
    Console.WriteLine("DEBUG symbol defined");
    #else
    Console.WriteLine("DEBUG not defined");
    #endif
    }
    }

    Çë×¢Ò⣬ÔÚÎÒÃÇʹÓà #define ¶¨ÒåÁË·ûºÅÒÔºó£¬ÎÒÃǾÍÄܹ»Ê¹Óà #if¡¢#else ºÍ #endif ¹Ø¼ü×ÖÀ´ÓÐÌõ¼þµØ¼ì²éºÍÏìÓ¦¸Ã·ûºÅ¡£Èç¹ûÄúÏÖÔÚ±àÒë¸Ã³ÌÐò£¬ÔòÓ¦µ±¿´µ½ÔÚ finalEx.exe Ö´ÐÐʱ£¬ÏûÏ¢¡°DEBUG symbol defined¡±ÏÔʾµ½¿ØÖÆ̨ÉÏ£º

    csc *.cs

    µ«ÊÇ£¬Èç¹ûÄú×¢Ê͵ô·ûºÅ¶¨Ò壺

    // #define DEBUG

    ÔòÊä³ö½«»áÏñÄúÔ¤ÁϵÄÄÇÑù£¨¡°DEBUG not defined¡±£©¡£

    ÔÚ .NET ³ÌÐò¼¯µÄ¿ª·¢ºÍ²âÊÔÆڼ䣬ÔÚÃüÁîÐж¨Òå·ûºÅ¿ÉÄÜÓÐËù°ïÖú¡£ÕâÑù×ö¿ÉÒÔ¿ìËٵؼ´Ê±Ö¸¶¨·ûºÅ£¬¶ø²»±Ø¸üдúÂë»ù¡£ÎªÁ˽øÐÐ˵Ã÷£¬¼ÙÉèÄúÏ£ÍûÔÚÃüÁîÐж¨Òå DEBUG ·ûºÅ£¬ÔòÇëʹÓà /define Ñ¡Ï

    csc /define:DEBUG *.cs

    µ±ÄúÔÙ´ÎÔËÐиÃÓ¦ÓóÌÐòʱ£¬ÄúÓ¦µ±¿´µ½ÏÔʾ¡°DEBUG symbol defined¡±- ¼´Ê¹ #define Óï¾äÒѾ­±»×¢Ê͵ô¡£

    ·µ»ØÒ³Ê×
    csc.exe µÄÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ïî
    ¼´Ê¹ÊÇ×îºÃµÄ³ÌÐòÔ±£¬ÓÐʱҲ»á·¢ÏÖÓжÔËûÃǵĴúÂë»ù½øÐе÷ÊÔµÄÐèÒª¡£¾¡¹ÜÎÒ¼ÙÉè´ó¶àÊý¶ÁÕ߸üϲ»¶Ê¹Óà Visual Studio .NET ½øÐе÷ÊԻ£¬µ«¶Ô csc.exe µÄһЩÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ï±í 6£©½øÐÐ˵Ã÷ÊÇÖµµÃµÄ¡£

    ±í 6. csc.exe µÄÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ïî

    csc.exe µÄÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ïî ¶¨Òå
    /debug
    ָʾ csc.exe ·¢³öÒ»¸ö *.pdb Îļþ£¬ÒÔ¹©µ÷ÊÔ¹¤¾ß£¨ÀýÈ磬cordbg.exe¡¢dbgclr.exe »ò Visual Studio£©Ê¹Óá£

    /warnaserror
    ½«ËùÓо¯¸æÊÓΪÑÏÖØ´íÎó¡£

    /warn
    ʹÄú¿ÉÒÔÖ¸¶¨µ±Ç°±àÒëµÄ¾¯¸æ¼¶±ð£¨0¡¢1¡¢2¡¢3 »ò 4£©¡£

    /nowarn
    ʹÄú¿ÉÒÔ½ûÓÃÌض¨µÄ C# ±àÒëÆ÷¾¯¸æ¡£

    /bugreport
    Èç¹ûÓ¦ÓóÌÐòÔÚÔËÐÐʱ³öÏÖ¹ÊÕÏ£¬Ôò¸ÃÑ¡Ïî¿ÉÉú³É´íÎóÈÕÖ¾¡£¸ÃÑ¡ÏÌáʾÄúÊäÈë¾ÀÕýÐÅÏ¢ÒÔ·¢Ë͵½ÄúÏ£ÍûµÄÈκεط½£¨ÀýÈ磬QA С×飩¡£


    Ҫ˵Ã÷ /debug Ñ¡ÏîµÄÓ÷¨£¬ÎÒÃÇÊ×ÏÈÐèÒªÔÚÎÒÃÇµÄ finalEx.cs ´úÂëÎļþÖвåÈëһЩ±àÂë´íÎó¡£Ç뽫ÒÔÏ´úÂëÌí¼Óµ½µ±Ç°µÄ Main() ·½·¨ÖУº

    // Create an array.
    string[] myStrings = {"Csc.exe is cool"};

    // Go out of bounds.
    Console.WriteLine(myStrings[1]);

    ÕýÈçÄú¿ÉÒÔ¿´µ½µÄÄÇÑù£¬ÎÒÃÇÊÔͼʹÓÃÔ½½çË÷Òý·ÃÎÊÎÒÃǵÄÊý×éµÄÄÚÈÝ¡£Èç¹ûÄúÖØбàÒëºÍÔËÐиóÌÐò£¬Ôò»áµÃµ½ IndexOutOfRangeException¡£¾¡¹ÜÎÒÃÇ¿ÉÒÔÃ÷ÏÔµØÖ¸³ö¸Ã´íÎ󣬵«¼ÙÈçÊÇÒ»¸ö²»ÄÇôÃ÷ÏԵĸüΪ¸´ÔӵĴíÎó£¬ÓÖ¸ÃÔõô°ìÄØ£¿

    Òªµ÷ÊÔʹÓà csc.exe ´´½¨µÄ³ÌÐò¼¯£¬µÚÒ»²½ÊÇÉú³É°üº¬¸÷ÖÖ .NET µ÷ÊÔʵÓù¤¾ßËùÐèÐÅÏ¢µÄ *.pdb Îļþ¡£Îª´Ë£¬ÇëÊäÈëÏÂÁÐÃüÁËüÃÇÔÚ¹¦ÄÜÉÏÊǵÈЧµÄ£©Ö®Ò»£º

    csc /debug *.cs
    csc /debug+ *.cs

    ´Ëʱ£¬ÄúÓ¦µ±ÔÚÓ¦ÓóÌÐòĿ¼Öп´µ½Ò»¸öÃûΪ finalEx.pdb µÄÐÂÎļþ£¬Èçͼ 12 Ëùʾ¡£

    ͼ 12. Ó¦ÓóÌÐòĿ¼ÖеÄРfinalEx.pdb


    ¿ÉÒÔ¸ù¾ÝÇé¿öÓà full »ò pdbonly ±ê¼ÇÏÞ¶¨ /debug ±êÖ¾¡£µ±ÄúÖ¸¶¨ /debug:full£¨ËüÊÇĬÈϱê¼Ç£©Ê±£¬½«ÒÔÊʵ±µÄ·½Ê½¶Ô³ÌÐò¼¯½øÐÐÐ޸ģ¬ÒÔʹÆä¿ÉÒÔ¸½¼Óµ½µ±Ç°ÕýÔÚÖ´Ðеĵ÷ÊÔÆ÷¡£¼ÈÈ»¸ÃÑ¡ÏîÄܹ» Ó°ÏìËù²úÉúµÄ .NET ³ÌÐò¼¯µÄ´óСºÍËٶȣ¬ÄÇôÇëÈ·±£Ö»ÔÚµ÷ÊÔ¹ý³ÌÖÐÖ¸¶¨¸ÃÑ¡Ïî¡£ÒòΪ full ÊÇ /debug ±êÖ¾µÄĬÈÏÐÐΪ£¬ËùÒÔÉÏÊöËùÓÐÑ¡ÏîÔÚ¹¦ÄÜÉÏÊǵÈЧµÄ£º

    csc /debug *.cs
    csc /debug+ *.cs
    csc /debug:full *.cs

    ÁíÒ»·½Ã棬ָ¶¨ /debug:pdbonly ¿ÉÒÔÉú³ÉÒ»¸ö *.pdb Îļþ£¬ÒÔ¼°Ò»¸öÖ»ÄÜÔÚ³ÌÐòÓɵ÷ÊÔ¹¤¾ßÖ±½ÓÆô¶¯Ê±½øÐе÷ÊԵijÌÐò¼¯£º

    csc /debug:pdbonly *.cs

    ÔÚÈκÎÇé¿öÏ£¬¼ÈÈ»Äú¾ßÓбØÐèµÄ *.pdb Îļþ£¬ÄÇôÄú¾Í¿ÉÒÔʹÓÃÐí¶àµ÷ÊÔ¹¤¾ß£¨cordbg.exe¡¢dbgclr.exe »ò Visual Studio£©µ÷ÊÔÓ¦ÓóÌÐò¡£ÎªÁ˲»Æ«Àë±¾ÎĵÄÖصã½éÉÜÃüÁîÐÐÕâÒ»ÌØÕ÷£¬ÎÒÃǽ«Ê¹Óà cordbg.exe ʵÓù¤¾ßµ÷ÊԸóÌÐò£º

    cordbg finalEx.exe

    ÔÚµ÷ÊԻỰ¿ªÊ¼ÒÔºó£¬Äú¾Í¿ÉÒÔʹÓà so£¨µ¥²½Ö´ÐУ©ÃüÁîµ¥²½Ö´ÐÐÿ¸ö´úÂëÐÐÁË¡£µ±Äúµ¥»÷³ö´íµÄ´úÂëÐÐʱ£¬Äú¿ÉÒÔÕÒµ½Èçͼ 13 ËùʾµÄ´úÂëת´¢¡£

    ͼ 13. µ¥²½Ö´ÐÐÃüÁî´úÂëת´¢


    ÒªÖÕÖ¹ cordbg.exe ʵÓù¤¾ß£¬Çë¼üÈë exit ²¢°´ Return ¼ü¡£

    ×¢ ±¾ÎĵÄÖص㲻ÊǽâÊÍ .NET µ÷ÊÔ¹¤¾ßµÄÓ÷¨¡£Èç¹ûÄúÏ£ÍûÁ˽âÓйØÔÚÃüÁîÐнøÐе÷ÊԵĹý³ÌµÄ¸ü¶àÐÅÏ¢£¬ÇëÔÚ Visual Studio °ïÖúϵͳÄÚ²éÕÒ¡°cordbg.exe¡±¡£

    ·µ»ØÒ³Ê×
    ÔÓÏî
    ÖÁ´Ë£¬ÄúÒѾ­Á˽âÁË C# ÃüÁîÐбàÒëÆ÷µÄºËÐÄÑ¡Ïî±³ºóµÄÏêϸÐÅÏ¢¡£ÎªÁËʹ±¾ÎĵÄÄÚÈݸü¼ÓÍêÕû£¬±í 7 ¼òÒªÃèÊöÁËÎÒÉÐδ̸ÂÛµ½µÄÆäÓà±êÖ¾¡£

    ±í 7. csc.exe µÄÆäÓàÑ¡Ïî

    csc.exe µÄÆäÓàÑ¡Ïî ¶¨Òå
    /baseaddress
    ¸ÃÑ¡ÏîʹÄú¿ÉÒÔÖ¸¶¨¼ÓÔØ *.dll µÄÔ¤ÆÚ»ùÖ·¡£Ä¬ÈÏÇé¿öÏ£¬¸Ã»ùÖ·ÓÉ CLR Ñ¡Ôñ¡£

    /checked
    Ö¸¶¨Òç³öÊý¾ÝÀàÐͽçÏÞµÄÕûÊýÔËËãÊÇ·ñ»áÔÚÔËÐÐʱµ¼ÖÂÒì³£¡£

    /codepage
    Ö¸¶¨ÒªÓÃÓÚ±àÒëÖеÄËùÓÐÔ´´úÂëÎļþµÄ´úÂëÒ³¡£

    /filealign
    ¸ÃÑ¡Ïî¿ØÖÆÊä³ö³ÌÐò¼¯ÄÚ²¿µÄ½Ú´óСµ÷Õû£¨512¡¢1024¡¢2048¡¢4096 »ò 8192 ×Ö½Ú£©¡£Èç¹ûÄ¿±êÉ豸ÊÇÊÖ³ÖÐÍÉ豸£¨ÀýÈ磬Pocket PC£©£¬Ôò¿ÉÒÔʹÓà /filealign Ö¸¶¨¿ÉÄÜ´æÔÚµÄ×îС½Ú¡£

    /langversion
    ¸ÃÑ¡Ïîָʾ±àÒëÆ÷ֻʹÓà ISO-1 C# ÓïÑÔ¹¦ÄÜ£¬Ëü»ù±¾ÉÏ¿ÉÒÔ¹é½áΪ C# 1.0 ÓïÑÔ¹¦ÄÜ¡£

    /main
    Èç¹ûµ±Ç°ÏîÄ¿¶¨ÒåÁ˶à¸ö Main() ·½·¨£¨ÕâÔÚµ¥Ôª²âÊÔÆÚ¼ä¿ÉÄÜÓÐËù°ïÖú£©£¬Ôò¿ÉÒÔʹÓøñêÖ¾Ö¸¶¨ÔÚ³ÌÐò¼¯¼ÓÔØʱִÐÐÄĸö Main() ·½·¨¡£

    /nostdlib
    ĬÈÏÇé¿öÏ£¬³ÌÐò¼¯Çåµ¥×Ô¶¯ÒýÓà mscorlib.dll¡£Ö¸¶¨¸ÃÑ¡Ïî¿ÉÒÔ½ûÖ¹ÕâÒ»ÐÐΪ¡£

    /optimize
    µ±±»ÆôÓà (/optimize+) ʱ£¬¿Éָʾ±àÒëÆ÷¾¡¿ÉÄÜÉú³É×îСÇÒ×î¿ìµÄ³ÌÐò¼¯¡£¸ÃÑ¡Ïî»á·¢³ö»¹Ö¸Ê¾ CLR ÔÚÔËÐÐʱÓÅ»¯´úÂëµÄÔªÊý¾Ý¡£

    /platform
    ¸Ã±êÖ¾¸æËß±àÒëÆ÷Õë¶Ô 32 λ»ò 64 λ´¦ÀíÆ÷ÓÅ»¯³ÌÐò¼¯¡£Ò»°ãÀ´Ëµ£¬¸ÃÑ¡ÏîÖ»ÔÚ C# ´úÂë»ùʹÓà P/Invoke ºÍ/»ò²»°²È«µÄ´úÂë½á¹¹Ê±ÓÐÓá£Ä¬ÈÏÖµÊÇ¡°anycpu¡±¡£

    /unsafe
    µ±±»ÆôÓÃʱ£¬¸ÃÑ¡Ïîʹ C# Îļþ¿ÉÒÔÉùÃ÷²»°²È«µÄ×÷Ó÷¶Î§£¬Õâͨ³£ÓÃÓÚ²Ù×Ý C++ ÑùʽָÕë¡£

    /utf8output
    ¸ÃÑ¡Ïî¸æËß±àÒëÆ÷ʹÓà UTF-8 ±àÂëÊä³öÊý¾Ý¡£


    ÐèÒªÁ˽âµÄÊÇ£¬¶ÔÓÚ¾ø´ó¶àÊý .NET ÏîÄ¿¶øÑÔ£¬±í 7 ÖÐÁгöµÄÑ¡ÏîÖ»ÄÜÌṩ·Ç³£Éٵĺô¦¡£¼øÓÚ´Ë£¬Èç¹ûÄúÐèÒª½øÒ»²½µÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ MSDN¡£

    ·µ»ØÒ³Ê×
    С½á
    ±¾ÎÄÏòÄú½éÉÜÁËʹÓà C# ÃüÁîÐбàÒëÆ÷Éú³É³ÌÐò¼¯µÄ¹ý³Ì¡£¾ÍÏñÄúÒѾ­Á˽âµÄÄÇÑù£¬´ó¶àÊý¹¤×÷¿ÉÒÔʹÓÃÁ½¸ö±êÖ¾ - /target ºÍ /reference Íê³É¡£³ýÁË·ÖÎö csc.exe µÄºËÐıêÖ¾ÒÔÍ⣬±¾ÎÄ»¹½âÊÍÁËÏìÓ¦ÎļþµÄºÃ´¦ÒÔ¼°¶àÎļþ³ÌÐò¼¯µÄ½á¹¹¡£

    ¾¡¹Ü±¾ÎÄûÓÐÌṩÓÐ¹Ø csc.exe µÄÿ¸öÑ¡ÏîµÄÈ«²¿ÏêϸÐÅÏ¢£¬µ«ÎÒÏ£ÍûÄúÄܹ»·½±ãµØʹÓà Visual Studio 2005 ÎĵµÁ˽âÆäÓà±êÖ¾¡£

    ×£Äú±àÂëÓä¿ì£¡

    Andrew Troelsen ÊÇһλ Microsoft MVP£¬ËûÔÚ Intertech Training µ£ÈιËÎʺÍÅàѵ½²Ê¦¡£Andrew ´´×÷ÁËÐí¶àÖø×÷£¬ÆäÖаüÀ¨»ñ½±µÄ C# and the .NET Platform Second Edition (Apress 2002)¡£ËûÿÔ¶¼Îª£¨ÕæÇÉ£©MacTech ׫дרÀ¸ÎÄÕ£¬ËûÔÚÕâЩÎÄÕÂÖÐÑо¿ÁËÈçºÎʹÓà SSCLI¡¢Portible.NET ºÍ Mono CLI ·Ö·¢ÔÚ»ùÓÚ Unix µÄϵͳÉϽøÐÐ .NET ¿ª·¢¡£

    תµ½Ô­Ó¢ÎÄÒ³Ãæ


       Êղؠ  ·ÖÏí  
    ¶¥(0)
      




    ----------------------------------------------
    ûÈË°ï棬ÄǾͿ¿×Ô¼º£¬×Ô¼º²ÅÊÇ×îºÃµÄÀÏʦ£¡±¾È˾ܾø»Ø´ðͨ¹ýÕ¾ÄÚ¶ÌÏûÏ¢Ìá³öµÄÎÊÌ⣡

    blog:http://Qr.blogger.org.cn

    µã»÷²é¿´Óû§À´Ô´¼°¹ÜÀí<br>·¢ÌùIP£º*.*.*.* 2005/2/23 15:34:00
     
     GoogleAdSense
      
      
      µÈ¼¶£º´óÒ»ÐÂÉú
      ÎÄÕ£º1
      »ý·Ö£º50
      ÃÅÅÉ£ºÎÞÃÅÎÞÅÉ
      ÔºÐ££ºÎ´Ìîд
      ×¢²á£º2007-01-01
    ¸øGoogle AdSense·¢ËÍÒ»¸ö¶ÌÏûÏ¢ °ÑGoogle AdSense¼ÓÈëºÃÓÑ ²é¿´Google AdSenseµÄ¸öÈË×ÊÁÏ ËÑË÷Google AdSenseÔÚ¡º Dot NET,C#,ASP,VB ¡»µÄËùÓÐÌù×Ó ·ÃÎÊGoogle AdSenseµÄÖ÷Ò³ ÒýÓûظ´Õâ¸öÌù×Ó »Ø¸´Õâ¸öÌù×Ó ²é¿´Google AdSenseµÄ²©¿Í¹ã¸æ
    2024/5/12 16:03:22

    ±¾Ö÷ÌâÌùÊý1£¬·ÖÒ³£º [1]

    ¹ÜÀíÑ¡Ï ÐÞ¸Ätag | Ëø¶¨ | ½âËø | ÌáÉý | ɾ³ý | Òƶ¯ | ¹Ì¶¥ | ×̶ܹ¥ | ½±Àø | ³Í·£ | ·¢²¼¹«¸æ
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) Æì Ï վ µã
    ËÕICP±¸05006046ºÅ¡¶È«¹úÈË´ó³£Î¯»á¹ØÓÚά»¤»¥ÁªÍø°²È«µÄ¾ö¶¨¡·¡¶¼ÆËã»úÐÅÏ¢ÍøÂç¹ú¼ÊÁªÍø°²È«±£»¤¹ÜÀí°ì·¨¡·
    93.750ms