Personalizzare tutte le compilazioni .NET

Le tecniche descritte in questo articolo sono utili quando si vogliono personalizzare tutte le compilazioni eseguite in un computer, una macchina virtuale o un contenitore specifici. Ad esempio, quando si configura un server di compilazione, potrebbe essere necessario configurare le impostazioni di MSBuild a livello globale per tutte le compilazioni nel server. In linea di principio, è possibile modificare i file globali Microsoft.Common.Targets o Microsoft.Common.Props , ma esiste un modo migliore. È possibile influire su tutte le compilazioni di un determinato tipo di progetto (ad esempio tutti i progetti C#) usando determinate proprietà di MSBuild e aggiungendo determinati file e .props personalizzati.targets.

Prima e dopo i file con estensione props e .targets standard

Per influire su tutte le compilazioni C# o Visual Basic regolate da un'installazione di MSBuild o Visual Studio, creare un file Custom.Before.Microsoft.Common.Targets o Custom.After.Microsoft.Common.Targets con destinazioni che verranno eseguite prima o dopo Microsoft.Common.targets o un file Custom.Before.Microsoft.Common.Props o Custom.After.Microsoft.Common.Props con proprietà che verranno elaborate prima o dopo Microsoft.Common.props.

È possibile specificare i percorsi di questi file usando le proprietà MSBuild seguenti:

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

Le versioni comuni di queste proprietà influiscono sia sui progetti C# che su Visual Basic. È possibile impostare queste proprietà nella riga di comando di MSBuild.

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

Avviso

Visual Studio usa i file personalizzati .targets o .props se li trova nella cartella MSBuild ogni volta che compila qualsiasi progetto del tipo corrispondente. Ciò può avere conseguenze impreviste e, se fatto in modo errato, può disabilitare la capacità di Visual Studio di compilare nel computer.

Sostituire il file props comune

È anche possibile usare le proprietà AlternateCommonProps per specificare il proprio .props file da usare anziché Microsoft.Common.props. Se hai mai sentito la necessità di personalizzare Microsoft.Common.props modificandola direttamente, puoi invece copiare la versione standard del file in un altro file e quindi apportare le modifiche solo nella versione alternativa.

L'approccio migliore dipende dallo scenario in uso. Usando l'estendibilità di Visual Studio, è possibile personalizzare il sistema di compilazione e fornire un meccanismo per l'installazione e la gestione delle personalizzazioni.

Se si dispone di un server di compilazione dedicato e si vuole assicurarsi che determinate destinazioni vengano sempre eseguite su tutte le build del tipo di progetto appropriato che viene eseguito su tale server, l'uso di un file o .props personalizzato .targets globale ha senso. Se si desidera che le destinazioni personalizzate vengano eseguite solo quando si applicano determinate condizioni, usare un altro percorso di file e impostare il percorso del file impostando la proprietà MSBuild appropriata nella riga di comando di MSBuild solo quando necessario.