ã¢ã»ã³ããªã転éãããã³ãŒã«
ãããŠåœŒããšå ±ã«çãããããªæšæ¶
ãã¬ãŒãè©°ããããšãå¿ããªãã§ãã ãã
ããã±ãŒãžã«ïŒ
ãã®èšäºã§ã¯ãMicrosoft .NETãã¯ãããžã¹ã¿ãã¯ã«çŠç¹ãåœãŠãããšãçŽã¡ã«äºçŽããŸãã
ãããžã§ã¯ãã®ãµãã»ãããããŸããŸãªãœãªã¥ãŒã·ã§ã³ã§äœ¿çšããå§ããããšããããããŸãã
ååãšããŠãè¿é£ã®ãããžã§ã¯ãã§äœãæçšãªãã®ãèŠã€ããããã°ã©ããŒã¯ãæåã¯æ°ã«ããŸãã-libãã©ã«ããŒïŒdllãã¢ã»ã³ããªãªã©ïŒãäœæããããã«å ã®ãœãªã¥ãŒã·ã§ã³ããã³ã³ãã€ã«æžã¿ã¢ã»ã³ããªãé 眮ããŸãã æéãçµã€ã«ã€ããŠããããæã䟿å©ãªãªãã·ã§ã³ã§ã¯ãªãããšãæããã«ãªããŸãããã®çç±ã¯æ¬¡ã®ãšããã§ãã
- å ã®ãœãªã¥ãŒã·ã§ã³ã¯ããæ¶è²»è ããèæ ®ããã«ç¬èªã®æ¹åã§éçºãéå§ããŸããæ°ããäŸåé¢ä¿ãè¿œå ããã.netããŒãžã§ã³ãæŽæ°ãããŸãã ããžã§ãŒã¯ã;
- ãæ¶è²»è ãã«ã€ããŠèããå Žåã§ããéèŠãªæŽæ°ãŸãã¯æ°ããããŒãžã§ã³ãåºããšãã«ã¢ã»ã³ããªãæŽæ°ããã®ãå¿ããè€æ°ã®ã¢ã»ã³ããªãããããããã®éã«ããã€ãã®äŸåé¢ä¿ããããšããã¹ãŠãæªåããŸã-1ã€ã®ã¢ã»ã³ããªãæŽæ°ãããšãå®è¡æé å¥ã®ã¢ã»ã³ããªã®ããŒãžã§ã³ãééã£ãŠããå¯èœæ§ããããŸãã
- å ã®ãœãªã¥ãŒã·ã§ã³ã¯çŸåšéçºãããŠããŸããã
ããããã¹ãŠã®åé¡ã«å¯Ÿããçãã¯ããããžã§ã¯ããåå¥ã®ãœãªã¥ãŒã·ã§ã³ã«æã¡èŸŒã¿ãå ±éã®ã¢ã»ã³ããªãå«ãNuGetããã±ãŒãžãäœæãããããã®ã¢ã»ã³ããªã®éçºãã©ãã€ã ãå€æŽããããšã§ãã æŠããŠãããã¯ãã¹ãŠNuGetãªãã§å®è¡ã§ããŸãããããŸãé¢çœããããŸãããNuGetããã±ãŒãžãããã«ããµãŒããŒã§ã®ãããžã§ã¯ãã®ã³ã³ãã€ã«ãšäžç·ã«èªåçã«ãã«ããããå¿ èŠãªãã€ãã¹ã«ãšããºããã¹ãŠå«ãŸããããšã確èªããæ¹æ³ç©èªã
NuGetããã±ãŒãžã®äœæ
NuGetããã±ãŒãžã®äœæããã»ã¹ã¯éåžžã«ç°¡åã§ãã äžè¬çãªçè«éšåå šäœã«ã¢ã¯ã»ã¹ã§ã ãäžè¬ã«ç解ã§ããŸãã ããã±ãŒãžã¯ãã³ã³ãã€ã«ãããã¢ã»ã³ããªã ãã§ãªãããããã°ã·ã³ãã«ãç»åãªã©ãããŸããŸãªã³ã³ãã³ããããã¯ããããã«äœ¿çšã§ããŸãã ãªãœãŒã¹ãããã«ã¯ãœãŒã¹ã³ãŒãã§ãã
ãã®èª¬æã§ã¯ãã³ã³ãã€ã«æžã¿ã¢ã»ã³ããªã®ããã±ãŒãžã³ã°ãšããæãå·®ãè¿«ã£ãåé¡ã«éå®ããŠããŸãã
æåã®NuGetããã±ãŒãžã®æºå
ãã«ããµãŒããŒã§NuGetããã±ãŒãžã®èªåäœæãã»ããã¢ããããã«ã¯ãããã±ãŒãžã®æåã®ããŒãžã§ã³ãã調çãããå¿ èŠããããŸãã ããã±ãŒãžãäœæããæãç°¡åã§ç解ããããæ¹æ³ã¯ãããã±ãŒãžã®å 容ã説æããNuSpecãã¡ã€ã«ã䜿çšããããšã§ãã ãã®NuSpecãã¡ã€ã«ã¯ããŸããŸãªæ¹æ³ã§ååŸã§ããŸãã
- ä»ã®äººã®äŸãåãäžããŠä¿®æ£ããŠãã ããã
- NuGet.exeãŠãŒãã£ãªãã£ã§çæããŸãïŒã³ãã³ããNuGet.exe specãïŒã
- NuGet Package Explorer GUIãŠãŒãã£ãªãã£ã§æ°ããããã±ãŒãžãäœæããããæ¢åã®å€éšããã±ãŒãžãéãããã¡ã¿ããŒã¿ã«ååãä»ããŠä¿å...ãã³ãã³ãã䜿çšããŠä¿®æ£ããŠä¿åããŸãã
ååãšããŠãGUIã§NuSpecãã¡ã€ã«ã®äœæå šäœãå®äºããããšã¯å¯èœã§ãããNuSpecã®åäœãç解ããããšã¯äŸç¶ãšããŠåœ¹ç«ã¡ãŸãã
ããšãã°ãç¥èªä»ãã®NuSpecãã¡ã€ã«ã®1ã€ã¯æ¬¡ã®ããã«ãªããŸãã
NuSpecãã¡ã€ã«ã®å
容
<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"> <metadata> <id>NewPlatform.Flexberry.ORM</id> <version>2.1.0-alpha1</version> <title>Flexberry ORM</title> <authors>New Platform Ltd</authors> <!-- ... --> <description>Flexberry ORM package.</description> <releaseNotes> ... </releaseNotes> <copyright>Copyright New Platform Ltd 2015</copyright> <tags>Flexberry ORM</tags> <dependencies> <dependency id="NewPlatform.Flexberry.LogService" version="1.0.2" /> <!-- ... --> <dependency id="SharpZipLib" version="0.86.0" /> </dependencies> </metadata> <files> <!-- ... --> <file src="Debug-Net45\ICSSoft.STORMNET.DataObject.dll" target="lib\net45\ICSSoft.STORMNET.DataObject.dll" /> <file src="Debug-Net45\ICSSoft.STORMNET.DataObject.xml" target="lib\net45\ICSSoft.STORMNET.DataObject.xml" /> <!-- ... --> </files> </package>
äžéšã®ã»ã¯ã·ã§ã³ã«é¢ãã説æã次ã«ç€ºããŸãã
- Idã¯ãè¡çªãé¿ããããã«ããã¹ãŠã®ããã±ãŒãžã®å ±éããŒã ã¹ããŒã¹å ã§äžæã§ãªããã°ãªããŸããã 誰ããããã±ãŒãžã®ååã§äŒç€Ÿã®ååã瀺ã ã次ã«ãããžã§ã¯ãã®ååãšç¹å®ã®è£œåã瀺ããŸããã 誰ãã¯æ°ã«ããŸããã
- ããŒãžã§ã³ã«é¢ããŠã¯ã ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã®ååã䜿çšããããšããå§ãããŸãã ããŒã ã§éçºããå°ããªã«ãŒã«-ãã¹ãŠã®ãã¬ãªãªãŒã¹ããŒãžã§ã³ïŒ3ã€ã®æ°åã«å ããŠãããšãã°alpha1ãªã©ïŒããããã°æ§æã§çµã¿ç«ãŠãããã¢ã»ã³ããªãšãªãªãŒã¹ã§ããããå ¬éããŸãããªãªãŒã¹äžã
- ãªãªãŒã¹ããŒãïŒreleaseNotesïŒ-éåžžã«äŸ¿å©ãªããšã§ããå¿ ãåã®ããŒãžã§ã³ããå€æŽããããã®ãããã«æžããŠãã ããã ãŠãŒã¶ãŒã¯ãåæŽæ°ã§åŸããããã®ãç解ããå¿ èŠããããŸãã
- äŸåé¢ä¿ äŸåé¢ä¿ã説æãããšãã¯ãããã±ãŒãžã®ã€ã³ã¹ããŒã«æ¹æ³ã«ã€ããŠèããå¿
èŠããããŸãããŠãŒã¶ãŒãå¿
èŠãªã®ã¯ããã±ãŒãžã ãã§ããã以å€ã¯å¿
èŠãªãå ŽåãäŸåé¢ä¿ã¯ãããŸããã SharpZipLibãªã©ã®å¥ã®ããã±ãŒãžãããå Žåã«ã®ã¿ã¢ã»ã³ããªãæ©èœããå Žåããã®äŸåé¢ä¿ãç»é²ããå¿
èŠããããŸãã SharpZipLibã¯ç¬èªã®äŸåé¢ä¿ãæã¡ãèªå®
ã§æå®ããªããŠããã€ã³ã¹ããŒã«äžã«ãŠãŒã¶ãŒã«ãé£ã¶ãããšãç解ããããšãéèŠã§ãã
ã€ã³ã¹ããŒã«ã¯ååž°çã«è¡ããããããä»®æ³çãªç¶æ³ã®ããããã®ãŠãŒã¶ãŒã¯1ã€ã®ããã±ãŒãžã®ã€ã³ã¹ããŒã«ãéå§ã§ããäŸåé¢ä¿ãä»ããŠ100ãè¶ ããããã±ãŒãžãã€ã³ã¹ããŒã«ãããŸãã ããã±ãŒãžã®ã€ã³ã¹ããŒã«äžãäŸåããã±ãŒãžã®ããŒãžã§ã³ã®éžæã¯éåžžã«æ³šæãå¿ èŠã§ãã ããŒãžã§ã³çªå·ãæå®ããªãå Žåãææ°ã®ãªãªãŒã¹ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããŸãããã以å€ã®å Žåã¯ãäŸåé¢ä¿ã§æ瀺çã«æå®ãããããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããŸãã ãšããã§ãæã è€æ°ã®ç¡é¢ä¿ãªããã±ãŒãžã䜿çšããå Žåãå¿ èŠãªããã±ãŒãžã«äŸåãã空ã®ããã±ãŒãžãäœæãããã®ããã±ãŒãžãç¬èªã«ã€ã³ã¹ããŒã«ã§ããŸããæ®ãã¯ããèªäœã®åŸã«ã€ã³ã¹ããŒã«ãããŸãã - ãã¡ã€ã«ã®èª¬æã«ã¯ãç¹å®ã®ååãŸãã¯ãã¹ã¯ãå«ãŸããå ŽåããããŸãã å¥çŽã«åŸã£ãŠãã³ã³ãã³ãã¿ã€ãã.netãã¬ãŒã ã¯ãŒã¯ã®ããŒãžã§ã³ãªã©ãã¿ãŒã²ããã«èšè¿°ãããŠããå Žåãæ£ããããã±ãŒãžæ§é ãéµå®ããããšã匷ããå§ãããŸãã ãã¡ã€ã«ãžã®ãã¹ãæå®ããéã®srcå±æ§ã§ã¯ãããã±ãŒãžããã±ãŒãžã³ã°ã³ãã³ããå®è¡ãããã³ã³ããã¹ãã§çŸåšã®ãã£ã¬ã¯ããªããéå§ããå¿ èŠãããããšãç解ããããšãéèŠã§ãã
NuSpecãã¡ã€ã«ã®æºåãã§ããããããã±ãŒãžã®ãã©ã€ã¢ã«äœæãéå§ã§ããŸãã ãããè¡ãã«ã¯ãnuget pack MyAssembly.nuspecãšããåçŽãªNuGet.exeãŠãŒãã£ãªãã£ã³ãã³ããå®è¡ããŸãã
ãããã£ãŠãåæãããŠãããæåã®ããã±ãŒãžããŸãã¯ããããã¿ã€ãããã±ãŒãžããã€ãŸãNuGetããã±ãŒãžãããŒãžã£ãŒãŸãã¯NuGet.exeã䜿çšããŠãããžã§ã¯ãã§ã®ã€ã³ã¹ããŒã«ã«äœ¿çšã§ããnupkgãã¡ã€ã«ãååŸããå¿ èŠããããŸãã
æ¢è£œããã±ãŒãžã®å±ç€º
ãã®ãããäœããã®ãããã±ãŒãžé åžãã£ãã«ããéããŠãŠãŒã¶ãŒã«äœããã®åœ¢ã§é ä¿¡ããå¿ èŠãããããã±ãŒãžããããŸãã ã»ãšãã©ã®ãŠãŒã¶ãŒã¯Visual Studioãä»ããŠããã±ãŒãžãã€ã³ã¹ããŒã«ãããšèããŠããŸãã çµã¿èŸŒãŸããNuGetããã±ãŒãžãããŒãžã£ãŒã¯ãããã±ãŒãžãé 眮ããããã®2ã€ã®ãªãã·ã§ã³ãç解ããŸãã
- ãããã¯ãŒã¯çµç±ã§å©çšå¯èœãªããã±ãŒãžã®ã£ã©ãªãŒã
- Windowsãã©ã«ããŒïŒããŒã«ã«ãŸãã¯ãããã¯ãŒã¯ïŒã
èšå®ã«ç¬èªã®ããã±ãŒãžãœãŒã¹ãè¿œå ã§ããŸããããã±ãŒãžãã€ã³ã¹ããŒã«ãŸãã¯åŸ©å ãããšãã«ãç®çã®IDãèŠã€ãããŸã§é çªã«ã¹ãã£ã³ãããŸãã åãïŒïŒïŒããã±ãŒãžãè€æ°ã®ãœãŒã¹ã«ããå Žåã®ãªãã·ã§ã³ã¯ãŸã£ãã蚱容ã§ããŸãã
ããã±ãŒãžãé åžããæãç°¡åãªãªãã·ã§ã³ã¯ããããã¯ãŒã¯ãã©ã«ããŒãäœæããããã«ããã±ãŒãžãé 眮ããããšã§ãã
NuGetã䜿çšãããšãããã±ãŒãžhttps://nuget.orgã®äžè¬çãªã®ã£ã©ãªãŒã ãã§ãªããç¬èªã®ã®ã£ã©ãªãŒãäœæããããšãã§ããããã httpsïŒ//nuget.orgã§äœ¿çšãããŠããå Žæã«åããšã³ãžã³ãå±éã§ããŸãã ã ç§ãã¡ã®ããŒã ã¯ãã®ãªãã·ã§ã³ã奜ãã§ããŸãããã®å ŽåãããŠã³ããŒãçµ±èšã远跡ãããµã€ããéããŠèš±å¯ã管çããããšãå¯èœã«ãªããæçµçã«ã¯ãšãŠãçŸããããã§ãã
ã®ã£ã©ãªãŒã®èšçœ®ã«ã¯ãå°ãªããšãæ¿èªã®åé¡ã«ãããŠãã¿ã³ããªã³ãšã®å°ããªãã³ã¹ãå¿ èŠã«ãªãå ŽåããããŸãããããã«ã€ããŠè€éãªããšã¯äœããããŸããã ããã±ãŒãžã¯NuGet.orgãšåãæ¹æ³ã§å ¬éãããŸããã®ã£ã©ãªãŒãµã€ããæŽæ°ãããšãã¯ãããŠã³ããŒãæžã¿ã®ããã±ãŒãžã§ã¢ãŒã«ã€ãã倱ãããªãããã«ããããšãéèŠã§ãããããã¯ãµã€ããã£ã¬ã¯ããªã«ä¿åãããŸãã ãã®å ŽåããŠãŒã¶ãŒçšã«NuGetããã±ãŒãžãããŒãžã£ãŒãèšå®ãããšã次ã®ããã«ãªããŸãã
ããã±ãŒãžã®ããŒã«ã«ãœãŒã¹ããããšãã°åãããŒã«ã«ãããã¯ãŒã¯äžã®ãŠãŒã¶ãŒã«è¿ãå ŽåãäŸåé¢ä¿ãæã€ãã¹ãŠã®ããã±ãŒãžãããŠã³ããŒãããããšããå§ãããŸããããã«ãããæ°ãããŠãŒã¶ãŒã®ããã±ãŒãžãããŠã³ããŒãããæéãççž®ãããŸãã äŸåããã±ãŒãžããnupkgãã¡ã€ã«ãèŠã€ããã®ã¯éåžžã«ç°¡åã§ã-ãããã¯åžžã«ãããã®ããã±ãŒãžãã€ã³ã¹ããŒã«ãããŠããããã±ãŒãžãã©ã«ããŒïŒéåžžã¯slnãã¡ã€ã«ããããã£ã¬ã¯ããªïŒã«ãããŸãã ãŸããããã±ãŒãžãœãŒã¹ã®èšå®ãŠã£ã³ããŠã§ã¯é åºãéèŠã§ããããã±ãŒãžãèšå®ã§æå®ãããé åºã§åŸ©å ããããšãã¹ã¿ãžãªã¯ãœãŒã¹ãå埩åŠçããŸãã ãããã£ãŠãããã±ãŒãžãããŒã«ã«ã§ã®ã¿å©çšå¯èœãªå Žåã¯ãnuget.orgãžã®äžå¿ èŠãªèŠæ±ããªãããã«ãæåã«ãœãŒã¹ãé 眮ããŸãã
NuGet Packet Factory
ããããã¿ã€ãããã±ãŒãžããäœæããããããã±ãŒãžã®é åžãã£ãã«ãã確ç«ãããããããŠã¹ã®æåã®ã¯ãªãã¯ã§ææ°ã®NuGetããã±ãŒãžãååŸã§ããããã«ãããã±ãŒãžã®ã¢ã»ã³ããªãèªååããããšãã§ããŸãã
Team Foundation Server 2013/2015ã®å Žåããããã©ã®ããã«è¡ãããããèŠãŠã¿ãŸãããã ä»ã®åæ§ã®CIã·ã¹ãã ã®å Žåãããã»ã¹ã¯åæ§ã«ãªããŸãã
ãã«ãå®çŸ©ïŒXAMLïŒããããã£ã§ããã«ããæåããå Žåã«å®è¡ãããPowerShellã¹ã¯ãªãããæå®ã§ããŸãã ãã®ã¹ã¯ãªããã§ãããã«ãŒããåŒã³åºããNuSpecãã¡ã€ã«ãžã®ãã¹ããã©ã¡ãŒã¿ãŒãšããŠæž¡ããŸãã
èªåã§æ確ã«ããå¿ èŠãããããã€ãã®ãã€ã³ãããããŸããNuGet.exeèªäœãšå¿ èŠãªãã¹ãŠã®ãã¡ã€ã«ïŒå°ãªããšãæ§æãã¡ã€ã«ïŒã¯ã©ãã«ãããNuSpecãã¡ã€ã«ã¯ã©ãã«ãããŸããïŒ äžæ¹ã§ã¯ãNuGet.exeããã«ããµãŒããŒäžã®ç¹å®ã®å Žæã«é 眮ããããšããäºå®ã«äŸåã§ããŸãããè€æ°ã®ãã«ããµãŒããŒãããããããã管çããå¿ èŠããªãå Žåã¯ãNuGet.exeããœãŒã¹ç®¡çã«é 眮ãããã®å Žæã«ãã£ã¬ã¯ããªãè¿œå ããã®ãæãç°¡åã§ããã«ããå®è¡ãããã¯ãŒã¯ã¹ããŒã¹ã§ã NuSpecã«ã€ããŠã¯ãslnãã¡ã€ã«ã®é£ã«çœ®ããŠãããšããœãªã¥ãŒã·ã§ã³ãšã¯ã¹ãããŒã©ãŒãããã°ããã¢ã¯ã»ã¹ã§ããããã«ããœãªã¥ãŒã·ã§ã³ã¢ã€ãã ã«å«ããããšãã§ããŸãã
è€æ°ã®ãœãªã¥ãŒã·ã§ã³ããããè€æ°ã®ããã±ãŒãžãäœæããäºå®ãããå Žåã¯ã1ã€ã®å ±éã®PowerShellã¹ã¯ãªãããå®è£ ããããšããå§ãããŸãããã®ã¹ã¯ãªããã¯ãNuSpecãã¡ã€ã«ãžã®ãã¹ããã©ã¡ãŒã¿ãŒãšããŠåãåããŸãã
以äžã¯ããã®ãããªã¹ã¯ãªããããã®æç²ã§ãã
PowerShellã¹ã¯ãªããããã®æç²
# Create NuGet Package after successfully server build. # Enable -Verbose option for this script call. [CmdletBinding()] Param( # Disable parameter. # Convenience option so you can debug this script or disable it in # your build definition without having to remove it from # the 'Post-build script path' build process parameter. [switch] $Disable, # This script used NuGet.exe from current directory by default. # You can change this path to meet your needs. [String] $NuGetExecutablePath = (Get-Item -Path ".\" -Verbose).FullName + "\NuGet.exe", $BinariesDirectoryPostfixes = @("\Debug", "\Release"), # Path to the nuspec file. Path relative TFS project root directory. [Parameter(Mandatory=$True)] [String] $NuspecFilePath, # Disable Doxygen. [switch] $NoDoxygen # ... # Go, go, go! $nugetOutputLines = & $NuGetExecutablePath pack $realNuspecFilePath -BasePath $basePath -OutputDirectory $outputDirectory -NonInteractive; ForEach ($outputLine in $nugetOutputLines) { Write-Verbose $outputLine; } # ...
ã¹ã¯ãªããã§ã¯ãçžå¯Ÿãã¹ã絶察ãã¹ã«å€æããæäœãå®è¡ãããŸãïŒã¹ã¯ãªããã®å®è¡æã«CIã·ã¹ãã ã«ãã£ãŠç€ºããã䜿çšå¯èœãªå€æ°ã®èª¬æãç°¡åã«èŠã€ããããšãã§ããŸãïŒã å Žåã«ãã£ãŠã¯ããã®ã¹ã¯ãªããå ã®NuSpecãã¡ã€ã«ã®å€æŽãå¿ èŠã§ãã ããšãã°ããã®æ¹æ³ã§ãããŸããŸãªæ§æïŒä»»æã®CPUãx86ïŒã®ããã±ãŒãžã®äœæãåŠçã§ããŸãã
å®éãããã¯NuGetããã±ãŒãžãäœæããããã®èªåã¡ã«ããºã ãã»ããã¢ããããŸãã ãã«ããµãŒããŒã§ã¢ã»ã³ããªãéå§ãããã¹ãŠãæ©èœããããšã確èªããŸãã ãããã°æ å ±ãååŸããã«ã¯ãäœãåé¡ãçºçããå Žåããã«ãå®çŸ©èšå®ã®ã¹ã¯ãªãããã©ã¡ãŒã¿ãŒã«âVerboseãèšè¿°ããããšãå¿ããªãã§ãã ããã å®æããããã±ãŒãžãå ±æãªãœãŒã¹ãŸãã¯ã®ã£ã©ãªãŒã«æ³šããæåã®ãŠãŒã¶ãŒãæåŸ ããŸãã
ããã»ã¹ã®åŸ®åŠã
圌ããèšãããã«ããããã°ã©ããŒã®äž»ãªä»äºã¯å®ç§äž»çŸ©è ã殺ãããšã§ããã å éšã®å®ç§äž»çŸ©è ããŸã givenããŠããªããã°ã次ã®ç¹ã圹ã«ç«ã€ã§ãããã
NuGetããã±ãŒãžãäœæããæ©èœã«å ããŠãåããã±ãŒãžã®ãã«ããµãŒããŒã®ã¹ã¯ãªããã¯ãã³ãŒãå ã®XMLã³ã¡ã³ãã«åºã¥ããŠèªåããã¥ã¡ã³ããçæãããŠãŒãã£ãªãã£ãå®è¡ã§ããŸãã ãã®æ©èœã¯ãããã±ãŒãžã®åããŒãžã§ã³ã«ç¬èªã®ããŒãžã§ã³ã®èªåããã¥ã¡ã³ãããããšããæå³ã§äŸ¿å©ã§ãããŠãŒã¶ãŒãç°ãªãããŒãžã§ã³ã®NuGetããã±ãŒãžã䜿çšãããšäŸ¿å©ã§ãã Doxygenã䜿çšããŠèªåããã¥ã¡ã³ããçæããŸã ã èªåããã¥ã¡ã³ãã«é¢ããã¹ã¯ãªããã»ã¯ã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
èªåããã¥ã¡ã³ããçæããããã®PowerShellã¹ã¯ãªããããã®æç²
if($NoDoxygen) { Write-Verbose "Doxygen option is disabled. Skip generation of the project documentation."; } else { Write-Verbose "Doxygen option is enabled. Start documentation generation."; # Copy doxygen config file. $doxyConfigSourcePath = Join-Path -Path $toolsFolderPath -ChildPath "DoxyConfig" -Resolve; $doxyConfigDestinationPath = Join-Path -Path $Env:TF_BUILD_BINARIESDIRECTORY -ChildPath "DoxyConfig"; # Modify doxigen config file according with given nuspec. $nuspecXml = [xml](Get-Content $NuspecFilePath); $doxyConfig = Get-Content -Path $doxyConfigSourcePath; $projectName = $nuspecXml.GetElementsByTagName("title").Item(0).InnerText + " " + $nuspecXml.GetElementsByTagName("version").Item(0).InnerText; $doxyConfig = $doxyConfig -replace "FlexberryProjectName", $projectName; $projectLogoPath = Join-Path -Path $toolsFolderPath -ChildPath "logo.png" -Resolve; $doxyConfig = $doxyConfig -replace "FlexberryProjectLogo", $projectLogoPath -replace "\\", "/"; $doxyConfig = $doxyConfig -replace "FlexberryOutputDirectory", $Env:TF_BUILD_BINARIESDIRECTORY -replace "\\", "/"; $doxyConfig = $doxyConfig -replace "FlexberryInputDirectory", $Env:TF_BUILD_SOURCESDIRECTORY -replace "\\", "/"; $doxyWarnLogFilePath = Join-Path -Path $Env:TF_BUILD_BINARIESDIRECTORY -ChildPath "doxygen_log.txt"; $doxyConfig = $doxyConfig -replace "FlexberryWarnLogFile", $doxyWarnLogFilePath -replace "\\", "/"; $doxyConfig | Out-File $doxyConfigDestinationPath default; # Run doxygen. $doxygenExecutablePath = Join-Path -Path $toolsFolderPath -ChildPath "doxygen.exe" -Resolve; $doxygenOutputLines = & $doxygenExecutablePath $doxyConfigDestinationPath ForEach ($outputLine in $doxygenOutputLines) { Write-Verbose $outputLine; } Write-Verbose "Documentation generation done. Packing to the archive."; # Do archive. $archiveSourceFolder = Join-Path -Path $Env:TF_BUILD_BINARIESDIRECTORY -ChildPath "html" -Resolve; $archiveFileName = $nuspecXml.GetElementsByTagName("id").Item(0).InnerText + "." + $nuspecXml.GetElementsByTagName("version").Item(0).InnerText; $archiveDestinationFolder = Join-Path -Path $Env:TF_BUILD_BINARIESDIRECTORY -ChildPath ($archiveFileName + ".zip"); Add-Type -assembly "system.io.compression.filesystem"; [io.compression.zipfile]::CreateFromDirectory($archiveSourceFolder, $archiveDestinationFolder); # Remove html documentation files. Remove-Item $archiveSourceFolder -recurse; Write-Verbose "Done."; }
2çªç®ã®é ç®ã¯ãç°ãªãããŒãžã§ã³ã®.netãã¬ãŒã ã¯ãŒã¯ã®ç°ãªãããŒãžã§ã³ã®ã¢ã»ã³ããªã1ã€ã®ããã±ãŒãžã«ããã±ãŒãžåãããŠããå Žåããããžã§ã¯ãã®ã¢ã»ã³ããªã«é¢ä¿ããŸãã
ããªãã¯ã¯ããã«ããµãŒããŒã«.netãã¬ãŒã ã¯ãŒã¯ã®ããŸããŸãªããŒãžã§ã³ã®ã¢ã»ã³ããªã匷å¶çã«ãã«ãããããšããå§ãŸããŸãã æ°ããjsonãããžã§ã¯ããã¡ã€ã«åœ¢åŒïŒASP.NET5ïŒã§ã¯ãªããcsproj圢åŒã§ã¢ã»ã³ãã«ããããããžã§ã¯ããæ€èšããŠãã ããã Visual Studioã¯ãã¢ã»ã³ããªæ§æã¡ã«ããºã ããµããŒãããŠããŸãã éåžžããããã°ãšãªãªãŒã¹ã®2ã€ã®æ§æã䜿çšãããŸãããåãã¡ã«ããºã ã«ããã.netããŒãžã§ã³ã®åãæ¿ããæ§æã§ããŸãã
ç¬èªã®æ§æãäœæã§ããŸãã æ®å¿µãªãããå¿ èŠãªãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã埮調æŽããã«ã¯ãcsprojãã¡ã€ã«ãéããŠãå°ãªããšãåæ§æã»ã¯ã·ã§ã³ã§TargetFrameworkVersionãèšå®ããå¿ èŠããããŸãã
.csprojãã¡ã€ã«ããã®æç²
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug-Net35|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug-Net35\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> <DocumentationFile>bin\Debug-Net35\LogService.XML</DocumentationFile> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-Net35|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release-Net35\</OutputPath> <DefineConstants>TRACE</DefineConstants> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <DocumentationFile>bin\Release-Net35\LogService.XML</DocumentationFile> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Net40|AnyCPU'"> <DebugSymbols>true</DebugSymbols> <OutputPath>bin\Debug-Net40\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <DocumentationFile>bin\Debug-Net40\LogService.XML</DocumentationFile> <DebugType>full</DebugType> <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Net45|AnyCPU'"> <DebugSymbols>true</DebugSymbols> <OutputPath>bin\Debug-Net45\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <DocumentationFile>bin\Debug-Net45\LogService.XML</DocumentationFile> <DebugType>full</DebugType> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release-Net40|AnyCPU'"> <OutputPath>bin\Release-Net40\</OutputPath> <DefineConstants>TRACE</DefineConstants> <DocumentationFile>bin\Release-Net40\LogService.XML</DocumentationFile> <Optimize>true</Optimize> <DebugType>pdbonly</DebugType> <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release-Net45|AnyCPU'"> <OutputPath>bin\Release-Net45\</OutputPath> <DefineConstants>TRACE</DefineConstants> <DocumentationFile>bin\Release-Net45\LogService.XML</DocumentationFile> <Optimize>true</Optimize> <DebugType>pdbonly</DebugType> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <PlatformTarget>AnyCPU</PlatformTarget> <ErrorReport>prompt</ErrorReport> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup>
Visual Studioã®æ§æã¯ãäž»ã«ããŒã«ããŒã§åãæ¿ããããŸã;ãµãŒããŒäžã®ã¢ã»ã³ããªå®çŸ©ã§ã¯ãé çªã«ã³ã³ãã€ã«ãããè€æ°ã®æ§æãäžåºŠã«éžæã§ããŸãã
.netãã¬ãŒã ã¯ãŒã¯ã®ç°ãªãããŒãžã§ã³ã®ã³ãŒããç°ãªãå Žåã¯ããã£ã¬ã¯ãã£ãã䜿çšããŠåŠçã§ããããšã«æ³šæããŠãã ããïŒ
#if NETFX_35 for (int i = 0; i < resValueLength; i++) #else System.Threading.Tasks.Parallel.For(0, resValueLength, i => #endif
ãã®å Žåãcsprojãã¡ã€ã«ã®å¯Ÿå¿ããã»ã¯ã·ã§ã³ã§å®æ°ãå®çŸ©ããå¿ èŠããããŸãã
<DefineConstants>DEBUG;TRACE;NETFX_35</DefineConstants>
æ¢è£œã®ã³ã³ãã€ã«æžã¿ã¢ã»ã³ããªãã§ããããnuspecãé©åã«æ§æããæ¹æ³ãç解ããŸãããã Nuspecã¯ã.netãã¬ãŒã ã¯ãŒã¯ã®ç¹å®ã®ããŒãžã§ã³çšã®ç¹å¥ãªãã£ã¬ã¯ããªãå®çŸ©ããŸãã
NuSpecãã¡ã€ã«ã®ãã¡ã€ã«ã»ã¯ã·ã§ã³ã®äŸïŒ
<files> <file src="Debug-Net35\LogService.dll" target="lib\net35\LogService.dll" /> <file src="Debug-Net35\LogService.XML" target="lib\net35\LogService.XML" /> <file src="Debug-Net40\LogService.dll" target="lib\net40\LogService.dll" /> <file src="Debug-Net40\LogService.XML" target="lib\net40\LogService.XML" /> <file src="Debug-Net45\LogService.dll" target="lib\net45\LogService.dll" /> <file src="Debug-Net45\LogService.XML" target="lib\net45\LogService.XML" /> </files>
NuGetããã±ãŒãžã䜿çšããå ŽåïŒäœæããå Žåã§ãïŒã«ããçºçããå¥ã®åé¡ã¯ã1ã€ã®ãããžã§ã¯ããè€æ°ã®ãœãªã¥ãŒã·ã§ã³ã«æ¥ç¶ããåé¡ã§ãã å®éã«ã¯ãcsprojãã¡ã€ã«ã§ã¯ãã¢ã»ã³ããªãªã³ã¯ãç¹å®ã®dllã«é 眮ãããslnãã¡ã€ã«ã®é£ã«ããããã±ãŒãžãã©ã«ããŒã®Visual Studioã«ããã©ã«ãã§åŸ©å ãããŸãã ãããã£ãŠãåããããžã§ã¯ããç°ãªããã©ã«ããŒã«ããè€æ°ã®ãœãªã¥ãŒã·ã§ã³ã«å«ãŸããŠããå Žåã«åé¡ãçºçããŸãã ãã®åé¡ã解決ããã«ã¯ããã«ãåã«ãªã³ã¯ãæžãæããç¹å¥ãªã¿ãŒã²ãããå«ãNuGetããã±ãŒãžã䜿çšã§ããŸãïŒ https : //www.nuget.org/packages/NuGetReferenceHintPathRewrite ã
NuGetããã±ãŒãžã䜿çšãããã1ã€ã®æ©èœã¯ãã¢ã»ã³ããªäžã®ããã±ãŒãžå埩ã®ãããã¯ã§ãã äºå®ããã°ããã®éVisual Studioã«ã¯çµã¿èŸŒã¿ã®ããã±ãŒãžå埩ããŒã«ããªãã£ããããcsprojã«ç¹å¥ãªã¿ãŒã²ãããè¿œå ãããå埩ãæ åœããŠããŸããã ææ°ã®Visual StudioïŒ2013+ïŒã§ã¯ãããã¯ãã¯ãé¢ä¿ãããŸãããcsprojãã¡ã€ã«ãã¯ãªãŒã³ã«ä¿ã¡ãNuGetããã±ãŒãžã埩å ããããã«ã¿ãŒã²ããã¯å¿ èŠãããŸããã
æåŸã«ãTFSã䜿çšããå Žåãããã±ãŒãžãã©ã«ããŒã¯æ¢å®ã§ãœãŒã¹ç®¡çã«ã¯ããŒã«ãããTFSã®ãã¹ãŠã®ã¢ã»ã³ããªãå®æçã«ç¹æ» ãããŠãã§ãã¯ã§ãããšããäºå®ã«ã€ããŠèª¬æã§ããŸãã ãããé²ãããã«ïŒå°çã§TFSã®ã¢ã»ã³ããªãä¿®æ£ãã人ã«ã¯å¥ã®ãã€ã©ãŒãããã¯ãã§ãïŒ ã. tfignoreãã¡ã€ã«ã䜿çšã§ããŸãã
çµæ
ãããã£ãŠãç§ãã¡ãææ¡ããæ瀺ã«èšèŒãããŠãããã¹ãŠãå®äºãããšã人éã®ä»å ¥ãªãã§æ©èœããæ¢è£œã®ããã±ãŒãžããã±ãŒãžã³ã°ã¡ã«ããºã ãååŸã§ããŸãã ããã±ãŒãžã¯ãã®ããã«æ§ç¯ãããŠããŸãã ããã§ãªãå Žåã¯ãåºçç©èªäœã«æ³šæãå¿ èŠã§ãã
䟿å©ãªãªã³ã¯ïŒ
- NuGetãšã¯
- Nuspecãã¡ã€ã«ä»æ§ ã
- ãŠãŒãã£ãªãã£NuGet.exe ;
- NuGetããã±ãŒãžãšã¯ã¹ãããŒã©ãŒ
- ããã10 NuGetïŒAnti-ïŒãã¿ãŒã³ ;
- ããã±ãŒãžã®ã£ã©ãªãŒãšã³ãžã³ã®é åž
- Doxygen Auto Document Generator ;
- ãããžã§ã¯ãã®åé¡ãããã€ãã®ãœãªã¥ãŒã·ã§ã³ã§è§£æ±ºããŸãã
- packagesãã©ã«ããŒã®åé¡ã解決ããŸããããã¯Pending changesã«è©²åœããŸã ã