Anpassen aller .NET-Builds

Die Verfahren in diesem Artikel sind nützlich, wenn Sie alle Builds anpassen möchten, die auf einem bestimmten Computer, einem bestimmten virtuellen Computer oder in einem bestimmten Container ausgeführt werden. Wenn Sie beispielsweise einen Buildserver einrichten, müssen Sie möglicherweise die MSBuild-Einstellungen global für alle Builds auf dem Server konfigurieren. Im Prinzip könnten Sie die globalen Dateien Microsoft.Common.Targets oder Microsoft.Common.Props ändern, aber es gibt eine bessere Möglichkeit. Sie können alle Builds eines bestimmten Projekttyps (z. B. alle C#-Projekte) beeinflussen, indem Sie bestimmte MSBuild-Eigenschaften verwenden und bestimmte benutzerdefinierte .targets- und .props-Dateien hinzufügen.

Dateien, die vor und nach den standardmäßigen .props- und .targets-Dateien ausgeführt werden

Um alle C#- oder Visual Basic-Builds, die von einer Installation von MSBuild oder Visual Studio gesteuert werden, zu beeinflussen, erstellen Sie eine Datei Custom.Before.Microsoft.Common.Targets oder Custom.After.Microsoft.Common.Targets mit Zielen, die vor oder nach Microsoft.Common.targets ausgeführt werden, oder eine Datei Custom.Before.Microsoft.Common.Props oder Custom.After.Microsoft.Common.Props mit Eigenschaften, die vor oder nach Microsoft.Common.props verarbeitet werden.

Sie können die Speicherorte dieser Dateien mithilfe der folgenden MSBuild-Eigenschaften angeben:

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

Die Common-Versionen dieser Eigenschaften wirken sich sowohl auf C#- als auch auf Visual Basic-Projekte aus. Sie können diese Eigenschaften über die MSBuild-Befehlszeile festlegen.

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

Warnung

Visual Studio verwendet die benutzerdefinierten .targets- oder .props-Dateien, wenn diese bei Erstellung eines Projekts des entsprechenden Typs im MSBuild-Ordner gefunden werden. Dies kann unbeabsichtigte Folgen haben und bei falscher Verwendung dazu führen, dass Visual Studio auf Ihrem Computer keine Builds mehr erstellen kann.

Ersetzen der Datei „Microsoft.Common.props“

Sie können auch die AlternateCommonProps-Eigenschaften verwenden, um eine eigene .props-Datei anzugeben, die anstelle von Microsoft.Common.props verwendet werden soll. Falls Sie jemals das Bedürfnis haben, die Datei Microsoft.Common.props direkt zu ändern, könnten Sie stattdessen die Standardversion dieser Datei in eine andere Datei kopieren und dann Ihre Änderungen nur in der alternativen Version vornehmen.

Der beste Ansatz richtet sich nach Ihrem Szenario. Mithilfe von Visual Studio-Erweiterbarkeit können Sie das Buildsystem anpassen und einen Mechanismus zum Installieren und Verwalten der Anpassungen bereitstellen.

Wenn Sie über einen dedizierten Buildserver verfügen und sicherstellen möchten, dass bestimmte Ziele immer für alle Builds des entsprechenden Projekttyps ausgeführt werden, die auf diesem Server ausgeführt werden, dann ist die Verwendung einer globalen benutzerdefinierten .targets- oder .props-Datei sinnvoll. Wenn Sie möchten, dass die benutzerdefinierten Ziele nur unter bestimmten Bedingungen ausgeführt werden, verwenden Sie einen anderen Dateispeicherort, und legen Sie den Pfad zu dieser Datei fest, indem Sie die entsprechende MSBuild-Eigenschaft in der MSBuild-Befehlszeile nur bei Bedarf festlegen.