views:

36

answers:

2

What I would like

I would like to easily run a batch file without leaving Visual Studio. The batch files are not always the same, they change depending on the solution I'm working with.

What I know so far

I know you can create custom shortcuts in the Tools section of Visual Studio (Under External Tools).

My solutions have various scripts/batch files and I wish there was a way to create shortcuts under a solution folder or some other place that is solution specific.

I can create the scripts but there doesn't seem to be a way to run the script. I don't like having to open Windows Explorer each time I want to run a script.

Perhaps an add-in that would start a process with the selected file in the solution explorer? Or something similar?

+2  A: 

The best way to proceed is to write an external tool, and then you can pass in parameters based on your current solution that is loaded.

There are many project and solution specific variables you can pass to your external tool. Open up the 'External Tools' dialog, and select your tool in the list box. You will see the title of your external tool, as well as the command that points to the script or batch script you want to call. The arguments edit box has a button next to it with an arrow next to it. Click the arrow and you will see a big list of variables, or parameters, you can pass to your external tool.

So, for instance you can use the following:

$(ProjectDir) - The full path directory of the project you are working on. for instance "C:\builds\myproject"

$(ProjectPath) - The full path name of the vcproj you are working on. for instance "C:\builds\myproject\foo.vcproj"

$(ProjectName) - The name of the project. for instance "foo"

$(SolutionDir) - The full path directory of the solution that is currently loaded. for instance "C:\builds\mysolution"

etc...

C Johnson
quip
$(ItemPath) - The currently active file that is active in visual studio. Or if the mouse focus is on a code, project or solution file in the solution explorer.I use $(ItemPath) as a parameter to perforce to edit the 'currently active file'.
C Johnson
Oh I didn't know about that one, that's sounds like it might work. Going to give it a try!
quip
DUDE that's awesome! You rock.
quip
A: 

Will the Build Event hooks (pre-build, pre-link, post-build) be of any use to you? Also you can check out the Custom build setup too. Those are part of the solution.

anand.arumug
Not really - these scripts are not necessarily for build, they're just things I want to automate such as copying files or other tasks.
quip
As a post build event, I am now running some scripts to replace strings in resource files and also to copy the executable to specific location.When do you want these scripts to execute?Another option I could think of is a python script which can trigger the build and also do whatever you want.
anand.arumug