MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November
Indholdet i disse slides er baseret på egne erfaringer og egne konklusioner. 2
Intro Hvad er MSBuild Hvad er Team Build Problemstillinger ”komplekse” solutions Tools og ressourcer Tips 3 Agenda
Intro Hvem er jeg Hvem er Oticon Hvem er Team Fitting System Hvad er Genie 4
Erik Malmqvist, 31år Udvikler hos Oticon A/S IT ingeniør & elektronikmekaniker Har arbejdet med udvikling af software/hardware i ca. 10år Hvem er jeg 5
Vi udvikler og producerer høreapparater ~600 på Kongebakken (~4500 i verden) Blandt de største Hvem er Oticon 6 Kongebakken
~50 i teamet (audiologer, testere, udviklere, management) 33 udviklere (7 i Polen) C#/.Net & C++ Scrum Hvem er Team Fitting System 7
Hvad er Genie Fitting software Forretnings-kritisk Oplag ~ stk 8 Overstat til 21 sprog ~ liniers kode 34 projekter (27 C# og 7 C++)
MSBuild generelt Hvor kender vi MSBuild fra ? MSBuild kort Solution & projekt filer.targets filer Afhænigheder 9
10
MSBuild kort Microsofts build platform Del af.NET frameworket XML syntax Første gang set i VS2005 og.NET
Solution & projekt filer MSBuild bliver brugt her ? Projekt filer C# Projekt filer C++ Solution filer C# Solution filer C++ Team Build projekt filer Build scripts Build Definitions Build Agents 12
MSBuild bliver brugt her ? Projekt filer C# (.csproj) Projekt filer C++ (.vcproj) Solution filer C# (.sln) Solution filer C++ (.sln) Team Build projekt filer (TFSBuild.proj) Build scripts (.xml) Build Definitions (TFSBuild.proj) Build Agents (service) Solution & projekt filer 13
.targets filer Kommer med MSBuild MSBuild scripts Definerer forskellige operationer f.eks. Build, clean Er ofte afhængige af hinanden. Microsoft.Common.Targets Microsoft.CSharp.Targets 14
Afhængigheder Typer Interne referencer Eksterne referencer Skjulte referencer Symptomer Optimering forsvinder Domino effekt Ustabil build 15
Team Build generelt Overblik Team Build & MSBuild vs. Visual Studio Build log 16
Team Build overblik 17
Team Build & MSBuild vs. Visual Studio 18
Build log – Team Build Demo solution 19
Build log – Team Build 20 Normal log (i forhold til tid) Reduceret log (i forhold til tid) Tool log (i forhold til relation )
Problemstillinger ”komplekse” solutions Konfigurationer & output foldere Generede afhængigheder Skjulte afhængigheder Ikke MSBuild Blandede solutions Konklusion 21
Konfigurationer & output foldere 22
Konfigurationer & output foldere 23
Konfigurationer & output foldere 24
Genererede afhængigheder Mange relative stier Kompleks build script Komplekse afhængigheder 25
Skjulte afhængigheder Pre/post build events 26
Ikke MSBuild C++ projekter Tools Exec Custom tasks 27
Blandede solutions (C#, C++) 28 Genererede afhængigheder Genererede afhængigheder Ikke MSBuild Konfigurationer Output foldere Skjulte afhængigheder Skjulte afhængigheder
Start med en stabil solution/build Brug build scripts til komplekse builds Nemmere at debugge Mere kontrol over afviklingen Kan køres uden for Team Build Vær kritisk overfor loggen Konklusion (egne erfaringer) 29
Aaron Hallberg MSDN MSBuild reference Microsoft Build Sidekick v2 Tools og resourcer 30
Tools og resourcer Disclaimer: Dette tool har ikke noget at gøre med Oticon. Det er stadigt under udvikling, og skal benyttes på eget ansvar. 31
Tips MSBuild command line options – TFSBuild.rsp /fileLoggerParameters:verbosity=normal Work item creation – TFSBuild.proj Brug macroer til at ”binde” relative stier 32