ÒÔÎı¾·½Ê½²é¿´Ö÷Ìâ - ÖÐÎÄXMLÂÛ̳ - רҵµÄXML¼¼ÊõÌÖÂÛÇø (http://bbs.xml.org.cn/index.asp) -- ¡º Dot NET,C#,ASP,VB ¡» (http://bbs.xml.org.cn/list.asp?boardid=43) ---- [תÌû]ʹÓà C# 2.0 ÃüÁîÐбàÒëÆ÷ (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=14725) |
-- ×÷ÕߣºQr -- ·¢²¼Ê±¼ä£º2/23/2005 3:34:00 PM -- [תÌû]ʹÓà 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 ´øÀ´µÄÀÖȤ ´ËÍ⣬Á˽âÔÚÃüÁîÐбàÒë´úÂëµÄ¹ý³Ì£¬¶ÔÓÚ¾ßÓÐÒÔÏÂÌØÕ÷µÄÓû§¿ÉÄÜÓÐÓ㺠• Æ«°®×î¼òµ¥µÄÉú³É .NET Framework Ó¦ÓóÌÐòµÄ·½·¨¡£ • Ï£Íû½Ò¿ª IDE ´¦ÀíÔ´´úÂëÎļþµÄ·½·¨µÄÃØÃÜ¡£ • Ï£ÍûÀûÓà .NET Éú³ÉʵÓù¤¾ß£¬ÀýÈ磬nant »ò msbuild¡£ • ûÓм¯³É¿ª·¢»·¾³£¬ÀýÈ磬Visual Studio£¨µ«Êµ¼ÊÉϾßÓÐÃâ·ÑÌṩµÄ .NET Framework SDK£©¡£ • ÕýÔÚ»ùÓÚ UnixµÄϵͳ£¨ÔÚ¸ÃϵͳÖУ¬ÃüÁîÐÐÊDZØÐëʹÓõŤ¾ß£©ÉÏʹÓà .NET Framework£¬²¢ÇÒÏ£Íû¸üºÃµØÁ˽â Mono ºÍ/»ò Portable .NET ECMA ¼æÈÝ C# ±àÒëÆ÷¡£ • ÕýÔÚÑо¿µ±Ç°Î´¼¯³Éµ½ Visual Studio Öеı¸Ñ¡ .NET ±à³ÌÓïÑÔ¡£ • Ö»ÊÇÏ£ÍûÀ©Õ¹ËûÃÇµÄ C# ±à³ÌÓïÑÔ֪ʶ¡£ ·µ»ØÒ³Ê× ±í 1. csc.exe ÌṩµÄ±ê¼ÇµÄÀà±ð C# ±àÒëÆ÷Àà±ð ¶¨Òå ÊäÈëÎļþ ×ÊÔ´ ´úÂëÉú³É ´íÎóºÍ¾¯¸æ ÓïÑÔ ÔÓÏî ¸ß¼¶ ÔÚÔĶÁ±¾ÎĵĹý³ÌÖУ¬Äú½«Á˽âÿ¸ö±àÒëÆ÷Àà±ðÖдæÔڵĺËÐÄ ±êÖ¾£¨×îÖØÒªµÄ´ÊÊǺËÐÄ£©¡£¶ÔÓÚ´ó¶àÊý¿ª·¢·½°¸£¬¿ÉÒÔ°²È«µØºöÂÔ C# ±àÒëÆ÷µÄºÜ¶à¸ß¼¶Ñ¡Ïî¡£Èç¹ûÄúÐèÒªÓйر¾ÎÄδÓèÌÖÂÛµÄ csc.exe ¹¦ÄܵÄÏêϸÐÅÏ¢£¬Ç뾡¹Ü·ÅÐÄ£¬Äú¿ÉÒÔ²ÎÔÄ Microsoft Visual Studio 2005 Îĵµ°ïÖúϵͳ£¨Ö»Ðë´Ó¡°Search¡±Ñ¡ÏÖÐËÑË÷¡°csc.exe¡±²¢ÉîÈë²éÔÄ£©¡£ ×¢ MSDN ÎĵµÒ²»á¶ÔÄúÒ²ºÜËù°ïÖú£¬ÒòΪËüÃèÊöÁËÈçºÎÔÚ Visual Studio£¨Èç¹û¿ÉÓã©ÄÚ²¿ÉèÖà csc.exe µÄÌØ¶¨Ñ¡Ïî¡£ ·µ»ØÒ³Ê× ×¢ Èç¹ûÄúûÓÐ 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 ×¢ ÉÏÃæµÄÁбíÖ¸ÏòÎҵĵ±Ç° .NET 2.0 ²âÊÔ°æµÄ·¾¶¡£ÄúµÄ·¾¶¿ÉÄÜÒò Visual Studio ºÍ/»ò .NET SDK µÄ°²×°ºÍ°æ±¾µÄ²»Í¬¶øÂÔÓв»Í¬£¬Òò´ËÇëÈ·±£Ö´ÐÐÍêÕûÐÔ¼ì²é¡£ ÔÚ¸üРPath ±äÁ¿Ö®ºó£¬ÇëÁ¢¼´¹Ø±ÕËùÓжԻ°¿òºÍµ±Ç°´ò¿ªµÄÈκΠConsole ´°¿Ú£¬ÒÔ±ãÌá½»ÉèÖá£ÄúÏÖÔÚÓ¦µ±Äܹ»´ÓÈκÎÃüÁîÌáʾִÐÐ csc.exe ºÍÆäËû .NET ¹¤¾ßÁË¡£Òª½øÐвâÊÔ£¬ÇëÊäÈëÒÔÏÂÃüÁ csc -? Èç¹ûÄú¿´µ½ÓдóÁ¿ÐÅÏ¢ÏÔʾ³öÀ´£¬ÄÇôÄú¾Í¿ÉÒÔ¼ÌÐøÁË¡£ ·µ»ØÒ³Ê× Ê×ÏÈ£¬¿ÉÒÔʹÓ÷´Ð±¸Ü»òµ¥¸ö¶Ì»®ÏßÖ¸¶¨ csc.exe µÄÑ¡Ïî¡£Æä´Î£¬ÔÚ / »ò - ÒÔ¼°ËæºóµÄ±êÖ¾Ö®¼ä¾ßÓжîÍâµÄ¿Õ¸ñÊÇ·Ç·¨ µÄ¡£Òò´Ë£¬¡°-help¡±ÊÇÍêÈ«ÕýÈ·£¬¶ø¡°- help¡±¾ÍÐв»Í¨ÁË¡£ÎªÁ˼ÓÒÔ˵Ã÷£¬ÈÃÎÒÃÇʹÓà help ±êÖ¾¼ì²éÍêÕûµÄÃüÁîÐÐÑ¡Ï£º csc -help Èç¹ûÒ»ÇÐÕý³££¬ÔòÄúÓ¦µ±¿´µ½ËùÓпÉÄܵıêÖ¾£¬Èçͼ 1 Ëùʾ¡£
ͼ 1. °ïÖú±êÖ¾ csc -? ºÜ¶àÑ¡Ïî¶¼ÐèÒª¸½¼ÓµÄÐÞÊΣ¬ÀýÈ磬Ŀ¼·¾¶ºÍÎļþÃû¡£ÕâÖÖÐÔÖʵıê־ʹÓÃðºÅ½«±êÖ¾ÓëËüµÄÐÞÊηָô¿ªÀ´¡£ÀýÈ磬/reference Ñ¡ÏîÒªÇó½« .NET ³ÌÐò¼¯µÄÃû³Æ°üÀ¨ÔÚ³ÌÐò¼¯Çåµ¥ÖУº csc /reference:MyLibrary.dll ... ÆäËû±êÖ¾ÔÚÐÔÖÊÉÏÊǶþÔª µÄ£¬ÒòΪËüÃÇ»òÕß±»ÆôÓà (+)£¬»òÕß±»½ûÓà (-)¡£¶þÔª±êÖ¾×ÜÊÇĬÈÏΪËüÃǵĽûÓÃ״̬£¬Òò´ËÄúͨ³£Ö»ÐèҪʹÓüӺűê¼Ç¡£ÀýÈ磬Ҫ½«ËùÓбàÒ뾯¸æ¶¼ÊÓΪ´íÎ󣬿ÉÒÔÆôÓà warnaserror ±êÖ¾£º csc /warnaserror+ ... ±êÖ¾µÄ˳ÐòÎ޹ؽôÒª£¬µ«ÊÇÔÚÖ¸¶¨ÊäÈëÎļþ¼¯ºÏ֮ǰ£¬±ØÐëÁгöËùÓбêÖ¾µÄ¼¯ºÏ¡£ÁíÍâÖµµÃ˵Ã÷µÄÊÇ£¬ÔÚÐÞÊκÍËüµÄ¹ØÁªÊý¾ÝÖ®¼ä¾ßÓжîÍâµÄ¿Õ¸ñÊÇ·Ç·¨ µÄ¡£ÀýÈ磬ÇëʹÓà /reference:MyLibrary.dll£¬¶ø²»ÒªÊ¹Óà /reference:MyLibrary.dll¡£ ·µ»ØÒ³Ê× ±í 2. csc.exe µÄÒÔÊäÈëΪÖÐÐĵÄÑ¡Ïî ÊäÈë±êÖ¾ ¶¨Òå ÊÇ·ñÌØ¶¨ÓÚ C# 2.0£¿ /reference (/r) /addmodule Êä³ö±êÖ¾ ¶¨Òå ÊÇ·ñÌØ¶¨ÓÚ C# 2.0£¿ /target (/t) /doc /delaysign /keyfile /keycontainer /platform ±í 4. /target ±êÖ¾µÄ±äÌå Ä¿±êÐÞÊÎ ¶¨Òå /target:winexe /target:library /target:module Ê×ÏÈ£¬ÇëÔÚÇý¶¯Æ÷ C ÉÏ´´½¨Ò»¸öÃûΪ MyCSharpCode µÄÐÂÎļþ¼Ð¡£ÔÚ¸ÃÎļþ¼ÐÖУ¬´´½¨Ò»¸öÃûΪ MyCodeLibrary µÄ×ÓĿ¼¡£Ê¹ÓÃÄúÑ¡ÔñµÄÎı¾±à¼Æ÷£¨notepad.exe ¾ÍÍêÈ«ºÏºõÐèÒª£©ÊäÈëÒÔÏ´úÂ룬²¢½«¸ÃÎļþ±£´æÎª¸Õ¸Õ´´½¨µÄ C:\MyCSharpCode\MyCodeLibrary Ŀ¼ÖÐµÄ simpleType.cs¡£ // simpleType.cs namespace MyCodeLibrary ÏÖÔÚ£¬´ò¿ªÃüÁîÌáʾ£¬²¢ÇÒʹÓà 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 ´úÂë¿â // asmInfo.cs // A few assembly level attributes. ÒªÖ»±àÒë 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 ×ÓĿ¼ 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 ÐÎʽµÄÀàÐÍÎĵµ ʹÓà /keyfile ½¨Á¢Ç¿Ãû³Æ µ±Ç°Ê¾ÀýµÄ×îºóÒ»ÏîÈÎÎñÊÇΪÎÒÃǵijÌÐò¼¯·ÖÅäÒ»¸öÇ¿Ãû³Æ¡£ÔÚ .NET 1.1 Ï£¬´´½¨Ç¿ÃüÃû³ÌÐò¼¯ÐèҪʹÓà [AssemblyKeyFile] ÊôÐÔ¡£¾¡¹ÜÕâÑù×ö¾ÍºÜºÃÁË£¬µ« C# 2.0 ±àÒëÆ÷ÏÖÔÚÌṩÁË /keyfile ±êÖ¾£¬ÒÔÖ¸¶¨Ç¿Ãû³ÆÃÜÔ¿Îļþ (*.snk) µÄλÖᣠÔÚÇý¶¯Æ÷ C ÉÏ´´½¨Ò»¸öÃûΪ MyKeyPair µÄÐÂÎļþ¼Ð£¬È»ºóʹÓÃÃüÁîÌáʾ¸ü¸ÄÖÁ¸ÃĿ¼¡£½ÓÏÂÀ´£¬Ê¹Óà sn.exe ʵÓù¤¾ßµÄ ‡°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) ºÍ ‡°s Ñ¡ÏîÏÔʾǿÃû³ÆÐÅÏ¢£º secutil /sMyCodeLibrary.dll ÄúÓ¦µ±·¢ÏÖ£¬³ÌÐò¼¯Çåµ¥ÖмǼµÄ¹«Ô¿Öµ±»ÏÔʾΪÈçͼ 6 ËùʾµÄÊä³ö¡£
ͼ 6. ¹«Ô¿ÖµµÄÊä³ö ·µ»ØÒ³Ê× ×¢ ËùÓÐÃüÁîÌáʾ¶¼ÔÊÐíÄúʹÓà Up ºÍ Down ¼ýÍ·¼ü±éÀúÒÔǰµÄÃüÁî¡£ ÏìÓ¦Îļþ£¨ËüÃǰ´ÕÕÔ¼¶¨²ÉÓà *.rsp ÎļþÀ©Õ¹Ãû£©°üº¬ÄúÏ£Íû¹©¸øµ½ csc.exe ÖеÄËùÓÐÑ¡Ïî¡£ÔÚ´´½¨Á˸ÃÎļþÒÔºó£¬Äú¾Í¿ÉÒÔ½«ËüµÄÃû³ÆÖ¸¶¨Îª C# ±àÒëÆ÷µÄΨһѡÏΪÁ˱ãÓÚ˵Ã÷£¬ÏÂÃæÌṩÁËÒ»¸ö½«ÓÃÓÚÉú³É MyCodeLibrary.dll µÄÏìÓ¦Îļþ£¨Çë×¢Ò⣬Äú¿ÉÒÔʹÓà # ·ûºÅÖ¸¶¨×¢ÊÍ£©¡£ # MyCodeLibraryArgs.rsp # Output target and name. # Location of C# files. # Give me an XML doc. # Give me a strong name as well. ¸ø¶¨¸ÃÎļþÒÔºó£¬ÄúÏÖÔھͿÉÒÔʹÓà @ Ñ¡ÏîÖ¸¶¨ 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 ×¢ Èç¹ûÄúÒýÓóÌÐò¼¯£¬¶øÊµ¼ÊÉϲ¢²»Ê¹ÓÃËü£¬ÔòËü½«²»»áÔÚ³ÌÐò¼¯Çåµ¥ÖÐÁгö¡£Òò´Ë£¬Çë²»Òªµ£ÐÄ´úÂëÅòÕÍÎÊÌ⣬ÒòΪËüÃǸù±¾²»´æÔÚ¡£ ·µ»ØÒ³Ê× // simpleTypeClient.cs // Namespace in MyCodeLibrary.dll namespace MyClientApp ÒòΪÎÒÃǵĿͻ§¶ËÓ¦ÓóÌÐòҪʹÓà 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âÊÔÔËÐÐÊä³ö ÒýÓöà¸öÍⲿ³ÌÐò¼¯ Èç¹ûÄúÏ£ÍûÔÚÃüÁîÐÐÒýÓôóÁ¿³ÌÐò¼¯£¬Ôò¿ÉÒÔÖ¸¶¨¶à¸ö /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:\MyCSharpCode Ŀ¼Öд´½¨Ò»¸öÃûΪ MyCodeLibrary2 µÄÐÂÎļþ¼Ð¡£½«ÏÖÓÐµÄ simpleType.cs ºÍ AsmInfo.cs ÎļþµÄ¸±±¾·Åµ½ÐÂĿ¼ÖС£ÏÖÔÚ£¬Ïò SimpleType ÖÐÌí¼ÓÒ»¸öÄܹ»ÏÔʾ¿Í»§¶ËÌṩµÄ×Ö·û´®µÄз½·¨£º /// <summary> ±àÒëÕâЩÎļþ£¬ÒÔ´´½¨Ò»¸öÃûΪ MyCodeLibrary2.dll µÄгÌÐò¼¯£¬ÈçÏÂËùʾ£º csc /t:library /out:MyCodeLibrary2.dll *.cs ×îºó£¬½«ÕâһдúÂë¿âµÄ¸±±¾·Åµ½ MyClient Îļþ¼Ð£¨Í¼ 8£©ÖС£
ͼ 8. MyClient Îļþ¼ÐÖеÄдúÂë csc /t:exe /r:MyCodeLibrary.dll;MyCodeLibrary2.dll *.cs ±àÒëÆ÷¸æËßÎÒÃÇ£¬ÎÒÃÇÒѾÒýÈëÁËÃû³Æ³åÍ»£¬ÒòΪÕâÁ½¸ö³ÌÐò¼¯¶¼¶¨ÒåÁËÒ»¸öÃûΪ SimpleType µÄÀࣺ simpleTypeClient.cs(13,7): error CS0433: The type 'MyCodeLibrary.SimpleType' Õ§¿´ÆðÀ´£¬Äú¿ÉÄÜÈÏΪ¿ÉÒÔͨ¹ýÔÚ¿Í»§¶Ë´úÂëÖÐʹÓÃÍêÈ«ÏÞ¶¨Ãû³ÆÀ´ÐÞ¸´¸ÃÎÊÌâ¡£µ«ÊÇ£¬ÕâÑù×öÎÞ·¨¾ÀÕý¸ÃÎÊÌ⣬ÒòΪÕâÁ½¸ö³ÌÐò¼¯¶¨ÒåÁËÏàͬµÄÍêÈ«ÏÞ¶¨Ãû³Æ (MyCodeLibrary¡£SimpleType)¡£ ʹÓà /reference ±êÖ¾µÄбðÃûÑ¡ÏÎÒÃÇ¿ÉÒÔΪÒýÓõÄÿ¸ö´úÂë¿âÉú³ÉΨһµÄÃû³Æ¡£ÔÚÎÒÃÇÕâÑù×öÖ®ºó£¬ÎÒÃǾͿÉÒÔ¸üпͻ§¶Ë´úÂ룬ÒԱ㽫ij¸öÀàÐÍÓëÌØ¶¨µÄ³ÌÐò¼¯Ïà¹ØÁª¡£ µÚÒ»²½ÊÇÐÞ¸Ä simpleTypeClient.cs Îļþ£¬ÒÔʹÓÃÎÒÃǽ«Í¨¹ýÐ嵀 extern alias Óï·¨ÔÚÃüÁîÐÐÖ¸¶¨µÄ±ðÃû£º // Extern alias statements must be using System; namespace MyClientApp 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 ½ø¶ø£¬/reference Ñ¡ÏîµÄÕâÒ»±äÌå¿ÉÒÔÌṩһÖÖ±ÜÃâÃû³Æ³åÍ»£¨µ±Á½¸ö¾ßÓÐΨһÃû³ÆµÄ³ÌÐò¼¯°üº¬Ãû³ÆÍêÈ«ÏàͬµÄÀàÐÍʱ·¢Éú£©µÄ·½Ê½¡£ ·µ»ØÒ³Ê× ¶àÎļþ³ÌÐò¼¯°üº¬Ò»¸öÖ÷ *.dll£¬Ëü°üº¬³ÌÐò¼¯Çåµ¥¡£¸Ã¶àÎļþ³ÌÐò¼¯µÄÆäËûÄ£¿é£¨°´ÕÕÔ¼¶¨£¬ËüÃDzÉÓà *.netmodule ÎļþÀ©Õ¹Ãû£©±»¼Ç¼ÔÚÖ÷Ä£¿éµÄÇåµ¥ÖУ¬²¢ÇÒÓÉ CLR °´Ðè¼ÓÔØ¡£Æù½ñΪֹ£¬Éú³É¶àÎļþ³ÌÐò¼¯µÄΨһ·½Ê½ÊÇʹÓÃÃüÁîÐбàÒëÆ÷¡£ ΪÁË˵Ã÷¸Ã¹ý³Ì£¬ÇëÔÚ C:\MyCSharpCode Ŀ¼Öд´½¨Ò»¸öÃûΪ MultiFileAsm µÄÐÂ×ÓĿ¼¡£ÎÒÃǵÄÄ¿±êÊÇ´´½¨Ò»¸öÃûΪ AirVehicles µÄ¶àÎļþ³ÌÐò¼¯¡£Ö÷Ä£¿é (Airvehicles.dll) ½«°üº¬µ¥¸öÃûΪ Helicopter µÄÀàÀàÐÍ£¨ÉÔºó¶¨Ò壩¡£³ÌÐò¼¯Çåµ¥±à¼ÁËÒ»¸ö¸½¼ÓÄ£¿é (ufos.netmodule)£¬¸ÃÄ£¿é¶¨ÒåÁËÒ»¸öÃûΪ UFO µÄÀàÀàÐÍ£º // ufo.cs namespace AirVehicles Òª½« ufo.cs ±àÒëΪ .NET Ä£¿é£¬ÇëÖ¸¶¨ /t:module ×÷ΪĿ±êÀàÐÍ£¬Õâ»á×Ô¶¯×ñÑ *.netmodule ÃüÃûÔ¼¶¨£¨Çë»ØÏëһϣ¬Ä¬ÈϵÄÏìÓ¦Îļþ×Ô¶¯ÒýÓà System.Windows.Forms.dll£¬Òò´ËÎÒÃDz»ÐèÒªÏÔʽÒýÓøÿ⣩£º csc /t:module ufo.cs Èç¹ûÄúÒª½« ufo.netmodule ¼ÓÔØµ½ ildasm.exe ÖУ¬Äú»á·¢ÏÖÒ»¸ö¼ÇÔØÁ˸ÃÄ£¿éµÄÃû³ÆºÍÍⲿÒýÓóÌÐò¼¯µÄÄ£¿é¼¶±ðÇåµ¥£¨Çë×¢Ò⣬*.netmodules ûÓÐÖ¸¶¨°æ±¾ºÅ£¬ÒòΪÄÇÊÇÖ÷Ä£¿éµÄ¹¤×÷£©£º .assembly extern mscorlib{...} ÏÖÔÚ£¬Çë´´½¨Ò»¸öÃûΪ helicopter.cs µÄÐÂÎļþ£¬¸ÃÎļþ½«ÓÃÓÚ±àÒëÖ÷Ä£¿é Airvehicles.dll£º // helicopter.cs namespace AirVehicles ¼ÙÉè 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{...} ¶àÎļþ³ÌÐò¼¯µÄʹÓÃÕß¿ÉÒÔ½ÏÉÙ¹ØÐÄËûÃÇÒªÒýÓõijÌÐò¼¯ÓÉ´óÁ¿¶þ½øÖÆÎļþ×é³ÉÕâÒ»ÊÂʵ¡£Êµ¼ÊÉÏ£¬Ôھ䷨ÉϽ«¿´ÆðÀ´ÓëʹÓõ¥Îļþ³ÌÐò¼¯µÄÐÐΪÍêÈ«Ïàͬ¡£ÎªÁËʹ±¾ÎıäµÃ¸üÓÐȤһЩ£¬ÈÃÎÒÃÇ´´½¨Ò»¸ö»ùÓÚ Windows ´°ÌåµÄ¿Í»§¶ËÓ¦ÓóÌÐò¡£ ·µ»ØÒ³Ê× using System; public class MyForm : Form public MyForm() private void btnUseVehicles_Click(object o, EventArgs e) UFO u = new UFO(); private static void Main() ×¢ ÔÚ¼ÌÐø²Ù×÷֮ǰ£¬ÇëÈ·±£½« airvehicals.dll ºÍ ufo.netmodule ¶þ½øÖÆÎļþ¸´ÖƵ½ WinFormClient Ŀ¼ÖС£ Òª½«¸ÃÓ¦ÓóÌÐò±àÒëΪ Windows ´°Ìå¿ÉÖ´ÐÐÎļþ£¬ÇëÈ·±£Ö¸¶¨ winexe ×÷Ϊ /target ±êÖ¾µÄÐÞÊΡ£Çë×¢Ò⣬ÔÚÒýÓöàÎļþ³ÌÐò¼¯Ê±£¬Ö»ÐëÖ¸¶¨Ö÷Ä£¿éµÄÃû³Æ£º csc /t:winexe /r:airvehicles.dll *.cs ÔÚÔËÐÐÄúµÄ³ÌÐò²¢µ¥»÷°´Å¥Ö®ºó£¬Äú¾ÍÓ¦µ±¿´µ½°´ÕÕÔ¤ÆÚÏÔʾµÄÿ¸öÏûÏ¢¿ò¡£Í¼ 9 ÏÔʾÁËÎÒ´´½¨µÄÒ»¸öÏûÏ¢¿ò¡£
ͼ 9. ʾÀýÏûÏ¢¿ò csc /t:winexe /win32icon:HappyDude.ico /r:airvehicles.dll *.cs ´Ëʱ£¬Ó¦µ±¸üпÉÖ´ÐгÌÐò¼¯£¬Èçͼ 10 Ëùʾ¡£
ͼ 10. ¾¹ý¸üеĿÉÖ´ÐгÌÐò¼¯ ±í 5. csc.exe µÄÒÔ×ÊԴΪÖÐÐĵÄÑ¡Ïî csc.exe µÄÒÔ×ÊԴΪÖÐÐĵÄÑ¡Ïî ¶¨Òå /linkresource /win32res ¾¡¹ÜÄú¿Ï¶¨¿ÉÒÔÊÖ¶¯´´½¨ *.resx Îļþ£¬µ«Äú×îºÃʹÓà resgen.exe ÃüÁîÐй¤¾ß£¨»òÕߣ¬Äúµ±È»¿ÉÒÔʹÓà Visual Studio .NET ±¾Éí£©¡£ËäÈ»±¾ÎIJ»´òËãÃèÊö resgen.exe µÄÈ«²¿ÏêϸÐÅÏ¢£¬µ«ÊÇÈÃÎÒÃÇÑÝÁ·Ò»¸ö¼òµ¥µÄʾÀý¡£ ʹÓà /resource ǶÈë×ÊÔ´ ÔÚ MyCSharpCode ÏÂÃæ´´½¨Ò»¸öÃûΪ MyResourceApp µÄÐÂĿ¼¡£ÔÚ¸ÃĿ¼ÖУ¬Ê¹Óà notepad.exe ´´½¨Ò»¸öÃûΪ myStrings.txt µÄÐÂÎļþ£¬²¢ÇÒʹÆä°üº¬ÄúÑ¡ÔñµÄһЩÓÐȤµÄÃû³Æ/Öµ¶Ô¡£ÀýÈ磺 # A list of personal data ÏÖÔÚ£¬Ê¹ÓÃÃüÁîÌáʾ£¬Í¨¹ýÒÔÏÂÃüÁ *.txt Îļþת»»ÎªÒ»¸ö»ùÓÚ XML µÄ *.resx Îļþ£º resgen myStrings.txt myStrings.resx Èç¹ûÄúʹÓà notepad.exe ´ò¿ª¸ÃÎļþ£¬Ôò»áÕÒµ½Ðí¶àÃèÊöÃû³Æ/Öµ¶ÔµÄ XML ÔªËØ£¬ÀýÈ磺 <data name="company"> Òª½«¸Ã *.resx Îļþת»»Îª¶þ½øÖÆµÄ *.resources Îļþ£¬Ö»Ð뽫ÎļþÀ©Õ¹Ãû×÷Ϊ resgen.exe µÄ²ÎÊý½øÐиüУº resgen myStrings.resx myStrings.resources ´Ëʱ£¬ÎÒÃǾßÓÐÁËÒ»¸öÃûΪ myStrings.resources µÄ¶þ½øÖÆ×ÊÔ´Îļþ¡£Í¨¹ý /resource ±êÖ¾¿ÉÒԴﵽʹÓà csc.exe ½«¸ÃÊý¾ÝǶÈëµ½ .NET ³ÌÐò¼¯ÖеÄÄ¿µÄ¡£¼ÙÉèÎÒÃÇÒѾ´´×÷ÁËλÓÚ MyResourceApp Ŀ¼ÖеÄÒÔÏ C# Îļþ (resApp.cs)£º // This simple app reads embedded public class ResApp ÒªÏà¶ÔÓÚÄúµÄ myStrings.resources Îļþ±àÒë¸Ã³ÌÐò¼¯£¬ÇëÊäÈëÒÔÏÂÃüÁ csc /resource:myStrings.resources *.cs ÒòΪÎÒÉÐδָ¶¨ /out ±êÖ¾£¬ËùÒÔÔÚ¸ÃʾÀýÖУ¬ÎÒÃǵĿÉÖ´ÐÐÎļþµÄÃû³Æ½«»ùÓÚ¶¨ÒåÁË Main() µÄÎļþ resApp.exe¡£Èç¹ûÒ»ÇÐÕý³££¬ÔòÔÚÖ´ÐÐÒÔºó£¬ÄúÓ¦µ±·¢ÏÖÀàËÆÓÚͼ 11 µÄÊä³ö¡£
ͼ 11. Êä³ö Èç¹ûÄúÔ¸Òâ¼ÌÐøÑ§Ï°£¬ÇëÔÚ MyCSharpCode Îļþ¼ÐÖд´½¨Ò»¸öÃûΪ FinalExample µÄÐÂĿ¼¡£ ·µ»ØÒ³Ê× ×¢ ±ØÐëÔÚʹÓÃÈκÎÓï¾ä»òÆäËû C# ÀàÐͶ¨Òå֮ǰÁгöËù¶¨ÒåµÄ·ûºÅ¡£ ΪÁËÀûÓó£¼ûµÄʾÀý£¬¼ÙÉèÄúÏ£Íû¶¨ÒåÒ»¸öÃûΪ DEBUG µÄ·ûºÅ¡£Îª´Ë£¬Çë´´½¨Ò»¸öÃûΪ finalEx.cs µÄÐÂÎļþ£¬²¢½«Æä±£´æÔÚ MyCSharpCode\FinalExample Ŀ¼ÖУº // Define a 'preprocessor' symbol named DEBUG. using System; public class FinalExample Çë×¢Ò⣬ÔÚÎÒÃÇʹÓà #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 Óï¾äÒѾ±»×¢Ê͵ô¡£ ·µ»ØÒ³Ê× ±í 6. csc.exe µÄÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ïî csc.exe µÄÒÔµ÷ÊÔΪÖÐÐĵÄÑ¡Ïî ¶¨Òå /warnaserror /warn /nowarn /bugreport // Create an array. // Go out of bounds. ÕýÈçÄú¿ÉÒÔ¿´µ½µÄÄÇÑù£¬ÎÒÃÇÊÔͼʹÓÃÔ½½çË÷Òý·ÃÎÊÎÒÃǵÄÊý×éµÄÄÚÈÝ¡£Èç¹ûÄúÖØÐ±àÒëºÍÔËÐиóÌÐò£¬Ôò»áµÃµ½ IndexOutOfRangeException¡£¾¡¹ÜÎÒÃÇ¿ÉÒÔÃ÷ÏÔµØÖ¸³ö¸Ã´íÎ󣬵«¼ÙÈçÊÇÒ»¸ö²»ÄÇôÃ÷ÏԵĸüΪ¸´ÔӵĴíÎó£¬ÓÖ¸ÃÔõô°ìÄØ£¿ Òªµ÷ÊÔʹÓà csc.exe ´´½¨µÄ³ÌÐò¼¯£¬µÚÒ»²½ÊÇÉú³É°üº¬¸÷ÖÖ .NET µ÷ÊÔʵÓù¤¾ßËùÐèÐÅÏ¢µÄ *.pdb Îļþ¡£Îª´Ë£¬ÇëÊäÈëÏÂÁÐÃüÁËüÃÇÔÚ¹¦ÄÜÉÏÊǵÈЧµÄ£©Ö®Ò»£º csc /debug *.cs ´Ëʱ£¬ÄúÓ¦µ±ÔÚÓ¦ÓóÌÐòĿ¼Öп´µ½Ò»¸öÃûΪ finalEx.pdb µÄÐÂÎļþ£¬Èçͼ 12 Ëùʾ¡£
ͼ 12. Ó¦ÓóÌÐòĿ¼ÖеÄРfinalEx.pdb csc /debug *.cs ÁíÒ»·½Ã棬ָ¶¨ /debug:pdbonly ¿ÉÒÔÉú³ÉÒ»¸ö *.pdb Îļþ£¬ÒÔ¼°Ò»¸öÖ»ÄÜÔÚ³ÌÐòÓɵ÷ÊÔ¹¤¾ßÖ±½ÓÆô¶¯Ê±½øÐе÷ÊԵijÌÐò¼¯£º csc /debug:pdbonly *.cs ÔÚÈκÎÇé¿öÏ£¬¼ÈÈ»Äú¾ßÓбØÐèµÄ *.pdb Îļþ£¬ÄÇôÄú¾Í¿ÉÒÔʹÓÃÐí¶àµ÷ÊÔ¹¤¾ß£¨cordbg.exe¡¢dbgclr.exe »ò Visual Studio£©µ÷ÊÔÓ¦ÓóÌÐò¡£ÎªÁ˲»Æ«Àë±¾ÎĵÄÖØµã½éÉÜÃüÁîÐÐÕâÒ»ÌØÕ÷£¬ÎÒÃǽ«Ê¹Óà cordbg.exe ʵÓù¤¾ßµ÷ÊԸóÌÐò£º cordbg finalEx.exe ÔÚµ÷ÊԻỰ¿ªÊ¼ÒÔºó£¬Äú¾Í¿ÉÒÔʹÓà so£¨µ¥²½Ö´ÐУ©ÃüÁîµ¥²½Ö´ÐÐÿ¸ö´úÂëÐÐÁË¡£µ±Äúµ¥»÷³ö´íµÄ´úÂëÐÐʱ£¬Äú¿ÉÒÔÕÒµ½Èçͼ 13 ËùʾµÄ´úÂëת´¢¡£
ͼ 13. µ¥²½Ö´ÐÐÃüÁî´úÂëת´¢ ×¢ ±¾ÎĵÄÖØµã²»ÊǽâÊÍ .NET µ÷ÊÔ¹¤¾ßµÄÓ÷¨¡£Èç¹ûÄúÏ£ÍûÁ˽âÓйØÔÚÃüÁîÐнøÐе÷ÊԵĹý³ÌµÄ¸ü¶àÐÅÏ¢£¬ÇëÔÚ Visual Studio °ïÖúϵͳÄÚ²éÕÒ¡°cordbg.exe¡±¡£ ·µ»ØÒ³Ê× ±í 7. csc.exe µÄÆäÓàÑ¡Ïî csc.exe µÄÆäÓàÑ¡Ïî ¶¨Òå /checked /codepage /filealign /langversion /main /nostdlib /optimize /platform /unsafe /utf8output ·µ»ØÒ³Ê× ¾¡¹Ü±¾ÎÄûÓÐÌṩÓÐ¹Ø 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 ¿ª·¢¡£ תµ½ÔÓ¢ÎÄÒ³Ãæ |
W 3 C h i n a ( since 2003 ) Æì Ï վ µã ËÕICP±¸05006046ºÅ¡¶È«¹úÈË´ó³£Î¯»á¹ØÓÚά»¤»¥ÁªÍø°²È«µÄ¾ö¶¨¡·¡¶¼ÆËã»úÐÅÏ¢ÍøÂç¹ú¼ÊÁªÍø°²È«±£»¤¹ÜÀí°ì·¨¡· |
78.125ms |