SlideShare a Scribd company logo
1 of 35
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 1 / 32
Programowanie Komponentowe 
Wykład #6: Wersjonowanie 
Mikołaj Olszewski 
Wydział Zastosowan Informatyki i Matematyki 
Szkoły Głównej Gospodarstwa Wiejskiego 
18.11.2014 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 2 / 32
Plan wykładu 
1 Wersjonowanie asemblacji 
Numer wersji 
Modele wdrazania 
Silne nazwy 
Polityka kompatybilnosci 
2 Wersjonowanie w VisualStudio 
3 Wersjonowanie CLR 
4 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 3 / 32
Wprowadzenie 
Konieczne w systemie komponentowym 
Współgranie odpowiednich wersji 
Model współdzielenia 
prywatne 
współdzielone 
DLL Hell 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 4 / 32
Wersjonowanie asemblacji 
Plan wykładu 
1 Wersjonowanie asemblacji 
Numer wersji 
Modele wdrazania 
Silne nazwy 
Polityka kompatybilnosci 
2 Wersjonowanie w VisualStudio 
3 Wersjonowanie CLR 
4 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 5 / 32
Wersjonowanie asemblacji 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 6 / 32
Wersjonowanie asemblacji Numer wersji 
Numer wersji 
[assembly: AssemblyVersion("1.2.3.4")] 
Ustawienia projektu 
AssemblyInfo.cs 
Referencja uwzglednia 
numer wersji 
1 . a s s embl y e x t e rn 
MyAssembly 
2 f 
3 . v e r 1 : 2 : 3 : 4 
4 g 
Zapewnienie 
kompatybilnosci podczas 
uruchamiania 
silne nazwy 
przyjazne nazwy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 7 / 32
Wersjonowanie asemblacji Numer wersji 
Elementy numeru wersji 
1 . 2 . 3 . 4 
" " " " 
major minor build revision 
Dowolna semantyka 
Konwencja 
revision — małe zmiany (np. bugfixing, zmiany w lokalizacji), w pełni 
podmienialne 
build — rekompilacja zródeł (np. na inna platforme) 
minor — znaczace zmiany z intencja zachowania kompatybilnosci 
major — duze zmiany, mozliwy brak kompatybilnosci 
Semantyczne wersjonowanie 
Konieczne w projekcie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 8 / 32
Wersjonowanie asemblacji Numer wersji 
Elementy numeru wersji 
1 . 2 . 3 . 4 
" " " " 
major minor build revision 
Dowolna semantyka 
Konwencja 
revision — małe zmiany (np. bugfixing, zmiany w lokalizacji), w pełni 
podmienialne 
build — rekompilacja zródeł (np. na inna platforme) 
minor — znaczace zmiany z intencja zachowania kompatybilnosci 
major — duze zmiany, mozliwy brak kompatybilnosci 
Semantyczne wersjonowanie 
Konieczne w projekcie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 8 / 32
Wersjonowanie asemblacji Numer wersji 
Numerowanie wersji 
Domyslnie: 1.0.0.0 
Samodzielne 
Czesciowo automatyczne 
1.2.* 
build — liczba dni od 1.1.2000 
revision — liczba sekund od północy / 2 
przykład: 1.2.1642.18000 
1.2.3.* 
[assembly: AssemblyInformationalVersion("1.2.3.4")] 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 9 / 32
Wersjonowanie asemblacji Numer wersji 
Programowe pobieranie wersji 
1 Assembly a s s embl y = Assembly . Ge tEx e cut ingAs s embl y ( ) ; 
2 Ve r s i o n v e r s i o n = a s s embl y . GetName ( ) . Ve r s i o n ; 
3 Trace . Wr i t eLi n e ( ”Nr w e r s j i to ” + v e r s i o n ) ; 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 10 / 32
Wersjonowanie asemblacji Modele wdrazania 
Modele wdrazania asemblacji 
Asemblacje prywatne 
lokalna kopia na potrzeby aplikacji 
kopiowanie do katalogu 
zazwyczaj podczas instalacji 
nowy egzemplarz nadpisuje stary 
zazwyczaj wsteczna kompatybilnosc 
Asemblacje współdzielone 
uzywane przez wiele aplikacji 
Global Assembly Cache 
wsparcie dla wielu wersji 
nie jest konieczne zachowanie wstecznej kompatybilnosci 
uproszczenie zarzadzania wersjami 
Nie mieszac! 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 11 / 32
Wersjonowanie asemblacji Modele wdrazania 
Modele wdrazania asemblacji 
Asemblacje prywatne 
lokalna kopia na potrzeby aplikacji 
kopiowanie do katalogu 
zazwyczaj podczas instalacji 
nowy egzemplarz nadpisuje stary 
zazwyczaj wsteczna kompatybilnosc 
Asemblacje współdzielone 
uzywane przez wiele aplikacji 
Global Assembly Cache 
wsparcie dla wielu wersji 
nie jest konieczne zachowanie wstecznej kompatybilnosci 
uproszczenie zarzadzania wersjami 
Nie mieszac! 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 11 / 32
Wersjonowanie asemblacji Modele wdrazania 
Assembly resolver 
Przekazywanie dokładnej nazwy i numeru wersji 
Poszukiwanie kompatybilnej asemblacji 
1 przeszukiwanie GAC (po silnej nazwie) 
2 przeszukiwanie folderu aplikacji (ew. innego) 
3 rzucanie wyjatku 
odwrotnie bez silnej nazwy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 12 / 32
Wersjonowanie asemblacji Silne nazwy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 13 / 32
Wersjonowanie asemblacji Silne nazwy 
Silne nazwy asemblacji 
GAC zawiera komponenty od róznych dostawców 
Potrzeba jednoznacznej identyfikacji komponentu 
GUID 
COM 
mozliwosc kopiowania 
brak autentykacji i zapewnienia integracji 
Silna nazwa — identyfikacja twórcy i zawartosci 
para kluczy szyfrujacych: publiczny i prywatny 
podpis asemblacji (zaszyfrowany hash) 
podpis i klucz publiczny dołaczone do asemblacji 
ograniczanie dostepu do kluczy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 14 / 32
Wersjonowanie asemblacji Silne nazwy 
Przechowywanie w GAC 
C:nWINDOWSnassemblynGAC MSILnMySharedAssembly 
n1.2.3.4 745901a54f88909bnMySharedAssembly.dll 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 15 / 32
Wersjonowanie asemblacji Silne nazwy 
Referencje po silnej nazwie 
1 . a s s embl y e x t e rn MyServerAssembly 
2 f 
3 . p u b l i c k e y t o k e n = (22 90 49 07 87 53 81 9B ) 
4 . v e r 1 : 2 : 3 : 4 
5 g 
Znajdowanie asemblacji 
1 Wyszukiwanie po przyjaznej nazwie 
2 Zczytanie klucza publicznego i porównanie tokenów 
3 Odszyfrowanie podpisu i porównanie hasha 
Polityka łaczenia silnych i przyjaznych nazw 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 16 / 32
Wersjonowanie asemblacji Silne nazwy 
Podpisywanie asemblacji 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 17 / 32
Wersjonowanie asemblacji Silne nazwy 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 18 / 32
Wersjonowanie asemblacji Silne nazwy 
Bezpieczne przechowywanie kluczy prywatnych 
Bezpieczenstwo najwazniejsze — trzymanie „pod kluczem” 
Jak budowac bez klucza prywatnego? 
Jak tworzyc aplikacje wykorzystujace (nie)podpisane asemblacje? 
Rozwiazanie 
delay signing 
klucz publiczny — tak, podpis — nie 
mozliwosc instalowania w GAC i odwołania 
nie mozna uruchamiac 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 19 / 32
Wersjonowanie asemblacji Silne nazwy 
Bezpieczne przechowywanie kluczy prywatnych 
Bezpieczenstwo najwazniejsze — trzymanie „pod kluczem” 
Jak budowac bez klucza prywatnego? 
Jak tworzyc aplikacje wykorzystujace (nie)podpisane asemblacje? 
Rozwiazanie 
delay signing 
klucz publiczny — tak, podpis — nie 
mozliwosc instalowania w GAC i odwołania 
nie mozna uruchamiac 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 19 / 32
Wersjonowanie asemblacji Silne nazwy 
Reguły kompatybilnosci 
nazwy prywatne współdzielone 
przyjazne wstecznie komp. niemozliwe 
silne po nr wersji po nr wersji 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 20 / 32
Wersjonowanie asemblacji Polityka kompatybilnosci 
Własna polityka kompatybilnosci 
Nadpisywanie domyslnej polityki .NET 
Polityka dla pojedynczej aplikacji 
Polityka globalna (dla wszystkich aplikacji) 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 21 / 32
Wersjonowanie asemblacji Polityka kompatybilnosci 
Polityka kompatybilnosci dla aplikacji 
<application name>.config 
1 <? xml v e r s i o n=” 1 . 0 ” ?> 
2 <c o n f i g u r a t i o n> 
3 <runt ime> 
4 <a s s emb l yBi n d i n g xmlns=” urn: schemas−mi c r o s o f t−com:asm . v1 ”> 
5 <dependentAssembly> 
6 <a s s emb l y I d e n t i t y name=”MyCl a s sLi b r a r y ” 
7 publicKeyToken=” 229049078753819 b” /> 
8 <p u b l i s h e r P o l i c y a p p l y=” y e s ”/> 
9 <b i n d i n gRe d i r e c t o l dVe r s i o n=” 2 . 0 . 0 . 0 ” newVers ion=” 2 . 1 . 0 . 0 ” 
/> 
10 <b i n d i n gRe d i r e c t o l dVe r s i o n=” 1 . 1 . 0 . 0 −1 . 3 . 0 . 0 ” newVers ion=” 
2 . 1 . 0 . 0 ” /> 
11 <codeBase v e r s i o n=” 3 . 2 . 1 . 0 ” h r e f=” f i l e : /// c : ntempnSomeApp” 
/> 
12 </ dependentAssembly> 
13 </ a s s emb l yBi n d i n g> 
14 </ runt ime> 
15 </ c o n f i g u r a t i o n> 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 22 / 32
Wersjonowanie w VisualStudio 
Plan wykładu 
1 Wersjonowanie asemblacji 
Numer wersji 
Modele wdrazania 
Silne nazwy 
Polityka kompatybilnosci 
2 Wersjonowanie w VisualStudio 
3 Wersjonowanie CLR 
4 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 23 / 32
Wersjonowanie w VisualStudio 
Praca z VisualStudio 
Miejsce przechowywania 
Prywatne kopie asemblacji 
Copy Local7! False 
Referencja do wersji 
Domyslne podazanie za wersja 
Specific version7! True 
Wersja pliku 
SolutionInfo.cs 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 24 / 32
Wersjonowanie CLR 
Plan wykładu 
1 Wersjonowanie asemblacji 
Numer wersji 
Modele wdrazania 
Silne nazwy 
Polityka kompatybilnosci 
2 Wersjonowanie w VisualStudio 
3 Wersjonowanie CLR 
4 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 25 / 32
Wersjonowanie CLR 
Wersje CLR 
Scisła zgodnosc wersji ze srodowiskiem .NET 
silne nazwy 
Polityka wersjonowania .NET 
okreslenie kompatybilnosci miedzy wersjami 
duza uwaga do wstecznej kompatybilnosci 
Wiele asemblacji o tej samej wersji 
Unifikacja wersji 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 26 / 32
Wersjonowanie CLR 
Okreslanie wersji CLR 
Domyslnie najnowsza na maszynie 
taka, która potrafi obsłuzyc VisualStudio 
Wszystkie nowe wersje sa kompatybilne wstecznie 
Czesciowa kompatybilnosc w przód 
zachowanie wersji metadanych 
Samodzielne definiowanie kompatybilnosci 
supportedRuntime 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 27 / 32
Wersjonowanie CLR 
Kompatybilnosc wersji CLR 
CLR 1.0 1.1 2.0 3.0 3.5 4.0 4.5 
1.0 + + + + + + + 
1.1 + + + + + + + 
2.0 - - + + + + + 
3.0 - - - + + + + 
3.5 - - - + + + + 
4.0 - - - - - + + 
4.5 - - - - - + + 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 28 / 32
Podsumowanie 
Plan wykładu 
1 Wersjonowanie asemblacji 
Numer wersji 
Modele wdrazania 
Silne nazwy 
Polityka kompatybilnosci 
2 Wersjonowanie w VisualStudio 
3 Wersjonowanie CLR 
4 Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 29 / 32
Podsumowanie 
Podsumowanie 
Potezny mechanizm wersjonowania i zapewniania zgodnosci 
Rózne metody zarzadzania wersjami 
Wsparcie w narzedziach (VisualStudio i polecenia) 
Mozliwe własne polityki kompatybilnosci 
Polityka kompatybilnosci CLR 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 30 / 32
Podsumowanie 
Do domu 
Przeczytac rozdział 5. „Programming .NET Components” 
Przyswoic modele wdrozen i polityki kompatybilnosci 
Przypomniec/zapoznac sie z tworzeniem GUI w WPF 
Stworzyc panel kontrolny w WPF 
Zapoznac sie z jednym z dedykowanych kontenerów DI 
Ninject 
Unity 
AutoFac 
. . . 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 31 / 32
Podsumowanie 
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 32 / 32

