2013-03-19 7 views
30

Próbuję ustawić moje AssemblyVersion i AssemblyFileVersion atrybuty w moim projekcie tak:CS1607: Wersja określona dla „wersja pliku” nie jest w normalnym formacie „major.minor.build.revision” w .NET

[assembly: AssemblyVersion("3.0.*")] 
[assembly: AssemblyFileVersion("3.0.*")] 

ale mam to ostrzeżenie:

CS1607: - '3.0 *' generacji Zgromadzenie wersja podana dla wersji pliku '' nie jest w normalnym „MAJOR.MINOR. build.revision "format

Na stronie AssemblyVersionAttribute Class w MSDN jest następujący:

Można określić wszystkie wartości lub można zaakceptować domyślny build numer, numer wersji, lub zarówno za pomocą gwiazdki (*) . W przypadku przykładu [assembly: AssemblyVersion ("2.3.25.1")] oznacza 2 jako główną wersję , 3 jako wersję dodatkową, 25 jako numer kompilacji i 1 jako numer wersji. Numer wersji, taki jak [assembly: AssemblyVersion ("1.2. *")] Określa 1 jako wersję główną, 2 jako wersję dodatkową i akceptuje domyślne numery wersji i kompilacji . Numer wersji, taki jak [assembly: AssemblyVersion ("1.2.15. *")] Określa 1 jako główną wersję , 2 jako wersję dodatkową, 15 jako numer kompilacji i akceptuje domyślny numer wersji .

Uwaga na pogrubioną sekcję. Czy ktoś wie dlaczego [assembly: AssemblyVersion("3.0.*")] (z mojego projektu) nie jest prawidłowy, ale [assembly:AssemblyVersion("1.2.*")] (z przykładu MSDN) jest poprawny?

W szczególności jestem ciekawy, czy mogę zacząć od niezerowego numeru głównego, ponieważ aplikacja, którą piszę, jest wersją 3 programu.

AKTUALIZACJA >>> Przepraszamy, odpowiedź na to pytanie znajduje się w drugim poście ... proszę, aby zamknąć, dzięki.

+1

możliwe duplikat [AssemblyInfo informacyjne wersja gwiazdki] (http://stackoverflow.com/questions/10229711/assemblyinfo-version-information-asterisks) –

Odpowiedz

62

Zakładasz, że problem jest z tej linii:

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

gdy jest to faktycznie z tego:

[assembly: AssemblyFileVersion("3.0.*")] 

Jak the accepted answer to the question that you say is not a duplicate of this one mówi:

Dla AssemblyFileVersionAttribute nie można użyć * znaku specjalnego, więc musisz podać pełny i prawidłowy numer wersji.

To * składnia działa tylko z atrybutem AssemblyVersion. Nie działa z atrybutem AssemblyFileVersion.

Istnieją dwa obejścia, aby osiągnąć rezultaty zapewne pragną tutaj:

  1. Wystarczy pominąć AssemblyFileVersion przypisują zupełnie. To spowoduje automatyczną interpretację informacji o wersji pliku zespołu z atrybutu AssemblyVersion (co oznacza, że ​​ma obsługuje składnię *).

  2. Wyrwij duże pistolety i zainstaluj Build Version Increment add-in, która oferuje więcej opcji zwiększania wersji niż możesz wstrząsnąć kijem.

+0

Dzięki, masz rację ... jakoś zupełnie brakowało tamtej linii w drugim poście, wróciłem tutaj, aby usunąć ten post, ale już na niego odpowiedziałeś, więc nie mogę. Głosowałem, aby zamiast tego zamknąć. – Sheridan

+0

Aktualizacja na tym, AssemblyFileVersion akceptuje znak '*' w .NET 4 dalej. –

+2

@Vince Nie działało w programie Visual Studio 2010, niezależnie od tego, czy kieruje on na platformę .NET 4, czy inną. Czy masz na myśli, że działa z VS 2012? Jest to związane z wersją kompilatora/konsolidatora, a nie ramą docelową. –