2013-03-19 3 views
30

Sto cercando di impostare il mio AssemblyVersion e AssemblyFileVersion attributi nel mio progetto in questo modo:CS1607: La versione specificata per la 'versione del file' non è nel formato normale 'major.minor.build.revision' in .NET

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

ma ottengo questo avvertimento:

CS1607: - '3.0 *' generazione Assembly la versione specificata per la 'versione del file' non è nel normale 'major.minor. build.revision 'format

Nella pagina AssemblyVersionAttribute Class al MSDN è la seguente:

È possibile specificare tutti i valori o si può accettare l'accumulo di default numero, il numero di revisione, o entrambi utilizzando un asterisco (*) . Per esempio , [assembly: AssemblyVersion ("2.3.25.1")] indica 2 come versione principale , 3 come versione secondaria, 25 come numero di build e 1 come numero di revisione. Un numero di versione come [assembly: AssemblyVersion ("1.2. *")] Specifica 1 come versione principale, 2 come versione secondaria e accetta i numeri di build e di revisione predefiniti. Un numero di versione come [assembly: AssemblyVersion ("1.2.15. *")] Specifica 1 come versione principale , 2 come versione secondaria, 15 come numero di build e accetta il numero di revisione predefinito.

Nota la sezione in grassetto. Qualcuno sa perché [assembly: AssemblyVersion("3.0.*")] (dal mio progetto) non è valido, ma [assembly:AssemblyVersion("1.2.*")] (dall'esempio MSDN) è valido?

In particolare, sono curioso di sapere se posso iniziare con un numero maggiore diverso da zero, poiché l'applicazione che sto scrivendo è la versione 3 del programma.

AGGIORNAMENTO >>> Spiacente, sembra che ci sia una risposta nell'altro post ... per favore vota per chiuderlo, grazie.

+1

possibile duplicato del [AssemblyInfo informazioni sulla versione asterischi] (http://stackoverflow.com/questions/10229711/assemblyinfo-version-information-asterisks) –

risposta

62

Stai assumendo che il problema è con questa linea:

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

quando è in realtà con questo:

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

Come the accepted answer to the question that you say is not a duplicate of this one dice:

Per la AssemblyFileVersionAttribute non è possibile utilizzare il carattere speciale *, quindi è necessario fornire un numero di versione completo e valido.

Che * sintassi funziona solo con l'attributo AssemblyVersion. Non funziona con l'attributo AssemblyFileVersion.

ci sono due soluzioni per raggiungere i risultati che probabilmente desiderate qui:

  1. semplicemente omettere il AssemblyFileVersion attributo del tutto. Ciò causerà la divinazione automatica delle informazioni sulla versione del file assembly dall'attributo AssemblyVersion (che è supporta la sintassi *).

  2. Rompete le pistole grandi e installate il Build Version Increment add-in, che offre più opzioni di incremento della versione di quante ne potete scuotere.

+0

Grazie, lei ha perfettamente ragione ... in qualche modo ho completamente perso quella linea nell'altro post, poi sono tornato qui per cancellare questo post, ma tu avevi già risposto, quindi non posso. Ho votato per chiuderlo invece. – Sheridan

+0

Un aggiornamento su questo, AssemblyFileVersion accetta il carattere '*' in .NET 4 in poi. –

+2

@Vince Non ha funzionato in Visual Studio 2010, sia per il targeting .NET 4 o qualsiasi altra versione. Vuoi dire che funziona con VS 2012? Questo è legato alla versione del compilatore/linker, non al framework di destinazione. –