Come posso fare in modo che la versione di ClickOnce Publish corrisponda alla versione del file AssemblyInfo.cs?

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

Domanda

Ogni volta che pubblico l'applicazione in Fare clic su una volta Riesco ad aggiornare il numero di revisione di uno.Esiste un modo per ottenere automaticamente questa modifica per modificare il numero di versione nel file AssemblyInfo.cs (tutti i nostri report sugli errori esaminano la versione dell'assembly)?

È stato utile?

Soluzione

Utilizziamo Team Foundation Server Team Build e abbiamo aggiunto un blocco a TFSBuild.proj AfterCompile target per attivare la pubblicazione ClickOnce con il nostro numero di versione preferito:

<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
         Properties="PublishDir=$(OutDir)\myProjectPublish\;
                     ApplicationVersion=$(PublishApplicationVersion);
                     Configuration=$(Configuration);Platform=$(Platform)"
         Targets="Publish" />

IL PublishApplicationVersion viene generata da un'attività MSBuild personalizzata per utilizzare il numero TFS Changeset, ma potresti utilizzare la tua attività personalizzata o un soluzione esistente per ottenere il numero di versione dal file AssemblyInfo.

In teoria questo potrebbe essere fatto nel tuo file di progetto (che è comunque solo uno script MSBuild), ma consiglierei di non eseguire la distribuzione da un computer di sviluppo.

Ne sono sicuro altro integrazione continua Le soluzioni (CI) possono gestire questa situazione in modo simile.


Modificare: Scusa, ho interpretato la tua domanda al contrario.Dovrebbe essere possibile passare dal numero di versione ClickOnce al file AssemblyInfo.Sono sicuro che le attività della community di MSBuild (link sopra) hanno un'attività per l'aggiornamento del file AssemblyInfo, quindi ti servirebbe solo un'attività personalizzata per estrarre il numero di versione dall'XML di configurazione ClickOnce.

Tuttavia, potresti anche considerare di modificare la segnalazione degli errori per includere anche la versione di pubblicazione ClickOnce:

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
    Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
                                                        CurrentDeployment.CurrentVersion);
}

Altri suggerimenti

L'ho implementato di recente utilizzando alcune attività personalizzate.Un problema che ho riscontrato durante l'implementazione con ClickOnce è che tutti i file DLL vengono aggiornati.Ciò fa sì che l'aggiornamento ClickOnce scarichi tutti i file dell'applicazione a ogni aggiornamento.Ciò ignora le funzionalità interessanti della distribuzione ClickOnce in cui solo i file modificati vengono scaricati nuovamente in un aggiornamento.

Solo qualcosa a cui pensare quando si implementa qualcosa di simile con ClickOnce.

Passaggi:

  1. Utilizza il numero di versione incrementale esterno (se utilizzi un server di integrazione continua come CruiseControl.NET, proviene dall'etichetta di build).
  2. Utilizza GlobalVersionInfo.cs (a cui fanno riferimento i collegamenti al file da tutti i progetti nella soluzione) per conservare la versione corrente e aggiornarla nella build con l'attività AssemblyInfo dal Comunità MSBuild compiti.
  3. Copione Mago strumento da riga di comando da .NET SDK per aggiornare il manifesto ClickOnce, utilizzando la stessa versione (vedere il file -v E -mv interruttori).

A proposito, un bel vantaggio è che, ogni volta che pubblichi automaticamente una versione di distribuzione ClickOnce più recente tramite lo script di integrazione, se specifichi anche la versione minima in mage.exe (uguale alla versione), ogni utente verrà aggiornato automaticamente nell'applicazione successiva lancio.

Probabilmente sarà necessario creare una porzione di codice che aggiorni AssemblyInfo.cs in base al numero di versione archiviato nel file con estensione csproj.(La versione di distribuzione ClickOnce è archiviata all'interno di un tag XML.)

Dovresti quindi modificare il file .csproj per eseguire questa parte di codice quando viene eseguita la compilazione Publish|Release.Gli utenti di MSBuild hanno scritto sul blog come eseguire azioni personalizzate durante determinati tipi di build;controlla il Blog del team MSBuild.

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