Dort sind auch weitere Suchpfade mit enthalten.
Die DPROJ ist ein Script für MSBuild, welches weitere Scripte einbindet (liegt in 'nem Suchpfad), die wiederum Scripte einfügen,
und in diesen Dateien (Scripten) wird unter anderem auch das BuildTarget definiert.
Leider gibt es keine Warnung/Hinweis, wenn eine der Dateien nicht gefunden wurde.
Öffne deine .dproj mal mit einem TextEditor.
XML-Code:
<Import Project="$(
BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(
BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
Die letzten Beiden gibt es meistens nicht.
Aber die Erste ist hier wichtig und jene importiert weitere proj.
Ganz früher fehlte teilweise die Condition= womit es dann im Fehlerfall wunderschön knallte.
Aus demselben Grund könntest du auch das
/p:Config="Release"
weglassen
und es wird das genommen, was du zuletzt in der
IDE ausgewählt hast (Debug, Release oder sonstwas).
Ebenso kann man auch den Compiler auswählen
/p:Platform=Win32
.
(Fehlen diese Angaben, dann gibt es ganz oben, in der DPROJ, diese Property, mit einer Condition ala "if empty")
XML-Code:
<Config Condition="'$(Config)'==''">Release</Config>
<Platform Condition="'$(Platform)'==''">
Win32</Platform>
Aber wenn man es angibt, dann wird immer das "angegebene" genommen, egal was zuletzt in
IDE/Debugger gewählt wurde.
Code:
call "C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\rsvars.bat"
msbuild /t:Build /p:Config=Release /p:Platform=
Win32 MainProject.groupproj
pause