I'm wondering what others use as a tool for creating the final package to hand over to the customer. For now, these are the tasks it should perform for our company:

build a set of VS projects (C#,C++); which set depends on configuration on commandline of preferrably in a file

copy some of the outputs (dll,exe) and header files; should again be configurable: not all customers get the same functionality)

make a zip file for each configuration

Additional features that are not yet needed now, but might be in the future:

upload it to a website of some kind (we're still not sure what we're going to use.. might be ftp or vesrionsing system). Well, actually, it would be awesome if the tool could create an entry on a Confluence page.

instead of zip files we might switch to installers, though that shouldn't change too much I guess

Right now I have the first steps covered in a batch file that takes some arguments, and a master batch file that calls it for each configuration. It works, but I can't get used to the batch syntax and I'm now building by invoking devenv.exe which seems slow and is error-prone as it takes the .suo file into account.

I was thinking about doing everything again in msbuild, but first I'd like to hear more opinions on this. I'd also want to know what kind of tools big companies use for large products.

The answer is language-specific, so I added the C# and C++ tags.
– Péter TörökAug 24 '11 at 10:13

@Peter: I was just about to remove them. Building C++ and C# projects is a Visual Studio action, not C# or C++ specific.
– DeadMGAug 24 '11 at 10:29

This cannot be done with one tool alone afaik. Have a look here to get you started. Then use nant and batch files for example to do stuff like ftp uploads etc. You'll most always need custom scripts.
– FalconAug 24 '11 at 10:30

@DeadMG, fair enough, then maybe it is better to replace them with visual-studio and/or .net. In Java, I would use Maven without thinking, but I am sure it wouldn't work for this case :-)
– Péter TörökAug 24 '11 at 10:35

+1: I made a quick prototype of a script in msbuild and it's definitely much handier than batch files. Especially since I learned that you can use metadata with lists which makes selecting what to build/copy/... much easier
– stijnAug 25 '11 at 6:41