More Related Content

What's hot

Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
WEBINAR 3 # Pierwszy test automatyczny
WEBINAR 3 # Pierwszy test automatycznyWEBINAR 3 # Pierwszy test automatyczny
WEBINAR 3 # Pierwszy test automatycznytestuj.pl
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiMikołaj Olszewski
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na AndroidzieDaftcode
 
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]Krzysztof Głuszczyk
 

What's hot (6)

Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
WEBINAR 3 # Pierwszy test automatyczny
WEBINAR 3 # Pierwszy test automatycznyWEBINAR 3 # Pierwszy test automatyczny
WEBINAR 3 # Pierwszy test automatyczny
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGi
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
Wielomodułowe aplikacje korzystające ze wspólnej bazy kodu [PL]
 

Viewers also liked

Programowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E PodsumowanieProgramowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E PodsumowanieMikołaj Olszewski
 
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...Mikołaj Olszewski
 
Programowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiProgramowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiMikołaj Olszewski
 
Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1Mikołaj Olszewski
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansMikołaj Olszewski
 
Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaMikołaj Olszewski
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaMikołaj Olszewski
 
The metadata driven e-laboratory web client
The metadata driven e-laboratory web clientThe metadata driven e-laboratory web client
The metadata driven e-laboratory web clientMikołaj Olszewski
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweMikołaj Olszewski
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenneMikołaj Olszewski
 
Programowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 WprowadzenieProgramowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 WprowadzenieMikołaj Olszewski
 

Viewers also liked (16)

Programowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E PodsumowanieProgramowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E Podsumowanie
 
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
 
Parallel quicksort cz. 2
Parallel quicksort cz. 2Parallel quicksort cz. 2
Parallel quicksort cz. 2
 
Programowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiProgramowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGi
 
Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1Optoelektroniczne modelowanie sieci neuronowej cz. 1
Optoelektroniczne modelowanie sieci neuronowej cz. 1
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java Beans
 
Materiały fotorefrakcyjne
Materiały fotorefrakcyjneMateriały fotorefrakcyjne
Materiały fotorefrakcyjne
 
Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do Springa
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springa
 
The metadata driven e-laboratory web client
The metadata driven e-laboratory web clientThe metadata driven e-laboratory web client
The metadata driven e-laboratory web client
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikowe
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenne
 
Programowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 WprowadzenieProgramowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 Wprowadzenie
 
Architektura heksagonalna
Architektura heksagonalnaArchitektura heksagonalna
Architektura heksagonalna
 
Lokalne sieci światłowodowe
Lokalne sieci światłowodoweLokalne sieci światłowodowe
Lokalne sieci światłowodowe
 
Optyka ciekłych kryształów
Optyka ciekłych kryształówOptyka ciekłych kryształów
Optyka ciekłych kryształów
 

