Jaka wersja jest na produkcji? – Stamp.Fody

Update

Info ze strony projektu: The project is no longer maintained.

Sugerowane alternatywy:
https://github.com/GitTools/GitVersion
https://github.com/Invenietis/CK-Stamp (fork)

Aplikacja gdzieś działa. Zakładam, że jedynym środowiskiem nie jest Produkcja, ale są też Stagging, Test, Development (coś w tym rodzaju) i na każdym może być inny kod. Chcemy się dowiedzieć w jakiej wersji jest aplikacja (być do bólu pewnym — ręczne czy półautomatyczne podbijanie Assembly Version jest błędogenne).

Jeśli korzystamy z GITa, wszystko czego potrzebujemy to Stamp.Fody (nawet nie trzeba wchodzić na tą stronkę jeśli ktoś nie chce dokonfigurowywać 🙂 ).

Wystarczy użyć nugetowej konsoli
PM> Install-Package Stamp.Fody;

żadne dodatkowe konfiguracje nie są konieczne.

Stamp jest to plugin do projektu Fody. Fody modyfikuje biblioteki po skompilowaniu ich przez Visual Studio.

Po przebudowaniu projektu możemy podejrzeć właściwości wynikowej dll’ki.

ProductVersion with git commit hash

Jeśli chodzi o aplikacje webowe to najprostszym sposobem jest wrzucenie tej informacji w zakomentowany markup, przed koniec <body>:

<!-- ProductVersion: @Model.ProductVersion -->

Wynik – zostaniemy nawet powiadomieni gdy widzimy kod, który ma jakieś niekomitowane zmiany (HasPendingChanges)

<!-- ProductVersion: 0.1.0.0 Head:'master' Sha:eb224a194f96e9bedb44774459354e4aae32a60f HasPendingChanges -->

Kod pobierania Product Version:

public class AssemblyHelper
{
    public static string GetProductVersion()
    {
        Assembly assembly = Assembly.GetExecutingAssembly();
        FileVersionInfo fileVersionInfo = 
            FileVersionInfo.GetVersionInfo(assembly.Location);
        return fileVersionInfo.ProductVersion;
    }
}