Personalización de todas las compilaciones de .NET

Las técnicas de este artículo resultan útiles cuando quiere personalizar todas las compilaciones que se ejecutan en un equipo, en una máquina virtual o en un contenedor específicos. For ejemplo, al configurar un servidor de compilación, puede que tenga que configurar las opciones de MSBuild globalmente para todas las compilaciones en el servidor. En principio, puede modificar los archivos globales Microsoft.Common.Targets o Microsoft.Common.Props, aunque hay una manera mejor de hacerlo. Puede incidir en todas las compilaciones de un determinado tipo de proyecto (por ejemplo, todos los proyectos de C#) usando ciertas propiedades de MSBuild y agregando determinados archivos .targets y .props personalizados.

Archivos .props y .targets estándar Before y After

Para incidir en todas las compilaciones de C# o Visual Basic regidas por una instalación de MSBuild o Visual Studio, cree un archivo Custom.Before.Microsoft.Common.Targets o Custom.After.Microsoft.Common.Targets con destinos que se ejecutarán antes o después de Microsoft.Common.targets, o un archivo Custom.Before.Microsoft.Common.Props o Custom.After.Microsoft.Common.Props con propiedades que se procesarán antes o después de Microsoft.Common.props.

Puede especificar las ubicaciones de estos archivos mediante las siguientes propiedades de MSBuild:

  • CustomBeforeMicrosoftCommonProps
  • CustomBeforeMicrosoftCommonTargets
  • CustomAfterMicrosoftCommonProps
  • CustomAfterMicrosoftCommonTargets
  • CustomBeforeMicrosoftCSharpTargets
  • CustomBeforeMicrosoftVisualBasicTargets
  • CustomAfterMicrosoftCSharpTargets
  • CustomAfterMicrosoftVisualBasicTargets

Las versiones comunes de estas propiedades afectan a los proyectos de C# y Visual Basic. Puede establecer estas propiedades en la línea de comandos de MSBuild.

msbuild /p:CustomBeforeMicrosoftCommonTargets="C:\build\config\Custom.Before.Microsoft.Common.Targets" MyProject.csproj

Advertencia

Visual Studio usa los archivos .targets o .props personalizados si los encuentra en la carpeta MSBuild cada vez que compila cualquier proyecto del tipo coincidente. Esto puede tener consecuencias no deseadas y, si se realiza incorrectamente, puede deshabilitar la capacidad de Visual Studio para compilar en el equipo.

Reemplazar el archivo de propiedades comunes

También puede usar las propiedades AlternateCommonProps para especificar su archivo .props propio que se usará en lugar de Microsoft.Common.props. Si alguna vez sintió la necesidad de personalizar Microsoft.Common.props modificándolo directamente, podría copiar la versión estándar de ese archivo en otro archivo y, a continuación, realizar los cambios solo en la versión alternativa.

El método más oportuno depende de su escenario. Con la extensibilidad de Visual Studio, puede personalizar el sistema de compilación y proporcionar un mecanismo para instalar y administrar las personalizaciones.

Si tiene un servidor de compilación dedicado y desea asegurarse de que determinados destinos se ejecuten siempre en todas las compilaciones del tipo de proyecto adecuado que se ejecutan en ese servidor, resulta adecuado usar un archivo .targets o .props personalizado global. Si desea que los destinos personalizados solo se ejecuten cuando se aplican ciertas condiciones, use otra ubicación de archivo y establezca la ruta de acceso a ese archivo estableciendo la propiedad de MSBuild adecuada en la línea de comandos de MSBuild solo cuando sea necesario.