Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   MSBuild no Target Found (https://www.delphipraxis.net/216315-msbuild-no-target-found.html)

Sander22 9. Dez 2024 17:06

MSBuild no Target Found
 
Hey,

Ich bin im Moment ein am verzweifeln, ich versuche meine groupproj über MSBuild zu bauen per Batch Datei. Egal was ich mache, ich bekomme diesen Fehler und ich weiß nicht genau warum ich diesen bekomme.

Error: error MSB4040: Das Projekt enthält kein Ziel

Befehl: msbuild MainProject.groupproj

Ich glaube einfach ich übersehe etwas einfaches, aber trotzdem finde ich es nicht :lol:

Hilfe nehme ich gerne, falls noch irgendwelche Daten fehlen für ich gerne einfach schreiben.

Grüße Sander

Uwe Raabe 9. Dez 2024 17:44

AW: MSBuild no Target Found
 
Füge mal die Parameter
Code:
/t:build /p:config="Release"
zum MSBuild-Aufruf hinzu.

Sander22 10. Dez 2024 09:00

AW: MSBuild no Target Found
 
habe ich gemacht aber jetzt spuckt er mir das aus:

Befehl:

Code:
msbuild MainProject.groupproj /t:build /p:config="Release"

pause
Error:
Code:
Fehler beim Buildvorgang.

"MainProject.groupproj" (build Ziel) (1) ->
"Core.dproj" (Standardziel)
 (2) ->
  Core.dproj : error MSB404
0: Das Projekt enthält kein Ziel.

    0 Warnung(en)
    1 Fehler

Verstrichene Zeit 00:00:00.04

Sander22 10. Dez 2024 09:02

AW: MSBuild no Target Found
 
Okay ich habe selbst den Fehler gefunden, aber verstehe ihn nicht ganz.
Ich habe die rsvars.bat nicht aufgerufen, aber wieso muss ich das jedes mal machen?

Grüße Sander

jaenicke 10. Dez 2024 09:30

AW: MSBuild no Target Found
 
Du kannst die Variablen auch systemweit als Umgebungsvariablen deklarieren. Einfacher ist es aber, diese mit der Batchdatei zu setzen, weil du ansonsten diese erstens bei der nächsten Delphiversion anpassen musst, zweitens aber auch nicht verschiedene Delpiversionen parallel nutzen könntest.

himitsu 10. Dez 2024 09:36

AW: MSBuild no Target Found
 
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
Delphi-Quellcode:
/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
Delphi-Quellcode:
/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


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 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