IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: c# form - automatické verzování programu

Aktivity
Avatar
Michaal.K
Člen
Avatar
Michaal.K:27.4.2016 15:51

Ahoj,
chtěl jsem se zeptat jak nejlépe udělat automatické verzování programu. Napadlo mě, že bych mohl program verzovat tak, že bych při každém překladu nastavil v AssemblyInfo.cs do Build Number datum (den, mesic, rok). Vypadalo by to asi takto: 1.0.0.27042016. Ale nevím jak přesně na to...
Nebo používáte někdo lepší způsob verzování?? Prosím podělte se o něj :-)
Díky za pomoc

 
Odpovědět
27.4.2016 15:51
Avatar
Odpovídá na Michaal.K
Neaktivní uživatel:27.4.2016 17:21

V tom assembly můžeš použít hvězdičku, která se postará o automatické zvyšování verze. Neovlivníš ale jak to číslo bude vypadat.

[assembly: AssemblyVersion("1.0.*")]
Nahoru Odpovědět
27.4.2016 17:21
Neaktivní uživatelský účet
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:28.4.2016 7:42

Já sice verzuju ručně, ale používám formát číslo-rok-měsíc-číslo verze, např. 1.16.04.2

Nahoru Odpovědět
28.4.2016 7:42
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Neaktivní uživatel
Michaal.K:28.4.2016 10:50

Ahoj,
to jsem zkoušel, ale to mi vrátí toto:
1.0.5962.17491
a já chtěl do tý verze programu nějak zakomponovat datum překladu. Nebo ztěchto čísel dostat datum, ale to nevím jak :-( Co jsem zjistil tak to třetí číslo by mělo být počet dní od 1.1.2000 a to čtvrté by měla být polovina početu sekund od půlnoci.
Napadlo mě ještě do vlastností projektu v Build events dát příkaz aby do assemblyVersion uložil aktuální datum... Ale to zatím taky nevím jak. Díky

 
Nahoru Odpovědět
28.4.2016 10:50
Avatar
LacoS.
Člen
Avatar
LacoS.:28.4.2016 14:22

Verziu programu tam davas ako Retazec pred prekladom!!! a az potom sa z toho vytvori *.exe; Nevies urobit zmenu v C# programe, aby to menilo verziu programu, lebo program sa spustu az po startnuti;

Jedina moznost je (co mi napada), ze si vyrobis program (versioner.exe/bat/com), ktory Ti vyrobi cely subor: AssemblyInfo.cs (alebo zmeni len verziu podla Tvojich poziadaviek), a pred samotnym prekladom najprv spustis versioner a az potom preklad.
(napr. vo VS: BuildEvents -> PreBuild-event command line)

 
Nahoru Odpovědět
28.4.2016 14:22
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Neaktivní uživatel
Michaal.K:10.5.2016 10:23

Tak jsem nakonec použil v assembly hvězdičku. A ve formuláři about zobrazuji verzi takto:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
Version verzeProg = assembly.GetName().Version;
DateTime datumPrekladu = new DateTime(2000, 1, 1).AddDays(verzeProg.Build).AddSeconds(verzeProg.Revision * 2);
if (Convert.ToInt32(datumPrekladu.Month) < 10)
{
        lblVersion.Text = (verzeProg.Major + "." + verzeProg.Minor + "." + datumPrekladu.Year + "." + "0" + datumPrekladu.Month);
}
else
{
        lblVersion.Text = (verzeProg.Major + "." + verzeProg.Minor + "." + datumPrekladu.Year + "." + datumPrekladu.Month);
}

Takže v softu verze programu vypadá takto: 1.0.2016.05
Ještě jsem se chtěl zeptat při kompilaci mi někdy vyskočí varování:

Assembly generation -- Verze 1.0.* určená pro sestavení verze souboru není v normálním formátu hlavní.dílčí.sestavení.revize.

a nevím proč?? Jestli to je, že jsem použil v assembly hvězdičku?

[assembly: AssemblyVersion("1.0.*")]

Díky

 
Nahoru Odpovědět
10.5.2016 10:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.