2008-09-22 14 views
8

Tengo varios archivos AssemblyInfo.cs como parte de muchos proyectos en una única solución que estoy creando automáticamente como parte de TeamCity.Uso de AssemblyInfo para actualizar automáticamente varios archivos AssemblyInfo.cs

Para que la secuencia de comandos de msbuild sea más fácil de mantener, me gustaría poder utilizar la tarea de comunidad AssemblyInfo en conjunto con un grupo de elementos, por ejemplo.

<ItemGroup> 
    <AllAssemblyInfos Include="..\**\AssemblyInfo.cs" /> 
</ItemGroup> 

<AssemblyInfo AssemblyTitle="" AssemblyProduct="$(Product)" AssemblyCompany="$(Company)" AssemblyCopyright="$(Copyright)" 
        ComVisible="false" CLSCompliant="false" CodeLanguage="CS" AssemblyDescription="$(Revision)$(BranchName)" 
        AssemblyVersion="$(FullVersion)" AssemblyFileVersion="$(FullVersion)" OutputFile="@(AllAssemblyInfos)" /> 

Que blatently no funciona porque OutputFile no se puede hacer referencia a ItemGroup.

¿Alguien sabe cómo hacer esto?

Respuesta

9

intente cambiar el @% a una como a continuación

<ItemGroup> 
<AllAssemblyInfos Include="..\**\AssemblyInfo.cs" /> 
</ItemGroup> 

<AssemblyInfo AssemblyTitle="" AssemblyProduct="$(Product)" AssemblyCompany="$(Company)" AssemblyCopyright="$(Copyright)" 
           ComVisible="false" CLSCompliant="false" CodeLanguage="CS" AssemblyDescription="$(Revision)$(BranchName)" 
           AssemblyVersion="$(FullVersion)" AssemblyFileVersion="$(FullVersion)" OutputFile="%(AllAssemblyInfos)" /> 

Esto crea una llamada para cada entrada en AllAssemblyInfos.

Eche un vistazo a este artículo también, debería ayudar.

http://blogs.msdn.com/aaronhallberg/archive/2006/09/05/msbuild-batching-generating-a-cross-product.aspx

+0

Eso es exactamente lo que estaba tratando de lograr, gracias! –

+1

No hay problema, solía hacer eso con cada bucle en NANT, es un poco diferente en MSBuild, pero también es mucho más poderoso. Sigan con las buenas preguntas :-) – evilhomer

16

Usamos archivos "vinculados" en el proyecto. Explorador de soluciones -> Añadir Existin artículo -> .. .. select_file -> arrow_on_left_of_add_button -> Agregar Como Enlace

A continuación, el archivo seleccionado (AssemblyInfo.cs por ahora) no se copia en el direcotry del proyecto, la yema es solamente vinculado desde la ruta especificada.

+0

Thats una idea interesante no hubiera pensado! Podría intentarlo si no puedo encontrar una solución a través de MSBuild. Sería bueno averiguar cómo enumerar un ItemGroup para otros usos también. –

+0

Hago esto también. También puede incluir un archivo .CS específico de ensamblaje que se parece a su archivo de media assemblyinfo.cs, pero contiene los bits específicos de ensamblaje. – Will

+0

Siempre he hecho esto también. Funciona muy bien. – caryden

Cuestiones relacionadas