Come specificare il percorso del file di soluzione per il controllo delle versioni dei file di informazioni sull'assembly in MSBUILD

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

Domanda

Ci sto provando da un giorno ma senza fortuna.Il controllo delle versioni dell'assembly con MSBUILD funzionava prima, ma recentemente abbiamo spostato i file della soluzione in una cartella separata all'interno della radice del progetto e da allora il controllo delle versioni non funziona.

Di seguito la struttura del progetto

Cartella del codice

-> Cartella ProgettoA

-> Cartella ProgettoB

-> Cartella ProgettoC

-> Cartella Soluzioni

*In precedenza i file Soluzioni (.sln) si trovavano nella cartella Codice.

Quando eseguiamo MSBuild ricevo l'avviso seguente.

Non è stato fornito alcun file di informazioni sull'assemblaggio

Di seguito è riportata una versione ridotta del registro di compilazione.

Elimina area di lavoro

00:00 Elimina la directory delle origini

00:00 Crea spazio di lavoro

01:14 Ottieni spazio di lavoro

00:00 Assemblee di versione

00:00 Assemblyversion e assemblyfileversion Versione Assembly Elaborazione:Utilizzando i modelli dei numeri di versione inclusi nella definizione della build

00:00 Imposta tutti i valori delle proprietà dell'assemblaggio (b) Assiemi di versione con i seguenti schemi:Assemblyversion (1.0.0.0) e AssemblyFileversion (yyyy.mm.dd.b) Non sono stati forniti file di informazioni sull'assemblaggio

Di seguito è riportata l'attività MSBuild che produce il log precedente.

  <local:VersionAssemblyInfoFiles 
    AssemblyFileVersionPattern="[AssemblyFileVersionPattern]" 
    AssemblyInfoFilePattern=" AssemblyInfoFilePattern]" 
    AssemblyVersionPattern="[AssemblyVersionPattern]" 
    BuildDirectory="[BuildDirectory]" BuildNumberPrefix=" 
   [BuildNumberPrefix]" BuildSettings="[BuildSettings]" 
    DisplayName="Versioning Assemblies" 
    DoCheckinAssemblyInfoFiles="[DoCheckinAssemblyInfoFiles]" 
    ForceCreateVersion="[ForceCreateVersion]" 
    sap:VirtualizedContainerService.HintSize="200,22" 
    mva:VisualBasic.Settings="Assembly references and imported namespaces 
   serialized as XML namespaces" UseVersionSeedFile="[UseVersionSeedFile]" 
   VersionSeedFilePath="[VersionSeedFilePath]" Workspace="[Workspace]" 
   xmlns:local="clr-namespace:TfsBuild.Versioning.Activities;
   assembly=TfsBuild.Versioning.Activities">

      <sap:WorkflowViewStateService.ViewState>
        <scg:Dictionary x:TypeArguments="x:String, x:Object">
          <x:Boolean x:Key="ShouldCollapseAll">False</x:Boolean>
          <x:Boolean x:Key="ShouldExpandAll">True</x:Boolean>
        </scg:Dictionary>
      </sap:WorkflowViewStateService.ViewState>
 </local:VersionAssemblyInfoFiles>

Ho anche guardato la soluzione suggerita Qui ma non ho fortuna.Qualcuno può indicarmi la giusta direzione?Non sono esperto di MSBuild.

Grazie in anticipo.

È stato utile?

Soluzione

Ho finito per fare la seguente soluzione alternativa.Non abbiamo un'opzione per spostare tutte le soluzioni al livello root del progetto.

UN.Crea una nuova soluzione, cioè Someapp.lib.versioning.sln Questa soluzione vivrebbe nella cartella radice ed è utilizzata solo per il criterio del resto dei progetti.

B.Il progetto (.csproj) per SomeApp.Lib.Versioning.sln vivrebbe allo stesso livello del resto dei progetti.

Quindi la nuova struttura è

Cartella del codice

-> Cartella ProgettoA

-> Cartella ProgettoB

-> Cartella ProgettoC

-> Cartella Soluzioni

-> SomeApp.Lib.Versioning.sln

-> Cartella SomeApp.Lib.Versioning

C.Ora faccio riferimento a SomeApp.Lib.Versioning.proj da una delle soluzioni nella cartella Soluzioni.Ciò significa che SomeApp.Lib.Versioning.proj ha due soluzioni allegate per colpire.

D.Il progetto che visualizza la versione build utilizzerebbe il tipo, ad esempio il file Class da SomeApp.Lib.Versioning.proj

Secondo il controllo delle versioni della build standard, SomeApp.Lib.Versioning.proj avrebbe la versione di build corretta (SomeApp.Lib.Versioning.sln è nel livello Root)

Osservazioni:Questa è solo una soluzione alternativa e non una soluzione ideale.Ciò non eseguirà la versione di tutti gli assembly nel progetto.Ad esempio, se vogliamo sapere quale assembly è stato creato in quale versione, questo non funzionerà.È solo un segnaposto per ottenere la versione build della soluzione.

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