Ich habe derzeit mehrere Projekte mit Msbuild erstellt. Ich habe eine kleine Anpassung an den Build, der von einer .targets-Datei behandelt wird. Eine Lösung ist das Hinzufügen des Snippets
%Vor%zu jeder Projektdatei. Idealerweise möchte ich jedoch die Projektdateien nicht anfassen und diese Informationen als Parameter an msbuild weitergeben. Auf diese Weise kann ich leicht kontrollieren, ob ich diese Anpassung über die Befehlszeile ausführen soll, und Ich muss die vorhandenen Projektdateien nicht berühren.
Ist das möglich?
Sie können das einfach mit MSBuild 4.0 (überprüfen Sie Ihre Version von Top-Level-Attribut ToolsVersion="4.0" ):
Es gibt mehrere Eigenschaften, die Sie verwenden können, um Ihre Ziele vor und nach Common.targets und CSharp.targets zu importieren.
Der einfachste Weg besteht darin, zwei Sätze selbsterklärender Eigenschaften zu verwenden. Der erste Satz ist: $ (CustomBeforeMicrosoftCommonTargets) $ (CustomAfterMicrosoftCommonTargets)
und zweiter:
%Vor%Eigenschaftsnamen sind ziemlich selbst erklärt.
Übergeben Sie den vollständigen Dateinamen einfach an eine dieser Eigenschaften über msbuild.exe z.B.
%Vor%Sie können andere "ImportByWildcard (Before | After) ...." Eigenschaften verwenden, wenn Sie mehrere Dateien importieren müssen. Aber in diesem Fall müssen Sie mehr Parameter an die Befehlszeile übergeben.
Ab MSBuild 15.0 werden die folgenden zwei Dateien automatisch in Ihr Build importiert, falls sie im Projektpfad oder in einem übergeordneten Ordner auf dem Pfad zum Stammverzeichnis gefunden werden:
Anmerkung: Sobald die Requisiten- oder Zieldatei gefunden wurde, wird MSBuild aufhören, nach einer übergeordneten Datei zu suchen.
Siehe auch: Ссылка
Nehmen wir an, Sie haben eine Projektdatei namens "Project.msbuild". Sie würden diesen bedingten Import hinzufügen:
%Vor%Übergeben Sie den Namen der Zieldatei, die Sie als Msbuild-Eigenschaft importieren möchten:
%Vor% Stellen Sie sicher, dass Sie einen absoluten Pfad für die Zieldatei verwenden, und es funktioniert.
Quelle: Sayed Ibrahim Hashimi - MSachrichten, wie man ein Ziel nach CoreCompile Teil 2 ausführt .
Verwenden Sie /preprocess[:filepath]
, um das Ergebnis der Importe anzuzeigen.
Sie müssen keine Dateien csproj
oder vbproj
ändern.
Natürlich funktioniert es nur dort, wo Sie MSBuild Properties setzen können.
Tags und Links command-line msbuild target