Similar to Programowanie Komponentowe: #6 Wersjonowanie

Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETMikołaj Olszewski
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołuintive
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Wojciech Sznapka
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
 
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test..."Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...Women in Technology Poland
 
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieSpring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieWydawnictwo Helion
 
Praktyczne wprowadzenie do OSGi i Enterprise OSGi
Praktyczne wprowadzenie do OSGi i Enterprise OSGiPraktyczne wprowadzenie do OSGi i Enterprise OSGi
Praktyczne wprowadzenie do OSGi i Enterprise OSGiJacek Laskowski
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
OSGi, deklaratywnie
OSGi, deklaratywnieOSGi, deklaratywnie
OSGi, deklaratywnieCode-House
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
Programowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentówProgramowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentówMikołaj Olszewski
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015Michał Dudak
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaWydawnictwo Helion
 

Similar to Programowanie Komponentowe: #6 Wersjonowanie (20)

Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołu
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 
Grok Artykul
Grok ArtykulGrok Artykul
Grok Artykul
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test..."Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
"Wyzwania automatyzacji w ciągłej integracji" - o tworzeniu i utrzymaniu test...
 
JavaEE + OSGi
JavaEE + OSGiJavaEE + OSGi
JavaEE + OSGi
 
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieSpring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
 
