Dostosowywanie wszystkich kompilacji platformy .NET

Techniki w tym artykule są przydatne, gdy chcesz dostosować wszystkie kompilacje uruchamiane na określonym komputerze, maszynie wirtualnej lub kontenerze. Na przykład podczas konfigurowania serwera kompilacji może być konieczne globalne skonfigurowanie ustawień programu MSBuild dla wszystkich kompilacji na serwerze. W zasadzie można zmodyfikować globalne pliki Microsoft.Common.Targets lub Microsoft.Common.Props , ale istnieje lepszy sposób. Można wpływać na wszystkie kompilacje określonego typu projektu (takie jak wszystkie projekty języka C#) przy użyciu niektórych właściwości programu MSBuild i dodawania niektórych .targets niestandardowych i .props plików.

Przed i po standardowych plikach .props i .targets

Aby wpłynąć na wszystkie kompilacje języka C# lub Visual Basic zarządzane przez instalację programu MSBuild lub Visual Studio, utwórz plik Custom.Before.Microsoft.Common.Targets lub Custom.After.Microsoft.Common.Targets z miejscami docelowymi, które będą uruchamiane przed lub po elemecie Microsoft.Common.targets albo plik Custom.Before.Microsoft.Common.Props lub Custom.After.Microsoft.Common.Props z właściwościami, które zostaną przetworzone przed lub po nim.

Lokalizacje tych plików można określić przy użyciu następujących właściwości programu MSBuild:

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

Typowe wersje tych właściwości mają wpływ zarówno na projekty języka C#, jak i Visual Basic. Te właściwości można ustawić w wierszu polecenia MSBuild.

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

Ostrzeżenie

Program Visual Studio używa plików niestandardowych .targets lub .props , jeśli znajdzie je w folderze MSBuild za każdym razem, gdy kompiluje dowolny projekt pasującego typu. Może to mieć niezamierzone konsekwencje, a jeśli zostało to zrobione nieprawidłowo, może wyłączyć możliwość kompilowania programu Visual Studio na komputerze.

Zastępowanie wspólnego pliku props

Możesz również użyć właściwości AlternateCommonProps , aby określić własny .props plik do użycia zamiast Microsoft.Common.props. Jeśli kiedykolwiek uważasz, że trzeba dostosować plik Microsoft.Common.props , modyfikując go bezpośrednio, możesz zamiast tego skopiować standardową wersję tego pliku do innego pliku, a następnie wprowadzić zmiany tylko w alternatywnej wersji.

Najlepsze podejście zależy od twojego scenariusza. Korzystając z rozszerzalności programu Visual Studio, można dostosować system kompilacji i udostępnić mechanizm instalowania dostosowań i zarządzania nimi.

Jeśli masz dedykowany serwer kompilacji i chcesz mieć pewność, że niektóre obiekty docelowe zawsze są wykonywane na wszystkich kompilacjach odpowiedniego typu projektu, które są wykonywane na tym serwerze, użycie globalnego niestandardowego .targets lub .props pliku ma sens. Jeśli obiekty docelowe niestandardowe mają być wykonywane tylko w przypadku zastosowania określonych warunków, użyj innej lokalizacji pliku i ustaw ścieżkę do tego pliku, ustawiając odpowiednią właściwość MSBuild w wierszu polecenia MSBuild tylko wtedy, gdy jest to konieczne.