Uso de AssemblyInfo para actualizar automáticamente varios archivos AssemblyInfo.cs
-
02-07-2019 - |
Pregunta
Tengo varios archivos AssemblyInfo.cs como parte de muchos proyectos en una única solución que estoy creando automáticamente como parte de TeamCity.
Para que el script msbuild sea más fácil de mantener, me gustaría poder utilizar la tarea comunitaria 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)" />
Lo cual evidentemente no funciona porque OutputFile no puede ser un ItemGroup al que se hace referencia.
¿Alguien sabe cómo hacer que esto funcione?
Solución
Intente cambiar @ a % 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.
Eche un vistazo a este artículo también, debería ayudar.
Otros consejos
Usamos archivos "vinculados" en el proyecto.Explorador de soluciones -> Agregar elemento existente -> ..seleccione Archivo ..-> flecha_on_left_of_add_button -> Agregar como enlace
Luego, el archivo seleccionado (AssemblyInfo.cs por ahora) no se copia al directorio del proyecto, y solo se vincula desde la ruta especificada.