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="&quot;$(VS90COMNTOOLS)..\IDE\devenv&quot; ..\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 ...

È stato utile?

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.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top