Importieren Sie die Zieldatei über die Befehlszeile in msbuild

8

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?

    
Lawrence 15.08.2013, 08:36
quelle

4 Antworten

5

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.

    
Alexey Shcherbak 18.08.2013, 13:09
quelle
1

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:

  • Directory.Build.props
  • Directory.Build.targets

Anmerkung: Sobald die Requisiten- oder Zieldatei gefunden wurde, wird MSBuild aufhören, nach einer übergeordneten Datei zu suchen.

Siehe auch: Ссылка

    
BatteryBackupUnit 13.09.2017 14:58
quelle
0

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%     
Nicodemeus 15.08.2013 21:50
quelle
0

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 .

%Vor%

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.

    
WoodyMac 16.06.2017 12:48
quelle

Tags und Links