Build macro for web projects

Using this macro and batch file you can map a keyboard shortcut and/or a toolbar button in Visual Studio to restart IIS and build the selected project asynchronously.

1. Create a batch file that includes the following:

@echo off 
net stop w3svc 
net start w3svc

For projects that tend to get hung up more frequently in IIS, you can replace the 'net stop' line above with net 'stop iisadmin' instead. (Don’t change the ‘net start’ line.)

2. Create a new macro project that includes events (or add a new module in existing macro project).

3. Paste the following code into the module, inserting the path to the new batch file:

Sub BuildSelectedWebProject() 
   ' restart iis 
   Shell("<your batch file path>", AppWinStyle.MinimizedNoFocus, False) 
   ' start the build 
   DTE.ExecuteCommand("Build.BuildSelection") 
End Sub

4. Map a keyboard shortcut or toolbar button to the new macro: Macros.<Macro Project Name>.BuildSelectedWebProject

Build Solution

Optionally, you can also re-map Ctrl+Shift+B (Build Solution) to the following if desired:

Sub BuildSolution() 
   ' restart iis 
   Shell("<your batch file path>\iisrestart.bat", AppWinStyle.MinimizedNoFocus, False) 
   ' start the build 
   DTE.ExecuteCommand("Build.BuildSolution") 
End Sub

All posts