![]() |
wie MSBuild/DPROJ debuggen bzw. verstehen
Wie MSBuild arbeitet ist ja beschrieben.
![]() Am liebsten hätte das "Ergebnis", kurz vor dem Ausführen. * alles importiert, was auch genutzt wird das geht schon * alles "Ungenutzte" entfernt oder auskommentiert * Variablen aufgelöst (bzw. Logeinträge an gewissen Stellen) Das "erweiterte" Logging beim MSBuild aktivieren hilft nichts. Aber den Parameter /preprocess hatte ich schonmal entdeckt. Leider hilft das auch nur bedingt. Im aktuellen Fall meinte die DCC32.exe dass ein Parameter ungültig sei, aber ich fand anfangs nicht, wo dessen Wert her kommt. (er wurde aus mehreren Property/Variablen in der DPROJ zusammengesetzt und so kleinteilig hatte ich nicht gesucht, in allen Dateien und der Registry)
Code:
bzw. die Debugausgabe vom /preprocess , ohne zu kompilieren
cd /d "%ProjectPath%"
:: Variablen der Build-Umgebung lesen call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat" :: Umgebungsvariablen der IDE aktualisieren :: von HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\22.0\Environment Variables :: nach C:\Users\%USERNAME%\AppData\Roaming\Embarcadero\BDS\22.0\environment.proj "%BDS%\bin\GetItCmd.exe" -l= :: kompilieren "%FrameworkDir%\MSBuild.exe" /nologo /target:Build /property:Platform=Win32 /property:Config=Debug "%ProjectFile%"
Code:
:: Debug-Info in Console
"%FrameworkDir%\MSBuild.exe" /nologo /target:Build /property:Platform=Win32 /property:Config=Debug /preprocess "%ProjectFile%" :: Debug-Info in Datei "%FrameworkDir%\MSBuild.exe" /nologo /target:Build /property:Platform=Win32 /property:Config=Debug /preprocess:"%ProjectFile%.Debug" "%ProjectFile%" Klar, entsprechend dem How-To, des ersten Links, könnte ich die Schritte auch selber nachstellen und die DPROJ parsen, aber beim Auflösen der Variablen und Conditions wird es dann leider schlimm. * Schön wäre also, wenn MSBuild das Parsen und Ausmisten übernimmt * oder wenn man MSBuild den VariablenString bzw. die Condition geben könnte (inkl. der Liste aller aktueller Property/Variablen) und es mir dann das Ergebnis nennt. ![]() ![]() auf den ersten Blick sieht es einfach aus und könnte man auch selber, aber es kann auch schlimmer werden, z.B.
Code:
$(ProjectOutputFolder.Substring(0,3))
$(registry:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\WebBrowser@HomePage) $([System.DateTime]::Now) $([System.DateTime]::Now.ToString("yyyy.MM.dd")) TreatedAsLocalProp($(MSBuildThisFileName)) ... ![]() ![]() uvm. |
AW: wie MSBuild/DPROJ debuggen bzw. verstehen
Hast Du es mal mit _kibitz versucht?
Code:
msbuild %1.dproj /p:config=Debug /target:_kibitz /p:_kibitztask="EvaluateProperty" /p:_EvaluateName="DCC_Define" /NoLogo /verbosity:normal >msbuild.log
findstr /C:"EvaluateProperty=" msbuild.log > msbuild.found for /F "tokens=2* Delims==" %%a in (msbuild.found) do echo %%a |
AW: wie MSBuild/DPROJ debuggen bzw. verstehen
Neee.
Wie kommt man auf die Idee einen Regenpfeifer benutzen zu wollen? :shock: ![]() Hab bissl rumgespielt und es lassen sich
Delphi-Quellcode:
-getrennt mehrere Properties angeben (leider keine
;
Delphi-Quellcode:
oder so, bzw. Alles, wenn man keinen Namen angibt)
*
Wäre etwas unpraktisch, wenn man mehrere Werte abfragen will und dafür Jeden einzeln ausführen müsste. Zitat:
Was ich noch nicht weiß, ob z.B. bei den Such-/Ausgabepfaden, den Pre-/After-Scripten usw. die Property unterschiedliche Werte haben können, bzw. welche wo nutzbar sind. * also welcher Wert wird genutzt, bei der Ausführung (vermutlich das Endergebnis, nach allen Evalutationsdurchläufen) * Alles überall nutzbar (vermutlich nicht ... was später erst definiert wird, das gibt es vorher noch nicht, unabhängig von den durchläufen) Für Ersteres gäbe es nun vom Vögelchen das Ergebnis :) Und Zweites könnte ich selber im XML prüfen, auch ohne Auswertung der Bedingungen. |
AW: wie MSBuild/DPROJ debuggen bzw. verstehen
Info: GetItCmd aktualisiert leider nur die environment.proj , aber nicht die EnvOptions.proj
[edit] ups, falscher Thread Nur zwei Treffer in der ForenSuche, und ich klicke in den Falschen. :oops: ![]() [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz