msbuild continuous-integration teamcity

msbuild - Uso de AssemblyInfo para actualizar automáticamente varios archivos AssemblyInfo.cs



continuous-integration teamcity (2)

Tengo varios archivos AssemblyInfo.cs como parte de muchos proyectos en una sola solución que estoy creando automáticamente como parte de TeamCity.

Para hacer que el script msbuild sea más fácil de mantener, me gustaría poder utilizar la tarea de comunidad AssemblyInfo junto con un ItemGroup, 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 puede ser un ItemGroup referenciado.

¿Alguien sabe cómo hacer que esto funcione?


Intente cambiar el @ a un% como se muestra 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.

Echa 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


Usamos archivos "vinculados" en el proyecto. Solution Explorer -> Agregar elemento existente -> .. select_file .. -> arrow_on_left_of_add_button -> Add As Link

Entonces, el archivo seleccionado (AssemblyInfo.cs por el momento) no se copia a la dirección del proyecto, bud solo se vincula desde la ruta especificada.