Mam skrypt kompilacji w MSBuild, który automatycznie pobiera git commit aktualnie wyrejestrowany, a następnie dodaje atrybut jak to w czasie kompilacji do zespołu:
[assembly: AssemblyInformationalVersion("0.2.13+e3a6f2c1")]
[assembly: AssemblyVersion("0.2")]
[assembly: AssemblyFileVersion("0.2.13")]
Część liczbowa wersja pochodzi z plik version.txt, który odczytuje mój skrypt kompilacji.
Wersja złożona jest pozbawiona trzeciego oktetu, ponieważ unika zwiększania wymagań przekierowania podczas zwiększania numeru kompilacji. AssemblyFileVersion zawiera wszystkie dane dozwolone przez ten atrybut, a AssemblyInformationVersion może być dowolnym łańcuchem, który chcesz, więc użycie semantic versioning do dołączenia identyfikatora zatwierdzenia git pozwala ci dokładnie wskazać, która wersja źródłowa zbudowała ten projekt.
Po pomyślnym zakończeniu kompilacji można dodać znacznik v0.2.13, jeśli chcesz. Osobiście, jak tylko zbuduję wersję ostateczną, zwiększam plik version.txt, aby wszystkie kolejne kompilacje miały następny wyższy numer wersji. Każda kompilacja będzie miała to miejsce, dopóki nie wydam tej wersji, oznaczając commit, zwiększając ponownie plik version.txt i powtarzam.
Nawiasem mówiąc, ciąg znaków AssemblyInformationalVersion
pojawia się we właściwościach pliku z Eksploratora Windows, więc zapewnia to gwarantowany sposób przejścia z dowolnego zbudowanego pliku binarnego do zgodnego oryginalnego kodu źródłowego. Ponadto, niestety, to podejście powoduje, że csc.exe zgłasza AL ???? ostrzeżenie dotyczące kompilacji, ponieważ format wersji semantycznej nie jest zgodny ze składnią x.y.z. Nie oznacza to, że coś jest zepsute, i po prostu zignorowałem ostrzeżenie.
Nigdy nie rozpakowuję bezpośrednio źródeł, ponieważ jest to zbędne z odpowiedzialnością kontroli źródła. Przynajmniej jeśli twoje źródło jest hostowane przez jakąś usługę online (nawet w twoim prywatnym intranecie), większość hostów git oferuje opcję "w locie" pobierania zip dla danego identyfikatora commit.
http://www.tigraine.at/2009/10/27/symplifying-releases-through-git/ oraz https://github.com/Tigraine/elms-connector ilustrują podobne podejście. Bez automatycznego zatwierdzania. – VonC
@VonC Popatrzę teraz na to ... –