Jak najlepiej używać wersji pliku i wersji złożonej?
W. Net są dostępne dwa numery wersji podczas budowania projektu, Wersja pliku i wersja Assembly. Jak używasz tych liczb? Trzymając je tak samo? Automatyczne zwiększanie jednego, ale ręczne zmienianie drugiego?
A co z atrybutem AssemblyInformationalVersion
?
Znalazłem artykuł support Microsoft Knowledge Base (KB), który dostarczył pomocy: Jak używać wersji Assembly i wersji pliku Assembly .
8 answers
W scenariuszu, w którym mam wiele zestawów plików (np. 1 exe i 5 bibliotek DLL), użyję innej wersji pliku dla każdego z nich, ale tej samej wersji zestawu dla wszystkich z nich, pozwalając Ci wiedzieć, z którym exe każde z bibliotek DLL.
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-08-18 15:20:59
W rozwiązaniach z wieloma projektami, jedną rzeczą, którą uznałem za bardzo pomocną, jest to, aby wszystkie pliki AssemblyInfo wskazywały na jeden projekt, który reguluje wersjonowanie. Więc moje AssemblyInfos mają linię:
[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]
Mam projekt z jednym plikiem, który deklaruje ciąg znaków:
namespace Foo
{
public static class StaticVersion
{
public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
}
}
Mój zautomatyzowany proces budowania po prostu zmienia ten ciąg, wyciągając najnowszą wersję z bazy danych i zwiększając drugi ostatni numer.
Zmieniam tylko główny build numer, gdy zestaw funkcji zmienia się dramatycznie.
W ogóle nie zmieniam wersji pliku.
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-08-18 16:03:33
Artykuł KB wymienia najważniejsze rozróżnienie: wersje plików są używane tylko do celów wyświetlania, podczas gdy wersja złożeniowa odgrywa ważną rolę w ładowaniu. NET.
Jeśli zmienisz numer wersji złożenia, zmieni się tożsamość całego złożenia. Programiści będą musieli przebudować, aby odwoływać się do nowej wersji (chyba że wprowadzisz "politykę automatycznego wersjonowania"), a w czasie wykonywania tylko zespoły z pasującymi numerami wersji będą załadowany.
Jest to ważne w moim środowisku, gdzie potrzebujemy zwiększającego się, dobrze widocznego numeru wersji do celów audytu, ale nie chcemy zmuszać programistów do przebudowy lub posiadania wielu wersji jednocześnie w produkcji. W tym przypadku dla drobnych zmian zgodnych wstecznie aktualizujemy wersję pliku, ale nie wersję assembly.
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-08-18 17:25:54
Wersje plikówNiezupełnie. Wersja pliku jest również ważna dla Instalatora Windows podczas uaktualniania istniejącej wersji nad poprzednią.Są używane tylko do celów wyświetlania, podczas gdy wersja złożenia odgrywa ważną rolę w ładowaniu.NET.
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
2009-11-12 16:42:09
W mojej obecnej aplikacji, każdy projekt VS ma link do pliku źródłowego "AssemblyBuildInfo", który ma następujące atrybuty:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright © 2009 Acme Corporation")]
W ten sposób wszystkie zespoły w moim rozwiązaniu mają tę samą wersję i informacje o firmie(co oznacza, że jeśli muszę ją zmienić, zmienię ją tylko raz). Wyłączając FileVersion, jest ona automatycznie ustawiana na AssemblyVersion.
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
2009-11-12 16:48:08
@ Adam: zmieniasz wersję pliku przy każdym build? Czy używasz kontroli wersji (SYN lub VSS) i używasz tych informacji, aby połączyć źródło z powrotem do plików binarnych?
Wydaje się mieć sens, że wersja Assembly pozostaje taka sama. tj. "2.0.0.0". Odpowiada to wdrożeniu produktu.
Wersja pliku zmienia się tak, aby pasowała do wersji z kontrolki źródłowej. "2.0.??.revision" dałoby to link z określonego dll (lub exe) do źródła, które zbudowało to.
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-08-18 15:55:13
Napisałem post na blogu na ten temat, który może być przydatny dla społeczności http://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx{[2]
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
2011-12-11 22:14:30
Trzymam je tak samo. Ale wtedy nie mam złożeń multifile, co jest wtedy, gdy numer AssemblyVersion staje się ważny. Używam kodowania daty w stylu Microsoft dla moich numerów kompilacji, zamiast automatycznego zwiększania (nie uważam, ile razy coś zostało zbudowane, aby było tak ważne).
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-08-18 15:11:51