11
votes

I'm looking to compile my Delphi 2010 project using MSBuild, but something isn't right, I just couldn't make MSBuild to compile my project.

I tried this command line:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "C:\MyProject\Myapp.dproj" /t:Release

and this:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "C:\MyProject\Myapp.dproj" /p:Configuration=Release /t:Release

But MSBuild won't recognize my build configuration!

I also changed [ rsvars.bat ] but it didn't work!

@SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio\7.0
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v4.0.30319
@SET FrameworkVersion=v4.0.30319
@SET FrameworkSDKDir=
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%
@SET LANGDIR=EN

The MSBuild error is:

C:\MyProject\Myapp.dproj : error MSB4057: The target "Release" does
not exist in the project.

Any help to get me build my app with MSBuild would be greatly appreciated.

(Yes, I'm fully aware of tools like FinalBuilder, I just want to learn how to do this with MSBuild)

Thanks!

2
Thank you, OK (1) I changed rsvars.bat back (but still can't compile :(), (2) DOS doesn't recognize msbuild without full path. - TheDude
If you run the rsvars.bat file before running msbuild the windows console (which is not the same as DOS, as a side note) will recognize a plain call to 'msbuild.exe' as rsvars.bat modifies the PATH variable (see line 6). You can also permanently edit the environment variables - that way you don't have to run rsvars.bat every time. - Chris
2. It certainly does recognise msbuild, if you run rsvars.bat before calling msbuild. Read the docs. They explain all of this. - David Heffernan
Doh! Yes, I see now, I run the rsvars.bat (don't laugh! I was double-clicking on it before!) and now Chris's line works! - TheDude
You need to delete the bogus file C:\Users\Admin\msbuild.exe. - David Heffernan

2 Answers

13
votes

You need to switch the parameters. The target parameter (/t) tells MSBuild which target to create. This can be either 'Make', 'Clean' or 'Build' (or a combination of those - seperate them with ';' in this case).

The property parameter (/p) forwards properties to the actual compiler. You can specify for example the configuration using /p:config=

So if you want to clean and then build a project using the release configuration, specify the paramters like this:

msbuild.exe "/t:Clean;Build" "/p:config=Release" Myapp.dproj
0
votes

Change /p:Configuration=Release to /p:config=Release