2009-10-27 11 views
15

Quiero crear un número de compilación que se vea como Major.minor.Date.LastChangeSetInTFS, el problema es cómo obtener el último número de conjunto de cambios del TFS. ¿Hay alguna propiedad, o algo así?Número de versión de TFS y msbuild con el último conjunto de cambios

+0

Esto ya ha sido respondido, eche un vistazo a: http://stackoverflow.com/questions/545566/aligning-assembly-version-nu-mbers-with-tfs-buildnumber – Burt

+0

@Burt La pregunta/respuesta vinculada es sobre la Generado automáticamente TFS BuildNumber, que es completamente diferente al número del conjunto de cambios. – makhdumi

Respuesta

10

OK, finalmente, he encontrado una solución. Aquí hay una tarea que le proporcionará el último número de conjunto de cambios y creará una propiedad para insertarlo en un número de compilación de información de conjunto. El problema principal estaba en la propiedad TfsLibraryLocation falta (sin ella, debe estar apuntando a las bibliotecas de GAC, pero no fue así)

<Target Name="GetVersionChangeSet"> 
<TfsVersion 
    TfsLibraryLocation="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies"  
    LocalPath="$(SolutionRoot)"> 
    <Output TaskParameter="Changeset" PropertyName="ChangesetNumber"/> 
</TfsVersion> 
<Message Text="TFS ChangeSetNumber: $(ChangesetNumber)" /> 

+3

Para VS2010, TfsLibraryLocation ha cambiado a "$ (DevEnvDir) ReferenceAssemblies \ v2.0". Además, $ (SolutionRoot) no existe de forma natural, pero $ (SolutionDir) sí lo hace. –

+1

La tarea TfsVersion no parece funcionar para esto más tiempo con TFS 2010. He publicado una respuesta para TFS 2010 aquí: http: //stackoverflow.com/questions/11748338/tf-exe-on-tfspreview/12923581 –

2

Según un comentario en this page puede utilizar la línea de comando tf changeset /latest /i pero no puedo verificarlo desde su casa.

+0

'tf changeset/latest/i' obtiene la información correcta, pero ¿cómo poner eso en una propiedad? –

0

Echa un vistazo a los siguientes proyectos de extensión. Encontrará aproximadamente 5 formas diferentes de resolver su problema.

  • MSBuild Extension Pack - mantenido activamente, esta extensión proporciona más de 280 tareas
  • MSBuild Community Tasks Project - que no son mantenidos desde 2007, este conjunto de ~ 90 tareas todavía tiene algunas tareas únicas, a saber, la tarea Versión-basado en archivos planos
  • SDC Tasks Library - no se mantiene desde agosto de 2008, esta extensión ha sido absorbida por MSBuild Extension Pack. Si hay algo que no puede encontrar en MSBuild Extension Pack, consulte este, con su cartera de más de 300 posibilidades de tareas, puede tener lo que necesita.
1

Lo siento, no puedo comentar sobre la última respuesta.

La tarea TfsVersion en el formulario que proporcionó solo le dará el último número de conjunto de cambios en el $(SolutionRoot).

Si usted tiene algo más nuevo en $(SolutionRoot)\subdir, la solución aportada no funcionará, ya que le dará a más tardar desde el $(SolutionRoot), no desde $(SolutionRoot)\subdir como lo habría querido.

Uso el tf changeset /latest /i y funciona bien para mí.

+0

FYI ... recibirá el último conjunto de cambios en TFS, independientemente de los cambios que tenga actualmente en su carpeta local. –

Cuestiones relacionadas