Frage

Ich benutze den TeamCity Visual Studio Runner. Ich möchte eine Einstellung hinzufügen, die nicht über Visual Studio zugänglich ist.

/Property:FileAlignment=4096

Ich habe das direkt in den Build -Schritt "Befehlszeilenparameter" eingegeben. Das Build -Protokoll zeigt den Fehler:

Die Befehlszeilenparameter von MSBuild enthält "/Eigenschaft:" oder "/p:" Parameter. Bitte verwenden Sie stattdessen Build -Parameter.

Ich verstehe nicht, wie ich Msbuild aus TeamCity zur Verfügung stellen kann und diese Warnung loswerden kann!

1. Welche Art von Parameter soll ich verwenden?

Es gibt 3 Arten:

  • Konfigurationsparameter
  • Systemeigenschaften
  • Umgebungsvariablen.

Ich möchte keine Umgebung oder Systemvariable, da ich nicht möchte, dass dieser Build von irgendetwas extern abhängt. Ich werde jetzt Konfiguration ausprobieren, aber dann bin ich mir nicht sicher, ob ich sie richtig fülle.

2. Wie kann ich feststellen, dass dieser Parameter tatsächlich verwendet wird?

Das Build-Protokoll, das mit ihrem Programm nur navigable/faltbare XML-ähnliche Ebenen zu haben scheint, hat die Build-Parameter nicht angegeben.

War es hilfreich?

Lösung 3

Dies wurde gelöst. Um zu verdeutlichen, sagte Anthony, wie das Problem in der Befehlszeile mit MSBuild gelöst werden soll. Es kann auch auf der Befehlszeile mit Devenv gelöst werden. Laut ein Ticket mit Microsoft ist die Syntax:

 devenv ..\..\mysolution.sln /Rebuild /Property:Config=Release;Platform=AnyCPU;Filealignment=512

Ich wollte jedoch, dass das "Visual Studio Build" von TeamCity den Parameter akzeptiert. Dies wurde wie folgt erreicht. Im Feld für Befehlszeilenparameter habe ich eingegeben:

/Property:FileAlignment=filealignment v:diag

Dann zeigt die Registerkarte Ausgabe für Build -Parameter:

User Defined Parameters
Name                    Value passed to build
system.filealignment    512
system.verbosity        diagnostic

Andere Tipps

Sie sollten "Systemeigenschaften" verwenden. Mach dir keine Sorgen um den Namen, so nennt TeamCity ihn. Sie sind regelmäßige Eigenschaften. Sie können sie in "Konfigurationseinstellungen bearbeiten> 7. erstellen Parameter" hinzufügen.

Sie können beispielsweise die Systemeigenschaft wie folgt hinzufügen:

Name: System.filealignment

Typ: Systemeigenschaft (System.)

Wert: 4096

Beachten Sie, dass TeamCity auf dem "System" bestehen wird. Präfix. Es spielt keine Rolle, weil das MSBuild -Skript es weiterhin als $ (FileAnnment) ansieht.

Die Teamcity Dokumentation Definiert Build -Parameter als "Eine bequeme Möglichkeit, generische oder umweltspezifische Einstellungen in das Build-Skript zu übergeben". Konfigurationsparameter bieten eine Möglichkeit, einige Einstellungen in einer Build -Konfiguration zu überschreiben, die von einer Vorlage geerbt wurde. Sie werden nie an einen Build übergeben. System- und Umgebungsparameter werden Ihrem Build -Skript zur Verfügung gestellt. Umgebungsvariablen werden tatsächlich im System eingestellt (ich kann keine Dokumentation dafür finden). Systemparameter sind an die Skript -Engine übergeben.

TeamCity bietet automatisch Systemvariablen für die tatsächliche Befehlszeile (es sieht so aus, als würde der Visual Studio -Läufer ausgeführt msbuild.exe und nicht devenv.exe). Ich denke, dass TeamCity einen Befehl wie erstellt

cmd> msbuild.exe my-solution.sln /p:FileAlignment=4096

Ich habe dies in meiner Befehlszeile versucht, nur um sicherzustellen sollte Arbeit (ich habe das hinzugefügt /v:diagnostic Flagge). Die diagnostische Ausführlichkeit lässt MSBuild alle Eigenschaften der Konsole drucken. Ich habe das überprüft FileAlignment=4096 war da drin.

Dass /FileAlignment Eigenschaft scheint a zu sein besonderes Eigentum das ist automatisch in jedem .csproj Datei. Du solltest also gut gehen zu gehen. Sie können die tatsächlichen Parameter überprüfen, die an den Build übergeben wurden, indem Sie auf jeden Build klicken und die Registerkarte "Build -Parameter" anzeigen. Es gibt einen Abschnitt, in dem die "tatsächlichen Parameter des Agenten" angezeigt werden.

(Dies sind -754 -Zeichen für einen Kommentar und müssen als Beitrag eingegeben werden.)

Hallo Anthony, danke für die Antwort! Ja, MSBuild in der Befehlszeile funktioniert auch für mich einwandfrei und Projektdateien können FileAnnment -Eigenschaften speichern. In unserem Fall scheint es bei der Diskussion mit Microsoft erforderlich zu sein, dass ich die lösungsweite AKA-Build-Wide-Ausrichtung, dh in den Befehlsargumenten, zusätzlich zur Behebung der Projekte (die ich bereits durchgeführt habe) feste.

Kein Parameter, den ich auf dem GUI -Element ( /Build -Schritt /Befehlszeilenparameter /) angeben kann, wird auf den Registerkarten /Build -Parametern /angezeigt. Natürlich werden einige überhaupt nicht kompilieren.

Außerdem habe ich noch seltsameres Verhalten, wenn /Ausführlichkeit: Diagnostische VS /Ausführlichkeit: Minimales Ursache ein längeres Build -Protokoll für das Minimum! Es scheint, dass Diagnose die Details in einer speziellen Aufgabe versteckt, die Teil von TeamCity und nicht mich ist. [16:24:05]: Übergeordnetes Ziel "SatellitedllSProjectoutputGroup" in Projekt "C: Windows Microsoft.net Framework V3.5 microsoft.common.targets" mit Ziel "SatellitedlyProjectOutputGroup" von Project "C: Windows Windows Windows Windows Windows" Microsoft.net Framework V3.5 Microsoft.winfx.targets ". Ich habe damit zu kämpfen, weil das Teamcity-generierte Build-Ausgangsprotokoll so schön ist, als Treeview zu haben. Das funktioniert mit dem SLN-Build, aber die Verwendung einer Fledermausdatei kann keine Protokolldatei mit dem hübschen (xml, vermutlich) Baumformat erstellen.

Wenn Sie weitere Ideen haben, werde ich sie gerne hören und danke Ihnen für Ihre Änderungen! :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top