Cosa c'è di sbagliato con il mio Visual Studio incremento automatico costruire la sintassi numero?

StackOverflow https://stackoverflow.com/questions/4359597

Domanda

so che Visual Studio non ha modo di incrementare il numero di build in un modo che la gente si aspetta, ma sostenere randomizzazione il numero di build :

Il mio file AssemblyInfo.cs contiene:

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]

E tuttavia dà, ciò che appare a me, i risultati non chiacchiere (anche tenendo conto di numeri di versione pseudo-casuali di Visual Studio): alt text

Quindi la domanda più semplice è:

  

Che cosa ho messo in AssemblyInfo.cs per farlo funzionare?

MSDN (riformattato per chiarezza) :

  

È possibile specificare tutti i valori o si   può accettare il numero di build di default,   numero di revisione, o entrambi utilizzando un   asterisco (*). Ad esempio,

[assembly:AssemblyVersion("2.3.25.1")]
     

indica 2 come versione principale, 3 come   la versione minore, 25 come la build   il numero, e 1 come il numero di revisione.   Un numero di versione come

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

specifica 1 come la versione principale, 2 come   la versione minore, e accetta la   numeri predefiniti di build e di revisione. UN   numero di versione come

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

specifica 1 come la versione principale, 2 come   la versione minore, 15 come la build   il numero, e accetta il default   numero di revisione.

     

Gli incrementi numero di build di default   quotidiano. Il numero di revisione di default   è casuale.

Lo prendo a significare che i numeri di versione sono:

[1.0.0.0]
major.minor.build.revision

, mentre

[1.0.0.*]
major.minor.build.[random]

e

[1.0.*]
major.minor.[daynumber].[random]
È stato utile?

Soluzione

Sono al 99% sicuro che il problema riscontrato è causato da questa linea:

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

Il problema è che Visual Studio non supporta incremento automatico l'AssemblyFileVersion, solo il AssemblyVersion. Così il resto del codice dovrebbe andare bene. Provate semplicemente commentando che la seconda linea e vedere se si ottiene i risultati che vi aspettate. Tutte le informazioni sulla versione per il file e il prodotto dovrebbe essere equivalente.

Non so esattamente dove questo è ufficialmente documentata (diverso il messaggio di errore viene visualizzato se si tenta di immettere l'asterisco per il campo "Versione file" nella finestra "Informazioni Assemblea" in Proprietà del progetto), ma funziona bene come questo su ogni macchina a cui ho avuto accesso.

Se sei completamente malato di come Visual Studio fa le cose quando è lasciato a se stesso (si menziona la stupidità dei suoi numeri pseudo-casuali), dare questo piccolo gioiello di un componente aggiuntivo una prova. Cambierà la vostra vita.

Altri suggerimenti

La schermata mostra sta utilizzando il gestore di estensione della shell finestra delle proprietà che visualizza la non gestito risorsa di versione che è incorporato nella maggior parte dei file EXE e DLL, compresi quelli NET. Purtroppo, a partire da Vista, tale gestore non viene più visualizzato campi opzionali a quella risorsa. Il campo ProductVersion è uno standard, ma è non il [AssemblyVersion]. Dovreste aggiungere l'attributo corrispondente in AssemblyInfo.cs. Ad esempio:

  

[assembly: AssemblyInformationalVersion ( "1.2.3.4")]

Non è un grande nome partita, purtroppo. Quando è presente, il compilatore copiare il valore del [AssemblyVersion], è così che si è conclusa con l'asterisco.

Il compilatore realtà non emettono il campo aggiuntivo nella risorsa. Lo si può vedere con File + Open + File, selezionare il montaggio, aprire la risorsa nodo di versione e fare doppio clic su # 1:

alt text

Il che è stato generato da:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyInformationalVersion("1.2.3.4")]
[assembly: AssemblyFileVersion("1.0.0.0")]

E 'lì, appena può non vedere in Explorer. Bummer, si spera faranno fix che un giorno. Da notare anche l'generata [AssemblyVersion], il numero di revisione è 18404. Non è casuale, ho costruito questo EXE alle 10:13. Questo è stato 18404 * 2 secondi dalla mezzanotte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top