手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©
ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©
摘要:Ô´³ÌÐò×îºÃÓÐ.csproj»ò.vbprojÎļþ£¬Ã»ÓеĻ°£¬Òª»¨Ð©Ê±¼äµ÷ÊÔÏÂÃæÎÒÒÔVB.N...

Ô´³ÌÐò×îºÃÓÐ.csproj»ò.vbprojÎļþ£¬Ã»ÓеĻ°£¬Òª»¨Ð©Ê±¼äµ÷ÊÔ

ÏÂÃæÎÒÒÔVB.NET×öʾÀý½²½âһϣº

¡¡¡¡

´ÓprojÎÒÃÇ¿ÉÒÔ»ñÈ¡ÒÔÏÂÓÐÓÃÐÅÏ¢

¡¡¡¡

SettingsС½ÚÖÐÓкܶàÅäÖÃÑ¡Ï¶ÔӦһЩ±àÒëÆ÷Ñ¡Ïî

<References>С½ÚÖÐÊÇÏîÄ¿µÄÒýÓ㬵Ú3·½Àà¿â×îºÃÓþø¶Ô·¾¶

<Imports>С½ÚÖÐÊÇÒªµ¼ÈëµÄһЩÃüÃû¿Õ¼ä

<Files>С½ÚÖÐÓÐÏîÄ¿µÄËùÓÐÎļþ£¬Ñ¡È¡ BuildAction = "Compile"µÄÎļþ

¡¡¡¡

ÓÃvbc²âÊÔÁËһϣ¬ºÜÈÝÒ×£¬×¢ÒâÒÔϼ¸Ï

rootnamespace

reference

target

imports

¡¡¡¡

¼ÓÉÏbugreport¿ÉÒÔ½«ËùÓеÄÔ´Îļþ´úÂëºÍbug±¨¸æÊä³ö¡£²»´í

¡¡¡¡

¸øÄãÒ»¶Ë±àÒëʾÀý£º

vbc /r:System.dll /r:System.Data.dll /r:System.Drawing.dll /r:System.Web.dll /r:System.Xml.dll /r:binMicrosoft.ApplicationBlocks.Data.dll /r:binExportTechnologies.WebControls.RTE.dll /imports:Microsoft.VisualBasic /imports:System /imports:System.Collections /imports:System.Configuration /imports:System.Data /imports:System.Drawing /imports:System.Web /imports:System.Web.UI /imports:System.Web.UI.HtmlControls /imports:System.Web.UI.WebControls /imports:MMS /rootnamespace:MMS /t:library /out:Truly.MMS.dll /bugreport:bug.log AssemblyInfo.vb Global.asax.vb HDAdd.aspx.vb HDticketLogAdd.aspx.vb MIS.vb PageBase.vb Utils.vb

¡¡¡¡

Èç¹ûûÓÐprojÎļþ£¬ÄÇô¿ÉÒÔÓÃÏÂÃæµÄÃüÁî»ñÈ¡£º

dir /b *.vb > filelist.txt

cscµÄʹÓ÷½·¨¾Í¿¿Äã×Ô¼ºÈ¥×ÁÄ¥ÁË¡£ÕâÑù±àÒë³öÀ´µÄ¸úvsÊÇÓÐ1µãÇø±ðµÄ£¬ÒòΪÎÒÃǺܶàÑ¡ÏîûÓÐÅäÖ㬵«ÊǾ­¹ý²âÊÔ£¬»ù±¾¿ÉÒÔÕý³£¹¤×÷µÄ¡£

-------------------------------------------------------------------------------------------------------

ʹÓà C# 2.0 ÃüÁîÐбàÒëÆ÷

http://msdn.microsoft.com/zh-cn/library/ms379563(vs.80).aspx#mainSection

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

ÊÊÓÃÓÚ£º

Microsoft Visual C# 2.0

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

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

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:WindowsMicrosoft.NETFrameworkv2.0.40607 C:Program FilesMicrosoft Visual Studio 8SDKv2.0Bin

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

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

