Vorgehensweise: Hinzufügen von benutzerdefinierten Buildtools zu MSBuild-Projekten

Ein benutzerdefiniertes Buildtool ist ein benutzerdefiniertes Befehlszeilentool, das einer bestimmten Datei zugeordnet ist.

Geben Sie für eine bestimmte Datei in der Projektdatei (.vcxproj) die auszuführende Befehlszeile, alle anderen Eingabe- oder Ausgabedateien und eine anzuzeigende Meldung an. Wenn MSBuild feststellt, dass Ihre Ausgabedateien relativ zu Ihren Eingabedateien veraltet sind, wird die Meldung angezeigt und das Befehlszeilentool ausgeführt.

Angeben von benutzerdefinierten Buildtools und benutzerdefinierten Buildschritten

Um anzugeben, wann das benutzerdefinierte Buildtool ausgeführt wird, verwenden Sie eines oder beide der XML-Elemente CustomBuildBeforeTargets und CustomBuildAfterTargets in der Projektdatei. Sie könnten beispielsweise angeben, dass Ihr benutzerdefiniertes Buildtool nach dem MIDL-Compiler und vor dem C/C++-Compiler ausgeführt werden soll. Geben Sie das CustomBuildBeforeTargets Element an, das das Tool ausführt, bevor ein bestimmtes Ziel ausgeführt wird. Verwenden Sie das CustomBuildAfterTargets Element, um das Tool auszuführen, nachdem ein bestimmtes Ziel ausgeführt wurde. Verwenden Sie beide Elemente, um das Tool zwischen der Ausführung von zwei Zielen auszuführen. Wenn keines der Elemente angegeben ist, wird das benutzerdefinierte Buildtool an seinem Standardspeicherort ausgeführt, d. h. vor dem MIDL-Ziel.

Benutzerdefinierte Buildschritte und benutzerdefinierte Buildtools nutzen die in den XML-Elementen CustomBuildBeforeTargets und CustomBuildAfterTargets angegebenen Informationen gemeinsam. Geben Sie diese Ziele einmal in der Projektdatei an.

Hinzufügen eines benutzerdefinierten Buildtools

  1. Fügen Sie der Projektdatei eine Elementgruppe hinzu, und fügen Sie für jede Eingabedatei ein Element hinzu. Geben Sie den Befehl und die zugehörigen Eingaben, Ausgaben und eine Nachricht als Elementmetadaten an, wie hier gezeigt. In diesem Beispiel wird davon ausgegangen, dass eine Datei „faq.txt“ im selben Verzeichnis wie Ihr Projekt vorhanden ist. Der benutzerdefinierte Buildschritt kopiert ihn in das Ausgabeverzeichnis.

    <ItemGroup>
      <CustomBuild Include="faq.txt">
        <Message>Copying readme...</Message>
        <Command>copy %(Identity) $(OutDir)%(Identity)</Command>
        <Outputs>$(OutDir)%(Identity)</Outputs>
      </CustomBuild>
    </ItemGroup>
    

So definieren Sie, wo im Build die benutzerdefinierten Buildtools ausgeführt werden

  1. Fügen Sie die folgende Eigenschaftengruppe zu der Projektdatei hinzu. Sie müssen mindestens einen der Ziele angeben. Sie können den anderen weglassen, wenn Sie nur daran interessiert sind, den Buildschritt vor (oder nach) einem bestimmten Ziel auszuführen. In diesem Beispiel wird der benutzerdefinierte Schritt nach dem Kompilieren, aber vor dem Verknüpfen durchführt.

    <PropertyGroup>
      <CustomBuildAfterTargets>ClCompile</CustomBuildAfterTargets>
      <CustomBuildBeforeTargets>Link</CustomBuildBeforeTargets>
    </PropertyGroup>
    

Siehe auch

Exemplarische Vorgehensweise: Verwenden von MSBuild zum Erstellen eines C++-Projekts
Vorgehensweise: Verwenden von Buildereignissen in MSBuild-Projekten
Vorgehensweise: Hinzufügen eines benutzerdefinierten Buildschritts zu MSBuild-Projekten
Allgemeine Makros für MSBuild-Befehle und -Eigenschaften
Bekannte MSBuild-Elementmetadaten