Praktyczne wprowadzenie do OSGi i Enterprise OSGi
Praktyczne wprowadzenie do OSGi i Enterprise OSGiPraktyczne wprowadzenie do OSGi i Enterprise OSGi
Praktyczne wprowadzenie do OSGi i Enterprise OSGi
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
OSGi, deklaratywnie
OSGi, deklaratywnieOSGi, deklaratywnie
OSGi, deklaratywnie
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Programowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentówProgramowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentów
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 

More from Mikołaj Olszewski

Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweMikołaj Olszewski
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMikołaj Olszewski
 
Test wyszukiwarek internetowych
Test wyszukiwarek internetowychTest wyszukiwarek internetowych
Test wyszukiwarek internetowychMikołaj Olszewski
 
Programowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentówProgramowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentówMikołaj Olszewski
 
Programowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówProgramowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówMikołaj Olszewski
 

More from Mikołaj Olszewski (12)

Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronowe
 
Swiatłowodowy czujnik prądu
Swiatłowodowy czujnik prąduSwiatłowodowy czujnik prądu
Swiatłowodowy czujnik prądu
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowych
 
Parallel quicksort cz. 1
Parallel quicksort cz. 1Parallel quicksort cz. 1
Parallel quicksort cz. 1
 
Maszyna Turinga
Maszyna TuringaMaszyna Turinga
Maszyna Turinga
 
Planowanie działań cz. 2
Planowanie działań cz. 2Planowanie działań cz. 2
Planowanie działań cz. 2
 
Planowanie działań cz. 1
Planowanie działań cz. 1Planowanie działań cz. 1
Planowanie działań cz. 1
 
Model hierarchiczny
Model hierarchicznyModel hierarchiczny
Model hierarchiczny
 
Komputer genetyczny
Komputer genetycznyKomputer genetyczny
Komputer genetyczny
 
Test wyszukiwarek internetowych
Test wyszukiwarek internetowychTest wyszukiwarek internetowych
Test wyszukiwarek internetowych
 
Programowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentówProgramowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentów
 
Programowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówProgramowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentów
 

