Come specificare il percorso del file di soluzione per il controllo delle versioni dei file di informazioni sull'assembly in MSBUILD
-
26-12-2019 - |
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.
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.