Najlepsze praktyki w zakresie nazewnictwa i wersjonowania zespołów?

Szukam dobrych praktyk dotyczących nazywania zestawów i ich wersjonowania. Jak często zwiększasz wersje major lub minor?

W niektórych przypadkach widziałem wydania przechodzące od wersji 1.0 do 3.0. W innych przypadkach wydaje się, że utknął w wersji 1.0.2.xxxx.

To będzie dla wspólnego zestawu używanego w wielu projektach w całej firmie. Czekamy na dobre informacje.

Author: starblue, 2008-10-14

4 answers

Kilka dobrych informacji z tego artykułu{[2] } na blogu Suzanne Cook na MSDN (dodano 2003-05-30):

Kiedy zmienić wersję pliku / Assembly

Po pierwsze, wersje plików i assembly nie muszą się pokrywać ze sobą. Polecam aby wersje plików zmieniały się z każdym buduj. Ale, nie zmieniaj wersji assembly z każdym kompilacji tylko tak że można odróżnić dwie wersje tego samego file; użyj do tego wersji pliku. Decydowanie, kiedy zmienić montaż wersje wymagają omówienia typów buildów do rozważenia: Wysyłka i bez wysyłki.

Budowa Bez Wysyłki
ogólnie rzecz biorąc, zalecam pozostawienie Bez Wysyłki wersji montażowych takich samych między wersjami wysyłkowymi. To unika problemów z ładowaniem złożeń z powodu wersji niedopasowania. Niektórzy wolą używać polityki wydawcy do przekierowywania nowych wersje montażowe dla każdej konstrukcji. Polecam przeciw temu dla buduje się jednak bez wysyłki: nie unika całego załadunku problemy. Na przykład, jeśli partner x-kopiuje Twoją aplikację, może nie wiedzieć, aby zainstalować Zasady wydawcy. Wtedy Twoja aplikacja zostanie zepsuta ich, nawet jeśli działa dobrze na Twojej maszynie.

Ale jeśli są przypadki, w których różne aplikacje na tym samym maszyna musi wiązać się z różnymi wersjami twojego montażu, I zaleca się podawanie tym kompilatorom różnych wersji montażowych, aby poprawny dla z każdej aplikacji można korzystać bez konieczności używania LoadFrom / etc.

Wysyłka buduje
jeśli chodzi o to, czy jest to dobry pomysł, aby zmienić tę wersję dla buildów wysyłki, to zależy od tego, jak chcesz Wiązanie do praca dla użytkowników końcowych. Czy chcesz, aby te buildy były obok siebie lub na miejscu? Czy istnieje wiele zmian między tymi dwoma kompilacjami? Czy oni chcesz złamać kilku klientów? Czy obchodzi cię, że je łamie (czy chcesz zmusić użytkowników do korzystania z ważnych aktualizacji)? Jeśli tak, ty należy rozważyć zwiększenie wersji montażowej. Ale z drugiej strony, rozważ, że robienie tego zbyt wiele razy może zaśmiecić dysk użytkownika z przestarzałymi złożeniami.

Po zmianie wersji montażu
aby zmienić wersję na nową, polecam ustawienie zmiennej na wersję w pliku nagłówkowym i zastąpienie kodowania twardego w źródłach zmienna. Następnie uruchom pre-procesor podczas kompilacji, aby umieścić w poprawna wersja. I zalecamy zmianę wersji zaraz po wysyłce, Nie tuż przed, tak, że jest więcej czasu na złapanie błędów ze względu na zmiana.

 24
Author: Gulzar Nazim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-02 13:03:34

Jednym ze sposobów definiowania wersjonowania jest nadanie znaczenia semantycznego każdej części:

  • Przejdź z N. x do n+1.0, gdy zgodność zostanie przerwana z nowym relase
  • Przejdź z N. m do N. m+1 po dodaniu nowych funkcji, które nie naruszają kompatybilności
  • Przejdź z N. M. X do N. M. X+1 po dodaniu poprawek błędów

