MS_BuildScript - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒãã«ãïŒ
ãã«ãã¹ã¯ãªããã§ãã«ãèªååããããšãããªãçç£æ§åäžã«å¯äžããã
äžèšããŒã«ã䜿çšããŠãã«ããè¡ãããšãåºæ¥ãã
- æšä»ãMSBuild ãäžè¬çã«ãªã£ãŠããã
- .NET Core ã§ã¯ dotnetã³ãã³ã ã䜿çšããã
Visual Studio ãã³ãã³ãã©ã€ã³ã§åŒã³åºããŠãã«ãã§ããã
devenv /build release solution.sln
-
devenv 㯠Visual Studio 㮠EXE
-
*.batåã容æãå€ãã®èŠä»¶ã«ã¯ãã¡ãã§å¯Ÿå¿å¯èœã
è£è¶³ïŒ
devenvã CI ã§äœ¿ãã¹ãã§ã¯ãªãçç±ïŒ: æå ã®èªååã«ã¯
æè»œã ãããã«ã ãµãŒãã§ã¯é¿ããã®ãå®ç³ã§ããããdevenv ã®åé¡ãâ ã»ãIDE æ¬äœãèµ·åããã â éããã©ã€ã»ã³ã¹ãèŠããGUI ã»ãã·ã§ã³ãèŠæ±ããã ã»ãå€éèµ·åã§ããªãã â 䞊åãã«ãã«åããªã ã»ãŠãŒã¶ãŒèšå®ïŒ.suoããŠãŒã¶ãŒ ãããã¡ã€ã«ïŒã«åœ±é¿ããã â ãç§ã®ç°å¢ã§ã¯éããã®æž©åº â ã»æ»ãå€ã»ãã°ãæ±ãã«ãã ãCI ã§ã®æ£ããéžæãâ ã».NET Framework â ãMSBuild.exeã ã».NET Core 以é â ãdotnet buildãâ ã»Build Tools ã®ã¿å°å ¥ããã° ãVS æ¬äœãã€ã³ã¹ããŒã«ããã«æžãã Visual Studio Build ToolsïŒç¡åïŒ â ã³ã³ãã ã€ã¡ãŒãžãæäŸãããŠãã ãdevenv ãä»ãèŠãå Žé¢ã ã»VS åºæã®ãããžã§ã¯ãçš®å¥ã§ MSBuild ã ãã§ã¯éããªããã® ïŒäžéšã®ã»ããã¢ãã ãããžã§ã¯ãã å€ã C++ ç³»ã®ã«ã¹ã¿ã ãã«ãïŒ â ãã®å Žåããå°æ¥ã®è² åµããšèªèããŠãã
- ããã«ãåã®ã€ãã³ãã
- ããã«ãåŸã®ã€ãã³ãã
ãããã
äŸãã°ããããžã§ã¯ãïŒãããžã§ã¯ãã»ãã¡ã€ã«ïŒ*.csproj *.vbprojïŒïŒã«ã
[ãã«ãåŸã®ã€ãã³ã] ã仿ããŠããããžã§ã¯ãã®ãã€ããªåºåãé
眮ã§ããã
è£è¶³ïŒãã«ã ã€ãã³ãã®èœãšã穎ïŒ: æè»œãªåé¢ãå£ããããã
ãâ 倱æããŠãæ°ä»ãã«ãããâ ã»Pre/Post build event ã® çµäºã³ãŒãã 0 以å€ãªããã«ãã¯å€±æãããã ãšã©ãŒ ã¡ãã»ãŒãžããåãããããã â éèŠãªåŠçã¯ã«ã¹ã¿ã Target ã«ã㊠Message / Error ã¿ã¹ã¯ã§æç€ºãã ãâ¡ ãã¹ã«ç©ºçœããããšå£ããã â ãã¯ãã¯å¿ ãåŒçšç¬Šã§å²ã copy "$(TargetPath)" "$(SolutionDir)bin\" ã⢠SDK ã¹ã¿ã€ã«ã§ã¯ Target ã®æ¹ãçŽ çŽãâ <Target Name="CopyOutput" AfterTargets="Build"> <Copy SourceFiles="$(TargetPath)" DestinationFolder="$(SolutionDir)dist\" /> </Target> â ã¯ãã¹ãã©ãããã©ãŒã ã§åã â å¢åãã«ãïŒInputs/OutputsïŒãæå®ã§ãã â cmd äŸåã® bat ãæžããã«æžã ã⣠䞻ãªãã¯ãã $(TargetPath) åºåãã¡ã€ã«ã®ãã« ãã¹ $(TargetDir) åºåãã£ã¬ã¯ã㪠$(ProjectDir) ãããžã§ã¯ãã®ãã£ã¬ã¯ã㪠$(SolutionDir) ãœãªã¥ãŒã·ã§ã³ã®ãã£ã¬ã¯ã㪠⻠dotnet build åäœã§ã¯ ã空ã«ãªãããšããããâ $(Configuration) Debug / Release
- VS .NET ãš VSS ã䜿çšããããŒã éçº - 第 5 ç« ãã«ã ããã»ã¹
http://msdn.microsoft.com/ja-jp/library/ms998223.aspx - Visual Studioã®ãœãªã¥ãŒã·ã§ã³ãã³ãã³ãã©ã€ã³ã§ãã«ãããæ¹æ³ | ã©ã·ã«ã«éçºèš
http://www.lasical.com/2011/03/11/1211/ - Devenv ã³ãã³ã ã©ã€ã³ ã¹ã€ãã
https://learn.microsoft.com/ja-jp/visualstudio/ide/reference/devenv-command-line-switches
MSBuild / NAnt
ãã€ã¯ããœããã®ãã«ãç°å¢ã§ãããéåžž Visual Studio ãšäžç·ã«äœ¿ãããŠããã
-
nmake ããŒã«ã®ïŒæ©èœçãªæå³ã§ã®ïŒ.NET ç
-
Visual Studio ãããžã§ã¯ãã IDE ç¡ãã§ãã«ãã§ããã
2012 幎ãããã§éçºã忢ããŠããæš¡æ§ã
-
NAntãæŽ»çšããŠéçºæã®äœæ¥ãèªååããïŒ1-4ïŒïŒCodeZine
http://codezine.jp/article/detail/354-
ãã«ãããŒã«ãšã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«å¿ èŠãªãœãŒã¹ã³ãŒãã®
ã³ã³ãã€ã«ã容æã«ããããå®åäœæ¥ãèªååãããã§ããããŒã«ã§ãã -
NAnt ã®æå€§ã®é åã¯åŒã³åºããæ©èœã®å€ãã«ãããŸãã
ãã®æ©èœã®ããšã NAnt ã§ã¯ãã¿ã¹ã¯ããšåŒãã§ããŸãã
-
è£è¶³ïŒNAnt ã¯ãã®åŸã©ããªã£ããïŒ: ã2012 幎ãããã§åæ¢ããšãã
èŠç«ãŠã¯æ£ããããã®åŸãåéããŠããªãããNAnt ã®çŸæ³ãâ ã»æçµãªãªãŒã¹ã¯ 0.92ïŒ2012幎6æïŒ ã»ä»¥éãæ£åŒãªãªãŒã¹ãªã ã».NET Core / .NET 5+ ãžã®å¯Ÿå¿ããªã â ãæ°èŠã§éžã¶çç±ã¯ãªãã ãäœã代ããã«ãªã£ããã ã»ãã«ãå®çŸ© â ãMSBuildãïŒ.csproj ãã®ãã®ïŒâ ã»ã¿ã¹ã¯ã®è±å¯ã â ãMSBuild ã¿ã¹ã¯ + NuGetã ïŒMSBuild.Extension.Packã MSBuildTasks çã®ã¿ã¹ã¯éïŒ ã»CI ãšã®é£æº â ãGitHub Actions / Azure Pipelinesãâ â ããã«ã以å€ã®å®åäœæ¥ã㯠CI ã®ã¹ããããšããŠæžãããã«ãªã£ã ã»C# ã§ãã«ããæžããã â ãCakeãïŒC# MakeïŒâ â ãNUKEãïŒåä»ãã®ãã«ãå®çŸ©ïŒ â ãããããXML ãæžããããªããå±€ã«æ¯æããã
-
ããã·ã§ã³ïŒãã«ããèªååã»ãšïŒ ïŒ ïŒ IT
http://www.atmarkit.co.jp/fdotnet/nagile/nagile04/nagile04_01.html -
.NETãã«ãã»ãšã³ãžã³ãMSBuildã䜿ãããªãè¡ ïŒ ïŒ IT
http://www.atmarkit.co.jp/fdotnet/special/msbuild01/msbuild01_01.html-
MSBuild ããã«ãã»ããã»ã¹ã®çµ±äžãšèªååãç®æšãšããŠããã®ã«å¯Ÿãã
-
NAnt ã¯æçµçã«ã¯ïŒãã«ãã»ããã»ã¹ã ãã§ãªãïŒ
ã¢ãžã£ã€ã«éçºã®ãã©ã¯ãã£ã¹ïŒïŒå®è·µé ç®ïŒã® 1 ã€ã§ãã
ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ããå®çŸããããšãç®çãšããŠããã
ãã®ãã NAnt ã®æ¹ããäŸãã°ãã¹ãã»ããŒã«ãNUnitãã®åŒã³åºãã
æšæºæ©èœã ãã§å¯èœãªããšãªã©ã
ãããããçšæãããŠããã¿ã¹ã¯ã MSBuild ãããè±å¯ã§ããã -
ç§»è¡ã¡ã¢ïŒæ£èª€ïŒ: ç§»è¡å ã§ã¯ãäŸãã°ãã¹ãã»ããŒã«ãNAntãã®
åŒã³åºããæšæºæ©èœã ãã§å¯èœããšãªã£ãŠãããã
ãã¹ãã»ããŒã«ã¯ NAnt ã§ã¯ãªãïŒNAnt èªèº«ã®åŒã³åºãã§ã¯æå³ãéããªãïŒã
æèãã NUnit ã®èª€èšãšå€æãä¿®æ£ãã
ïŒNAnt ã«ã¯<nunit2>ã¿ã¹ã¯ãæšæºã§çšæãããŠããïŒã
- .NET åãã®ããã±ãŒãžç®¡çã·ã¹ãã ã§ã
ãã«ãæã«ãpackages.config ãèŠãŠããã±ãŒãžã埩å ããã
..\nuget.exe restore "Frameworks\Infrastructure\AllComponent.sln"
- PackageReference ã«åãæ¿ãåŸã®ãã«ãã§ã¯ãNuGet ãªã¹ãã¢ã
nuget.exe ã§ã¯ãªããMSBuild /t:Restore ã§è¡ãããã«å€æŽãããŠããã
MSBuild.exe /p:Configuration=Debug -v:d /t:Restore XXXXX.sln
ç§»è¡ã¡ã¢ïŒè¡šèšïŒ: ç§»è¡å ã®ãpackage.configããã
å®éã®ãã¡ã€ã«åã§ãããpackages.configãã«ä¿®æ£ããã
è£è¶³ïŒ
packages.configãšPackageReferenceïŒ: åæãè§ŠããŠãã
ãã®ç§»è¡ã¯ãä»ãçŸå Žã§æ®ã£ãŠããäœæ¥ã§ããã
packages.config PackageReference èšè¿°å Žæ å¥ãã¡ã€ã« .csprojã®äž âäŸåã®è§£æ±º ãã©ããã«å šéšæžã æšç§»çäŸåãèªå解決 â é 眮å ãœãªã¥ãŒã·ã§ã³çŽäžã® packages/ã°ããŒãã« ãã£ãã·ã¥ïŒ ~/.nuget/packagesïŒâ埩å nuget restoremsbuild /t:Restore/dotnet restore察象 .NET Framework ã®æ§åœ¢åŒ SDK ã¹ã¿ã€ã« / çŸè¡ ãPackageReference ã®å©ç¹ãâ ã»ãªããžããªã« packages/ ãå«ããªããŠãã â ããªããžããªã軜ããªãã ã»æšç§»çäŸåãèªåã§è§£æ±ºããã â ãA ã B ãèŠæ±ããŠããããèªåã§æžããªããŠãã ã»æ¡ä»¶ä»ãåç §ãæžãã <PackageReference Include="X" Version="1.0" Condition="'$(TargetFramework)'=='net48'" /> ã»ãäžå€®ããã±ãŒãžç®¡çãïŒDirectory.Packages.propsïŒâ â è€æ°ãããžã§ã¯ãã®ããŒãžã§ã³ã 1 ç®æã§æãã ãç§»è¡æã®æ³šæã ã»VS ã® [packages.config ã PackageReference ã«ç§»è¡] ã§ äžæ¬å€æã§ãããã - content ãã¡ã€ã«ãé ãããã±ãŒãž - install.ps1 ã«äŸåããããã±ãŒãž ã¯ãæåãå€ãããâ ã»[NU1605](MS_NuGetNU1605) çã® ããŠã³ã°ã¬ãŒãæ€åºãå³ãããªãã ä»ãŸã§éã£ãŠãããã«ããèœã¡ãããšããã
.NET Core ã§ã¯ dotnetã³ãã³ã ã䜿çšããã
ããããè²ã ãšåé¡ãèµ·ããŸãã
MSBuild ã®è©²åœç¯ãåç §ã
NuGet ã®è©²åœç¯ãåç §ã
dotnetã³ãã³ã ã®è©²åœç¯ãåç §ã
Open æ£æ¢ã¯ devenv ã MSBuild ã䜿çšãã
ãã«ã ãããïŒ*.batïŒãæäŸããŠã
ãã«ãã¿ã¹ã¯ã®èªååãè¡ã£ãŠããã
https://github.com/OpenTouryoProject/OpenTouryo/tree/develop/root/programs/CS
è£è¶³ïŒãã«ãèªååã®çŸåšã®å°éç¹ïŒ: ããã«ã ã¹ã¯ãªããã§èªååãããš
çç£æ§åäžã«å¯äžããããšããäž»åŒµã¯æ£ãããããã«å ãžé²ãã§ããããæ®µéãâ â æäœæ¥ã§ãã«ã â¡ ãbat / ã¹ã¯ãªããã§èªååãâ æ¬ããŒãžã®äž»é¡ ⢠ãCI ã§èªåå®è¡ãïŒpush ã®ãã³ã«åãïŒâ â [CI](MS_CI) / [GitHub Actions](MS_GitHubActions) ⣠ãCD ãŸã§èªååãïŒæ¿èªãæãã§é çœ®ïŒ â [CI/CD ãã€ãã©ã€ã³](MS_CICDPipeline) †ãIaCãïŒç°å¢ãã®ãã®ãã³ãŒãåïŒ ãâ¡ã§æ¢ãŸããšèµ·ããããšã ã»ããã«ãã§ããã®ã¯ç¹å®ã® PC ã ãã ã»ã¹ã¯ãªãããã誰ã«ãä¿å®ãããªãã ã»æå ãš CI ã§çµæãéã â â¡ãäœããªãã ããã®ãŸãŸ CI ã§åãã圢ãã«ããŠããã®ãåŸç â ïŒïŒããŒã«ã«ç°å¢åºæã®ãã¹ãåã蟌ãŸãªãã åŒæ°ã§ç°å¢ãåãæ¿ããïŒ ãåçŸæ§ãäžãã仿ããâ ã»global.json ⊠SDK ã®ããŒãžã§ã³ãåºå®ãã ã»Directory.Build.props âŠ å ±éã® MSBuild èšå® ã»Directory.Packages.props ⊠ããã±ãŒãžçã®äžå€®ç®¡ç ã»ããã㯠ãã¡ã€ã«ãïŒpackages.lock.jsonïŒ â äŸåã®çãåºå®ãã ãæšæ¥ã¯éã£ãã®ã«ä»æ¥èœã¡ãããé²ã ã»ã³ã³ããã§ãã«ããã â ç°å¢å·®ãã®ãã®ãæ¶ã
Tags: ç§»è¡, ãã¹ã, ãããã°, ãããã€, CI, .NETéçº