csc -? ildasm -?

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ÃüÁîÐлù´¡ÖªÊ¶

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

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

csc ¨Chelp csc /help

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©2

ͼ 1. °ïÖú±êÖ¾

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

csc ¨C? csc /?

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

csc /reference:MyLibrary.dll ...

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

csc /warnaserror+ ...

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ÓÃÓÚÖ¸¶¨ÊäÈëºÍ¿ØÖÆÊä³öµÄÑ¡Ïî

ÎÒÃǽ«Òª·ÖÎöµÄµÚÒ»×éÃüÁîÐÐÑ¡ÏîÓÃÓÚÖ¸¶¨±àÒëÆ÷ÊäÈ루±í 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ÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

±àÒë .NET ´úÂë¿â

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

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

cd MyCSharpCodeMyCodeLibrary

»ò

cd C:MyCSharpCodeMyCodeLibrary

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

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

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©3

ͼ 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 Ëùʾ£©ÖС£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©4

ͼ 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 Ëùʾ¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©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 ʵÓù¤¾ßµÄ ‡°k Ñ¡Ïî´´½¨Ò»¸öÃûΪ myKeyPair.snk µÄÐÂÃÜÔ¿¶Ô¡£

sn -k myKeyPair.snk

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

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

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

secutil /sMyCodeLibrary.dll

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©6

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

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ʹÓà 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:MyKeyPairmyKeypair.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

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ʹÓà /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:MyCSharpCodeMyCodeLibraryMyCodeLibrary.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âÊÔÔËÐС£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©7

ͼ 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 ±êÖ¾£¬Ôò½á¹û½«ÀÛ»ýÆðÀ´¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

Àí½â 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£©ÖС£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©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:MyCSharpCodeMyClientMyCodeLibrary.dll' and 'c:MyCSharpCodeMyClientMyCodeLibrary2.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 Ñ¡ÏîµÄÕâÒ»±äÌå¿ÉÒÔÌṩһÖÖ±ÜÃâÃû³Æ³åÍ»£¨µ±Á½¸ö¾ßÓÐΨһÃû³ÆµÄ³ÌÐò¼¯°üº¬Ãû³ÆÍêÈ«ÏàͬµÄÀàÐÍʱ·¢Éú£©µÄ·½Ê½¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ʹÓà /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 ´°ÌåµÄ¿Í»§¶ËÓ¦ÓóÌÐò¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

´´½¨ 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 ÏÔʾÁËÎÒ´´½¨µÄÒ»¸öÏûÏ¢¿ò¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©9

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ͨ¹ý csc.exe ʹÓÃ×ÊÔ´

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

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

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©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 µÄÊä³ö¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©11

ͼ 11. Êä³ö

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

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ʹÓà /define ¶¨ÒåÔ¤´¦ÀíÆ÷·ûºÅ

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

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

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

// 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 Óï¾äÒѾ­±»×¢Ê͵ô¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

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

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

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

0

Ҫ˵Ã÷ /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 Ëùʾ¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©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 ËùʾµÄ´úÂëת´¢¡£

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©13

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

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

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

ÔÓÏî

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

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

2

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

ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©1

·µ»ØÒ³Ê×

С½á

±¾ÎÄÏòÄú½éÉÜÁËʹÓà 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 ¿ª·¢¡£

【ʹÓÃ.NETÃüÁîÐбàÒëÆ÷±àÒëÏîÄ¿£¨ÈçASP.NET¡¢C#µÈ£©】相关文章:

AspNetPager与Socut.Data使用方法

asp.net Google的translate工具翻译 API

asp.net网站首页根据IP自动跳转指定页面的示例

用.NET 2.0压缩/解压功能处理大型数据

Linq to SQL Delete时遇到问题的解决方法

asp.net querystring乱码解决方法

xenocode代码混淆加密的操作步骤

asp.net 因为数据库正在使用的解决方法

ASP.NET中上传并读取Excel文件数据示例

ASP.NET中文件上传下载方法集合

精品推荐
分类导航