Powyższe jest tylko przykładem - chciałbyś zdefiniować zasady, które mają dla ciebie sens. Ale to bardzo miłe dla użytkowników, aby szybko powiedzieć, czy niezgodności oczekuje się po prostu patrząc na wersję.

I nie zapomnij opublikować zasad, które wymyśliłeś, żeby ludzie wiedzieli, czego się spodziewać.
 21
Author: andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 02:36:32

Wersjonowanie semantyczne ma zestaw wytycznych i zasad, jak to zastosować (i kiedy). Bardzo proste do naśladowania i po prostu działa.

Http://semver.org/

 8
Author: Bil Simser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-18 22:35:16

Pierwszą rzeczą, którą polecam, jest zapoznanie się z różnicami pomiędzy wersją Assembly i wersją Pliku. Niestety,. NET ma tendencję do traktowania ich jako takich samych, jeśli chodzi o Pliki AssemblyInfo, ponieważ zwykle umieszcza tylko AssemblyVersion i pozwala FileVersion na domyślną wartość tej samej wartości.

Skoro powiedziałeś, że jest to Wspólne Zgromadzenie, zakładam, że masz na myśli to, że jest dzielone na poziomie binarnym (nie przez włączenie projektu do różnych rozwiązań). Jeśli w tym przypadku chcesz być bardzo świadomy o zmianie wersji Assembly, ponieważ tego używa. NET do silnej nazwy zespołu (aby umożliwić umieszczenie go w GAC), a także tworzy "pełną nazwę zespołu". Gdy wersja złożenia ulegnie zmianie, może ona zawierać zmiany zrywające dla aplikacji, które jej używają bez dodawania wpisów przekierowania złożenia w aplikacji.plik konfiguracyjny.

Co do nazewnictwa, to chyba zależy od tego ,jakie są zasady nazewnictwa Twojej firmy (jeśli takie istnieją) i celu biblioteka. W przypadku exmaple, jeśli ta Biblioteka zapewnia" podstawową " (lub systemową) funkcjonalność, która nie jest specyficzna dla konkretnego produktu lub linii biznesowej, można ją nazwać:

CompanyName.Framework.Core 

Jeśli jest częścią większej biblioteki, lub po prostu

CompanyName.Shared
CompanyName.Core
CompanyName.Framework

Jeśli chodzi o to, kiedy zwiększać numery wersji, to nadal jest to raczej subiektywne i zależy od tego, co uważasz za reprezentację każdej części numeru kompilacji. Domyślnym programem Microsoftu jest Major.Drobne.Buduj.Rewizji, ale to nie znaczy, że ty nie możesz wymyślić własnych definicji. Najważniejsze jest, aby być konsekwentnym w swojej strategii i upewnić się, że definicje i zasady mają sens we wszystkich twoich produktach.

W prawie każdej wersji schematu widziałem dwie pierwsze części są duże.Drobne. Główny numer wersji zwykle zwiększa się, gdy są duże zmiany i / lub zmiany łamiące, podczas gdy mniejszy numer wersji zwykle zwiększa się, aby wskazać, że coś się zmieniło, co nie było złamaniem zmiana. Pozostałe dwie liczby są znacznie bardziej subiektywne i mogą być " kompilacją "(która często jest liczbą seryjną lub sekwencyjnie aktualizującą numer, który zmienia się każdego dnia) oraz" rewizją " lub numerem poprawki. Widziałem też ich odwrócenie (dając Major.Drobne.Rewizja.Build), gdzie build to sekwencyjnie rosnący numer z automatycznego systemu budowania.

Należy pamiętać, że wersje major i minor asemblera są używane jako numer wersji biblioteki typów, gdy assembly jest eksportowany.

Wreszcie, spójrz na niektóre z tych zasobów, aby uzyskać więcej informacji:

Http://msdn.microsoft.com/en-us/library/51ket42z.aspx

Http://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.aspx

Http://blogs.msdn.com/suzcook/archive/2003/05/29/57148.aspx

 6
Author: Scott Dorman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 13:27:05