views:

192

answers:

4

I wonder why this is not integrated by default. I'd like to have an item in Windows Explorer's file context menu of a VS solution file to build it.

Is there a tool for this? Or do I have to create this myself?

+1  A: 

You might be able to cook up something using MSBuild.exe along the lines of

<path_to_msbuild_executable>\MSBuild.exe /p:Configuration="<config>" %1

However, you would have to specify a configuration and then it will be hard to see all the output from the build. I'm not sure this would make all that much sense.

sbi
Additionally, I'd have to put this in the right place in the registry. I barely remember that this is easy, but it's a hassle nonetheless.
mafutrct
+2  A: 

It's going to be fairly high maintenance, but not impossible. Open Regedit.exe and locate the HKCR\VisualStudio.csproj.9.0 key. Add the Build verb, make it look similar to this:

[HKEY_CLASSES_ROOT\VisualStudio.csproj.9.0\shell\Build]

[HKEY_CLASSES_ROOT\VisualStudio.csproj.9.0\shell\Build\Command] @="cmd.exe /k c:\temp\build.bat %1"

The cmd.exe /k command opens a console window so that you can read any error message from the build. The c:\temp\build.bat file ought to look similar to this:

call "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
msbuild %1

You probably also want to add the Build key to HKCR\VisualStudio.Launcher.sln so you can build solutions as well. That however is a bit of a version maintenance headache.

Hans Passant
A possible solution for the version maintenance headache is to write your own launcher who automatically parses the csproj/sln/... files, and then locate the correct msbuild to use. This is what I want to achieve in MSBuild Launch Pad.
Lex Li
+1  A: 

Here is a project to do it for VS 2003 & 2005. It could easily be altered for 20080 and 2010 too i imagine.

http://www.codeproject.com/KB/winsdk/VS_BuildHere.aspx

Mike Ohlsen
+4  A: 

MSBuild Shell Extension have been there for years, though it is dead now,

http://msbuildshellex.codeplex.com/

But you can also try out my new project,

http://msbuildlaunchpad.codeplex.com/releases/view/45368

It is still in beta, but it is easier to use. MSBuild Launch Pad

Lex Li