2012-05-07 7 views
5

Abbiamo un componente aggiuntivo di Outlook che utilizza la distribuzione ClickOnce.Implementazione ClickOnce con MSBuild -> Come passare il numero di build corrente per versione dell'applicazione/o autoincremento

Una volta che lo sviluppatore ha controllato la build, il PC mette in coda una build e l'applicazione viene pubblicata in una posizione su un'unità condivisa.

Il problema è che la build non modifica la versione di pubblicazione nella versione corrente dell'assembly e quindi pubblica nella cartella della versione precedente che risulta in un programma di installazione danneggiato che dice che la versione non può essere installata.

Ho letto that article. E ho impostato [assembly: AssemblyVersion ("1.0. *")]. Ancora niente.

Ho trovato un modo per ovviare a questo problema incrementando lo <ApplicationVersion></ApplicationVersion> nel file * .csproj. Ma voglio che sia automatizzato.

L'altra soluzione era durante l'esecuzione msbuild.exe:

/target:publish /property:PublishDir="\\sharedDir\\" /property:GenerateManifests=true 
/property:ApplicationVersion=1.0.0.123 

E ancora non è automatizzato. Mi piacerebbe davvero passare il numero di build corrente su msbuild.exe o su ogni build sostituire il valore in <ApplicationVersion></ApplicationVersion> con il numero di build effettivo. oppure c'è un'altro modo?

+0

Che server di build stai usando? Regolazione automatica della velocità? Jenkins/Hudson? TFS? –

+0

Il server di build è TFS. –

+0

Sulla base della mia sperimentazione personale, ritengo che l'incremento del valore nel file * .csproj sia il modo corretto e più semplice per la creazione automatica di un'applicazione ClickOnce. In tal modo i manifesti si rivelano corretti. Se si passa semplicemente a /t:ApplicationVersion=a.b.c.d, questo NON ricrea correttamente il manifest dell'applicazione. Basta automatizzare l'incremento di quel valore nel file * .csproj tramite una stringa sostituita e quindi eseguire MSBuild SENZA il valore/t: ApplicationVersion e tutto dovrebbe andare bene. Lo faccio e gli aggiornamenti automatici funzionano alla grande. –

risposta

0

Io uso Hudson come server di build e MSBuild per creare. Hudson imposta una variabile di ambiente con il numero di build. Passo quindi a quella variabile d'ambiente come argomento da linea di comando a un programma che ho scritto che analizza il file assemlyinfo.cs e aggiorna la versione dell'assembly, la versione del file e la versione informativa dell'assembly.

Un approccio alternativo sarebbe quello di creare un'attività personalizzata per eseguire questa operazione invece di un eseguibile (ancora più semplice ora poiché ora supporta inline tasks). La versione precedente di TFS ha fatto qualcosa di simile in cui impostare una variabile enviornment, ma potrebbe essere cambiato in TFS 2010.

Qui ci sono risorse che possono aiutare con quel:

Inoltre, stiamo usando la linea di Mage comando per creare il ClickOnce applicazione e distribuzione. Chiamiamo Mage come attività Exec nel progetto MSBuild.

5

Stavo incontrando lo stesso problema che è come sono arrivato qui. Sono stato in grado di risolvere usando come base il codice della tua domanda. Ecco i passaggi per risolvere usando TFS.

Apri il modello di costruzione e apri la scheda Argomenti nella parte inferiore del flusso di lavoro. Trova MSBuildArguments e modifica il valore predefinito.Qui di seguito è quello che ho finito con:

// Note: You can use /p for /property and /t for /target 

"/t:Publish /p:PublishDir=<PublishDirectory> /p:ApplicationVersion=" 
    + Date.Today.ToString("yyyy") + "." 
    + Date.Today.ToString("MMdd") + "." 
    + Date.Now.Hour.ToString() + "." 
    + Date.Now.Minute.ToString() 

Certo, ora è necessario salvare e check-in nuovo file build. Ho avuto problemi nel far sì che la mia definizione build usasse il nuovo valore, quindi ho appena creato una nuova definizione di build.

che creerà una nuova cartella Application come:

<ApplicationName>_2013_0315_09_55 

So che questa è una nuova risposta a un vecchio post, quindi sono sicuro che hai trovato un'altra soluzione, ma spero che questo aiuta a chiunque altrimenti chi vuole utilizzare la distribuzione ClickOnce con TFS.

Problemi correlati