Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Kompilacja Automatyczna: MSBuild Wrocławska Grupa.NET Paweł Hofman Wrocławska Grupa.NET Software Engineer Silicon & Software Systems.

Podobne prezentacje


Prezentacja na temat: "Kompilacja Automatyczna: MSBuild Wrocławska Grupa.NET Paweł Hofman Wrocławska Grupa.NET Software Engineer Silicon & Software Systems."— Zapis prezentacji:

1 Kompilacja Automatyczna: MSBuild Wrocławska Grupa.NET Paweł Hofman Wrocławska Grupa.NET Software Engineer Silicon & Software Systems (S3)

2 Agenda Historia – pliki.makefile MSBuild Wymagania Właściwości, elementy, scenariusze… Sposób działania Rozszerzalność Wykorzystanie Wsparcie ze strony oprogramowania innych firm Przykład rozwiązania praktycznego problemu Pytania

3 Odrobina historii – make program make / nmake stworzony przez Stuarta Feldmana w 1977 roku (Bell Labs) pliki.makefile składające się z szeregu reguł: :

4 Odrobina historii – make (2) Przykład pliku.makefile składającego się z trzech reguł: hello: hello.o aux.o gcc hello.o aux.o -o hello hello.o: hello.c gcc -c hello.c -o hello.o aux.o: aux.c gcc -c aux.c -o aux.o źródło:

5 Odrobina historii – make (3) Przykład pliku.makefile ze zmiennymi: CC=gcc CFLAGS=-g OBJS=hello.o aux.o hello: $(OBJS) $(CC) $(LFLAGS) $^ -o źródło:

6 MS Build

7 MSBuild - Postawowy Wprowadza pojęcia: właściwości (properties) elementów podlegających przetwarzaniu (items) zadań (tasks) scenariuszy (targets) projekt MSBuild elementy scenariusz właściwości zadania

8 MS Build zwyczajne pliki XML dostępny za darmo w wersjach SDK:.NET 2.0.NET 3.0 i 3.5 Mono – własna implementacja - xbuild pliki projektów *.csproj, *.vbproj, *.vcproj (VS 2008) oraz *.sln pliki *.targets i *.proj

9 Przykład (1) EXE VisualEditor.Registry VisualEditor.Registry.Program true..\..\..\output\ TRACE 4...

10 Przykład (2) Sekcje: PropertyGroup właściwości (również warunkowe) o dowolnych nazwach ItemGroup elementy kompilacji (również zależne rekurencyjnie) zależności (referencje do innych modułów i metadanych) import innych projektów...

11 Znaki specjalne ZnakOpis i znaczenie % znak procenta – odwołania do metadanych (np. pełna ścieżka do pliku) $ znak dolara – odwołanie do znak małpy – odwołanie do elementów listy ( nawias otwierający – użycie w listach ) nawias zamykający – użycie w listach ` apostrof – wyrażenia w warunkach ;średnik – separator elementów listy ? znak zapytania – maska pojedynczego znaku przy nazwie pliku w elementach sekcji Include/Exclude * gwiazdka – maska znaku przy nazwie pliku i rekurencyjnym przeglądaniu katalogów w elementach sekcji Include/Exclude źródło - MSDN

12 MSBuild – Scenariusze (1) zależności wywołań definiowanie własnych uruchamianie z poziomu VisualStudio uruchamianie z poziomu konsoli MSBuild.exe SuperApp.sln /t:Rebuild /p:Configuration=Release

13 MSBuild – Scenariusze (2) EXE VisualProject.Registry

14 MSBuild – Zadania zadania (tasks) warunkowe – if, switch, ale i każdy element posiada atrybuty: Condition="'$(CONFIG)'=='DEBUG'" Condition="!Exists('$(builtdir)')" wbudowane Compile / RegisterAssembly / MSBuild / Exec Copy / Delete / WriteLinesToFile / ReadLinesFromFile Message / Warning / Error… własne zadania napisane w.NET assembly (referencja do klasy w projekcie MSBuild) implementuje interfejs (Microsoft.Build.Framework.ITask)

15 MSBuild – Własne zadania Wywołanie i zapamiętanie wyniku zadania:......

16 MSBuild – Zadania (2) metadane: ElementOpis i znaczenie %(FullPath) pełna ścieżka dokumentu; C:\MyProject\Source\Program.cs %(RootDir) dysk; C:\ %(Filename) nazwa pliku; Program %(Extension) rozszerzenie;.cs %(RelativeDir) folder względny; Source\ %(Directory) folder pliku; MyProject\Source\ %(RecursiveDir) folder przy rekurencyjnym przeglądaniu w poszukiwaniu pliku; MyProject\Source\ źródło - MSDN

17 MSBuild – Zadania (3) Przykład kopiowania wszystkich plików dołączonych do projektu jako ItemToCopy:... // property C:/dest/... // item... // target ...

18 Przykład (3) Przebieg procesu kompilacji (CSharp.targets): BuildOnlySettings; PrepareForBuild; PreBuildEvent; UnmanagedUnregistration; ResolveReferences; PrepareResources; ResolveKeySource; Compile; GenerateSerializationAssemblies; CreateSatelliteAssemblies; GenerateManifests; GetTargetPath; PrepareForRun; UnmanagedRegistration; IncrementalClean; PostBuildEvent

19 Dodatkowe wsparcie ze strony JetBrains R# 3.1 i 4.0 (*.proj) TeamCity 3.1 CruiseControl.NET poprzez MSBuild Sidekick dodatkowe zadania od społeczności.NET pakowanie wysyłanie na serwer ftp wysyłanie wiadomości pocztowych uruchamianie testów NUnit

20 JetBrains - TeamCity

21 JetBrains – TeamCity (2)

22 ZADANIE

23 Problem do rozwiązania istniejący projekt różna wersja programu przy kompilacji (zaangażowani programiści(build system – kolejny numer wersja ) zgodny ze własnymi regułami) x.y.z.b

24 Demo

25 MSBuild – Przed i po kompilacji Niebezpieczny przykład wykonania własnych zadań przed i po kompilacji projektu: te scenariusze mogą już istnieć w załączanym (importowanym) projekcie !!!......

26 MSBuild – Przed i po kompilacji Bezpieczne wykonanie własnych zadań przed i po kompilacji projektu:... CreateVersionFile; $( CoreBuildDependsOn ); DeleteVersionFile;...

27 Podsumowanie podstawowe zasady działania poprzez rozszerzenia stworzone przez entuzjastów zyskały bardzo dużo funkcjonalności MSBuild umożliwia: rozszerzanie o własne zadania definiowanie wielu scenariuszy warunkowe łączenie scenariuszy

28 Pytania ?

29 Źródła Filmy instruktarzowe: google + visual studio videos 2008 extensibility Kody źródłowe: Strona domowa: google + msbuild


Pobierz ppt "Kompilacja Automatyczna: MSBuild Wrocławska Grupa.NET Paweł Hofman Wrocławska Grupa.NET Software Engineer Silicon & Software Systems."

Podobne prezentacje


Reklamy Google