Come usare svn versione Task per impostare la versione di un progetto VB
-
02-10-2019 - |
Domanda
Ho un Visual Studio 2008 soluzione in cui l'exe uscita principale è un VB.Net WinForms exe che ha diversi VB.Net e C # di dll collegati dalla stessa soluzione. L'intera soluzione è sotto il controllo di versione con la sovversione.
Ora voglio automagicamente aggiornamento da file generati con il numero svn di revisione corrente. A tal fine ho trovato questo progetto pulito: http://svnversiontasks.codeplex.com/ È inoltre necessario i MSBuild.Communuity.Tasks per questo al lavoro.
C'è stato un esempio MSBuild su come aggiornare il numero di giri per ogni singolo progetto nella soluzione che uso:
<Import Project="$(MSBuildExtensionsPath)\SvnTools.Targets\SvnTools.Tasks.VersionManagement.Tasks" />
<Target Name="build">
<CreateItem Include="../**/AssemblyInfo.vb;../**/AssemblyInfo.cs;../**/Properties/AssemblyInfo.cs">
<Output TaskParameter="Include" ItemName="AssemblyInfoFiles" />
</CreateItem>
<CreateItem Include="../**/*.vdproj;*.vdproj">
<Output TaskParameter="Include" ItemName="DeploymentProjectFiles" />
</CreateItem>
<UpdateVersion AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" Format="yyyy.mm.dd.rev" />
<Exec Command=""$(VS90COMNTOOLS)..\IDE\devenv" ..\MyApp.sln /build" />
<RevertVersionChange AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" />
</Target>
ho modificato il file originale per includere anche il file AssemblyInfo.vb e salvato come file msbuild.proj.
Tuttavia, se eseguo msbuild dalla console vedo che i progetti C # vengono aggiornati (posso anche confermare che dalle proprietà del dll di uscita, ma il mio progetto VB rimane invariato:
Reverting version number change: ../App1\AssemblyInfo.vb
Updating version number (to rev 0) for file: ../App1\AssemblyInfo.vb
D:\Source\MyApp\MyAppDeploy\MyAppDeploy.csproj : warning : Version attribute not found, file not updated.
Reverting version number change: ../App2\Properties\AssemblyInfo.cs
Updating version number (to rev 0) for file: ../App2\Properties\AssemblyInfo.cs
Successfully updated file.
Forse il compito non supporta VB.Net. Ma forse qualcuno ha una soluzione per questo ...
Soluzione
Se si guarda in UpdateVersion codice sorgente compito si dovrebbe che utilizza Regex per analizzare il file AssemblyInfo quindi non è sorprendente se non funziona con i file di VB.
Si potrebbe fare quello che vuoi, utilizzando solo MSBuild.Community.Tasks:
- svnversion per ottenere la revisione (Si potrebbe anche usare il compito SvnGetProperty da SvnVersionTasks)
- AssemblyInfo per generare le informazioni di montaggio con la versione giusta. Questa attività gestiscono VB.