.Net 5 Api ustawianie wersji aplikacji

0

Cześć,
w jaki sposób mogę w web api napisanej w .net 5 ustawić wersję całej aplikacji?
Chodzi mi o to bym mógł w każdej chwili sprawdzić jaka wersja backendu znajduje się na serwerze.
Widziałem, że jest biblioteka MVC Versioning, ale na przykładach pokazywane było wersjonowanie dla konkretnych metod z tym że front musi mieć zdefiniowaną albo domyślną wersję, albo wysyłać request pod konkretną wersję, nie widziałem by można było coś takiego robić tylko czysto informacyjnie.
Czy jest możliwe zrobienie czegoś takie, że prowadzę sobie change log z wersją całej aplikacji czyli mam przykładowo v1.0.0.11 -> dodaję jakieś zmiany, nową metodę zmieniam wersję na v1.0.0.12 i robie deploy i wiem że aktualnie na serwerze mam backend w danej wersji.
A druga sprawa czy można w ten sposób wersjonować konkretne metody? Np. Mam GetXXX w wersji v1.1 w tej wersji znajdę bug, poprawię go zmienię na wersję v1.2 i widzę w przeglądarce w responsie, że aktualnie frontend używa wystawionej metody w danej wersji.

1

Możesz ustawić sobie wersję w pliku .csproj, także np. automatycznie podczas budowania aplikacji z gitversion czy z czegoś, natomiast odczytywać za pomocą Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;

A co do tego drugiego - Mvc.Versioning właśnie - https://www.blogofpi.com/versioning-web-api/

0

Masz może jakiś tutorial odnośnie budowania aplikacji z gitversion?
Rozumiem, że propercja ta wyświetla Page Version?
A co np z assembly version i assembly file version?

I jeszcze jedno pytanie da sięInformational Version ustawić z poziomu kodu?

2

Ja osobiście używam Azure DevOps (https://gitversion.net/docs/reference/build-servers/azure-devops oraz przykładowo https://github.com/ktos/Ktos.AspNetCore.Authentication.ApiKeyHeader/blob/master/azure-pipelines-tag.yml#L32).

Do wyświetlania tej InformationalVersion możesz zobaczyć jak ma to zrobione tutaj: https://github.com/ktos/TemperatureService3/blob/master/TemperatureService3/Services/AppVersionService.cs oraz https://github.com/ktos/TemperatureService3/blob/master/TemperatureService3/Views/Shared/_Layout.cshtml#L87 - aczkolwiek w tej aplikacji numer wersji jest brany z generowanego przez Azure DevOps (postaci 20210525.1 na przykład) - też jest przykład w budowaniu w YAML-u dla Azure DevOps.

AssemblyVersion, AssemblyFileVersion i InformationalVersion są zbliżone - w zależności od tego co ci jest potrzebne. InformationalVersion może zawierać dodatkowe informacje i być np. postaci 1.0.0-beta.1+21.Sha.abcdef, podczas gdy AssemblyVersion i AssemblyFileVersion muszą być formatu Major.Minor.Patch.Subpatch zdaje się. Ja wybrałem Informational, bo mogę tam trzymać dodatkowe rzeczy.

I jeszcze jedno pytanie da sięInformational Version ustawić z poziomu kodu?

Nie da się tego ustawić z poziomu kodu, to jest atrybut nadawany assembly podczas kompilacji.

1

Wersją aplikacji będę sobie operował za pomocą assembly file version, natomiast InformationalVersion skonstruowałem tak by zawierał datę kompilacji, więc chyba jestem zadowolony :)

0

Polecam Nuke do budowania automatyzacji deploy zmiany wersji itd https://nuke.build/index.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1