Programowanie Komponentowe: #6 Wersjonowanie

  • 1. Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 1 / 32
  • 2. Programowanie Komponentowe Wykład #6: Wersjonowanie Mikołaj Olszewski Wydział Zastosowan Informatyki i Matematyki Szkoły Głównej Gospodarstwa Wiejskiego 18.11.2014 Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 2 / 32
  • 3. Plan wykładu 1 Wersjonowanie asemblacji Numer wersji Modele wdrazania Silne nazwy Polityka kompatybilnosci 2 Wersjonowanie w VisualStudio 3 Wersjonowanie CLR 4 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 3 / 32
  • 4. Wprowadzenie Konieczne w systemie komponentowym Współgranie odpowiednich wersji Model współdzielenia prywatne współdzielone DLL Hell Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 4 / 32
  • 5. Wersjonowanie asemblacji Plan wykładu 1 Wersjonowanie asemblacji Numer wersji Modele wdrazania Silne nazwy Polityka kompatybilnosci 2 Wersjonowanie w VisualStudio 3 Wersjonowanie CLR 4 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 5 / 32
  • 6. Wersjonowanie asemblacji Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 6 / 32
  • 7. Wersjonowanie asemblacji Numer wersji Numer wersji [assembly: AssemblyVersion("1.2.3.4")] Ustawienia projektu AssemblyInfo.cs Referencja uwzglednia numer wersji 1 . a s s embl y e x t e rn MyAssembly 2 f 3 . v e r 1 : 2 : 3 : 4 4 g Zapewnienie kompatybilnosci podczas uruchamiania silne nazwy przyjazne nazwy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 7 / 32
  • 8. Wersjonowanie asemblacji Numer wersji Elementy numeru wersji 1 . 2 . 3 . 4 " " " " major minor build revision Dowolna semantyka Konwencja revision — małe zmiany (np. bugfixing, zmiany w lokalizacji), w pełni podmienialne build — rekompilacja zródeł (np. na inna platforme) minor — znaczace zmiany z intencja zachowania kompatybilnosci major — duze zmiany, mozliwy brak kompatybilnosci Semantyczne wersjonowanie Konieczne w projekcie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 8 / 32
  • 9. Wersjonowanie asemblacji Numer wersji Elementy numeru wersji 1 . 2 . 3 . 4 " " " " major minor build revision Dowolna semantyka Konwencja revision — małe zmiany (np. bugfixing, zmiany w lokalizacji), w pełni podmienialne build — rekompilacja zródeł (np. na inna platforme) minor — znaczace zmiany z intencja zachowania kompatybilnosci major — duze zmiany, mozliwy brak kompatybilnosci Semantyczne wersjonowanie Konieczne w projekcie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 8 / 32
  • 10. Wersjonowanie asemblacji Numer wersji Numerowanie wersji Domyslnie: 1.0.0.0 Samodzielne Czesciowo automatyczne 1.2.* build — liczba dni od 1.1.2000 revision — liczba sekund od północy / 2 przykład: 1.2.1642.18000 1.2.3.* [assembly: AssemblyInformationalVersion("1.2.3.4")] Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 9 / 32
  • 11. Wersjonowanie asemblacji Numer wersji Programowe pobieranie wersji 1 Assembly a s s embl y = Assembly . Ge tEx e cut ingAs s embl y ( ) ; 2 Ve r s i o n v e r s i o n = a s s embl y . GetName ( ) . Ve r s i o n ; 3 Trace . Wr i t eLi n e ( ”Nr w e r s j i to ” + v e r s i o n ) ; Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 10 / 32
  • 12. Wersjonowanie asemblacji Modele wdrazania Modele wdrazania asemblacji Asemblacje prywatne lokalna kopia na potrzeby aplikacji kopiowanie do katalogu zazwyczaj podczas instalacji nowy egzemplarz nadpisuje stary zazwyczaj wsteczna kompatybilnosc Asemblacje współdzielone uzywane przez wiele aplikacji Global Assembly Cache wsparcie dla wielu wersji nie jest konieczne zachowanie wstecznej kompatybilnosci uproszczenie zarzadzania wersjami Nie mieszac! Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 11 / 32
  • 13. Wersjonowanie asemblacji Modele wdrazania Modele wdrazania asemblacji Asemblacje prywatne lokalna kopia na potrzeby aplikacji kopiowanie do katalogu zazwyczaj podczas instalacji nowy egzemplarz nadpisuje stary zazwyczaj wsteczna kompatybilnosc Asemblacje współdzielone uzywane przez wiele aplikacji Global Assembly Cache wsparcie dla wielu wersji nie jest konieczne zachowanie wstecznej kompatybilnosci uproszczenie zarzadzania wersjami Nie mieszac! Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 11 / 32
  • 14. Wersjonowanie asemblacji Modele wdrazania Assembly resolver Przekazywanie dokładnej nazwy i numeru wersji Poszukiwanie kompatybilnej asemblacji 1 przeszukiwanie GAC (po silnej nazwie) 2 przeszukiwanie folderu aplikacji (ew. innego) 3 rzucanie wyjatku odwrotnie bez silnej nazwy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 12 / 32
  • 15. Wersjonowanie asemblacji Silne nazwy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 13 / 32
  • 16. Wersjonowanie asemblacji Silne nazwy Silne nazwy asemblacji GAC zawiera komponenty od róznych dostawców Potrzeba jednoznacznej identyfikacji komponentu GUID COM mozliwosc kopiowania brak autentykacji i zapewnienia integracji Silna nazwa — identyfikacja twórcy i zawartosci para kluczy szyfrujacych: publiczny i prywatny podpis asemblacji (zaszyfrowany hash) podpis i klucz publiczny dołaczone do asemblacji ograniczanie dostepu do kluczy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 14 / 32
  • 17. Wersjonowanie asemblacji Silne nazwy Przechowywanie w GAC C:nWINDOWSnassemblynGAC MSILnMySharedAssembly n1.2.3.4 745901a54f88909bnMySharedAssembly.dll Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 15 / 32
  • 18. Wersjonowanie asemblacji Silne nazwy Referencje po silnej nazwie 1 . a s s embl y e x t e rn MyServerAssembly 2 f 3 . p u b l i c k e y t o k e n = (22 90 49 07 87 53 81 9B ) 4 . v e r 1 : 2 : 3 : 4 5 g Znajdowanie asemblacji 1 Wyszukiwanie po przyjaznej nazwie 2 Zczytanie klucza publicznego i porównanie tokenów 3 Odszyfrowanie podpisu i porównanie hasha Polityka łaczenia silnych i przyjaznych nazw Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 16 / 32
  • 19. Wersjonowanie asemblacji Silne nazwy Podpisywanie asemblacji Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 17 / 32
  • 20. Wersjonowanie asemblacji Silne nazwy Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 18 / 32
  • 21. Wersjonowanie asemblacji Silne nazwy Bezpieczne przechowywanie kluczy prywatnych Bezpieczenstwo najwazniejsze — trzymanie „pod kluczem” Jak budowac bez klucza prywatnego? Jak tworzyc aplikacje wykorzystujace (nie)podpisane asemblacje? Rozwiazanie delay signing klucz publiczny — tak, podpis — nie mozliwosc instalowania w GAC i odwołania nie mozna uruchamiac Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 19 / 32
  • 22. Wersjonowanie asemblacji Silne nazwy Bezpieczne przechowywanie kluczy prywatnych Bezpieczenstwo najwazniejsze — trzymanie „pod kluczem” Jak budowac bez klucza prywatnego? Jak tworzyc aplikacje wykorzystujace (nie)podpisane asemblacje? Rozwiazanie delay signing klucz publiczny — tak, podpis — nie mozliwosc instalowania w GAC i odwołania nie mozna uruchamiac Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 19 / 32
  • 23. Wersjonowanie asemblacji Silne nazwy Reguły kompatybilnosci nazwy prywatne współdzielone przyjazne wstecznie komp. niemozliwe silne po nr wersji po nr wersji Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 20 / 32
  • 24. Wersjonowanie asemblacji Polityka kompatybilnosci Własna polityka kompatybilnosci Nadpisywanie domyslnej polityki .NET Polityka dla pojedynczej aplikacji Polityka globalna (dla wszystkich aplikacji) Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 21 / 32
  • 25. Wersjonowanie asemblacji Polityka kompatybilnosci Polityka kompatybilnosci dla aplikacji <application name>.config 1 <? xml v e r s i o n=” 1 . 0 ” ?> 2 <c o n f i g u r a t i o n> 3 <runt ime> 4 <a s s emb l yBi n d i n g xmlns=” urn: schemas−mi c r o s o f t−com:asm . v1 ”> 5 <dependentAssembly> 6 <a s s emb l y I d e n t i t y name=”MyCl a s sLi b r a r y ” 7 publicKeyToken=” 229049078753819 b” /> 8 <p u b l i s h e r P o l i c y a p p l y=” y e s ”/> 9 <b i n d i n gRe d i r e c t o l dVe r s i o n=” 2 . 0 . 0 . 0 ” newVers ion=” 2 . 1 . 0 . 0 ” /> 10 <b i n d i n gRe d i r e c t o l dVe r s i o n=” 1 . 1 . 0 . 0 −1 . 3 . 0 . 0 ” newVers ion=” 2 . 1 . 0 . 0 ” /> 11 <codeBase v e r s i o n=” 3 . 2 . 1 . 0 ” h r e f=” f i l e : /// c : ntempnSomeApp” /> 12 </ dependentAssembly> 13 </ a s s emb l yBi n d i n g> 14 </ runt ime> 15 </ c o n f i g u r a t i o n> Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 22 / 32
  • 26. Wersjonowanie w VisualStudio Plan wykładu 1 Wersjonowanie asemblacji Numer wersji Modele wdrazania Silne nazwy Polityka kompatybilnosci 2 Wersjonowanie w VisualStudio 3 Wersjonowanie CLR 4 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 23 / 32
  • 27. Wersjonowanie w VisualStudio Praca z VisualStudio Miejsce przechowywania Prywatne kopie asemblacji Copy Local7! False Referencja do wersji Domyslne podazanie za wersja Specific version7! True Wersja pliku SolutionInfo.cs Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 24 / 32
  • 28. Wersjonowanie CLR Plan wykładu 1 Wersjonowanie asemblacji Numer wersji Modele wdrazania Silne nazwy Polityka kompatybilnosci 2 Wersjonowanie w VisualStudio 3 Wersjonowanie CLR 4 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 25 / 32
  • 29. Wersjonowanie CLR Wersje CLR Scisła zgodnosc wersji ze srodowiskiem .NET silne nazwy Polityka wersjonowania .NET okreslenie kompatybilnosci miedzy wersjami duza uwaga do wstecznej kompatybilnosci Wiele asemblacji o tej samej wersji Unifikacja wersji Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 26 / 32
  • 30. Wersjonowanie CLR Okreslanie wersji CLR Domyslnie najnowsza na maszynie taka, która potrafi obsłuzyc VisualStudio Wszystkie nowe wersje sa kompatybilne wstecznie Czesciowa kompatybilnosc w przód zachowanie wersji metadanych Samodzielne definiowanie kompatybilnosci supportedRuntime Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 27 / 32
  • 31. Wersjonowanie CLR Kompatybilnosc wersji CLR CLR 1.0 1.1 2.0 3.0 3.5 4.0 4.5 1.0 + + + + + + + 1.1 + + + + + + + 2.0 - - + + + + + 3.0 - - - + + + + 3.5 - - - + + + + 4.0 - - - - - + + 4.5 - - - - - + + Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 28 / 32
  • 32. Podsumowanie Plan wykładu 1 Wersjonowanie asemblacji Numer wersji Modele wdrazania Silne nazwy Polityka kompatybilnosci 2 Wersjonowanie w VisualStudio 3 Wersjonowanie CLR 4 Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 29 / 32
  • 33. Podsumowanie Podsumowanie Potezny mechanizm wersjonowania i zapewniania zgodnosci Rózne metody zarzadzania wersjami Wsparcie w narzedziach (VisualStudio i polecenia) Mozliwe własne polityki kompatybilnosci Polityka kompatybilnosci CLR Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 30 / 32
  • 34. Podsumowanie Do domu Przeczytac rozdział 5. „Programming .NET Components” Przyswoic modele wdrozen i polityki kompatybilnosci Przypomniec/zapoznac sie z tworzeniem GUI w WPF Stworzyc panel kontrolny w WPF Zapoznac sie z jednym z dedykowanych kontenerów DI Ninject Unity AutoFac . . . Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 31 / 32
  • 35. Podsumowanie Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #6 32 / 32