2010-10-25 15 views
9

Nella scheda di pubblicazione di Il mio progetto la versione corrente corretta è lì, 1.1.0.0 e in Programmi e funzionalità in Pannello di controllo mostra 1.1.0.0 ma quando faccio riferimento a Application.ProductVersion ottengo 1.0.0.0.Application.ProductVersion restituisce sempre 1.0.0.0

Cosa sto sbagliando o cosa mi manca qui?

Grazie.

risposta

13

La versione di assieme (nel file application.config) e la versione di ClickOnce Publish sono 2 numeri separati.

Se si desidera ottenere la versione ClickOnce in fase di esecuzione è possibile utilizzare il seguente codice

 If (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) Then 
     With System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion 
      Me.Text = "V" & .Major & "." & .Minor & "." & .Build 
     End With 
    End If 

Edit: Per il, numero completo di revisione a quattro segmenti di cui ha bisogno:

Me.Text = "V" & .Major & "." & .Minor & "." & .Build & "." & .Revision 
+0

È possibile fare riferimento a tali proprietà solo se si sta eseguendo la versione compilata e distribuita della propria app? Che dire nell'ambiente di sviluppo? – Tom

+0

Questo è il motivo per cui faccio il se per cominciare. Utilizzando questo metodo non è possibile accedere alla versione di distribuzione in dev perché non è distribuito.Nelle nostre applicazioni tendo a fare un altro e inserisco un segnaposto nell'ambiente di sviluppo. – DJIDave

+1

Quindi, come si accede alle stesse proprietà ma nell'ambiente di sviluppo? – Tom

1

Forse si dovrebbe cercare di mettere in modo esplicito un attributo sul montaggio: ad esempio: [assembly: AssemblyVersion ("1.1.0.0")]

Saluti, Michael.

4

So che questo è vecchio, ma in Visual Studio Express 2013 ho riscontrato lo stesso problema. Volevo usare ProductVersion variabile in questo modo:

msgbox (Application.ProductVersion) 

ma sempre tornato 1.0.0.0, non importa quello che ho messo nelle impostazioni per la Pubblica. Ho trovato invece che dovevo metterlo in Application> Assembly> File Version (ho aggiornato sia la versione Assembly che la versione file, ma è la versione file che conta).

Application > Assembly > File Version

Si arriva a questo utilizzando Project> Proprietà:

Project Properties

Ora, volevo solo i numeri maggiore e minore (per concatenare al titolo modulo) e quindi ho usato questo:

MsgBox(Application.ProductVersion.Substring(0, 3)) 

Spero che questo aiuti gli altri. E 'stato un sacco di scavare!

+0

@carkmagic: Grazie per questo ... –

7

Con System.Reflection è possibile utilizzare:

Dim versionNumber As Version 

versionNumber = Assembly.GetExecutingAssembly().GetName().Version 

e quindi chiamare .ToString() su quella, se necessario ...

e ancora un altro metodo è quello di chiamare

System.Windows.Forms.Application.ProductVersion 

(per completa Divulgazione L'ho trovato su MSDN Forums)

+0

Questo potrebbe essere il modo attuale, moderno e semplice per ottenere qualcosa a cui era difficile accedere. In ogni caso, questa è la risposta che ora dovrebbe essere sollevata. Ho provato entrambi i suggerimenti, entrambi hanno funzionato alla grande. Ho scelto il sistema. soluzione poiché non ha richiesto un'importazione extra per farlo funzionare (o anche ToString). –

Problemi correlati