First some tips from Scott Hanselman to get the look-and-feel back.
Next to replace the pre- and postbuild macro with an add-in. The template takes care of the plumbing and running/debugging will make it available for use.

Make sure to save the BuildEvents and SolutionEvents in a classlevel variable or the events will not work.
private BuildEvents _buildEvents;
private SolutionEvents _solutionEvents;
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
// save the SolutionEvents object to get events working
_solutionEvents = _applicationObject.Events.SolutionEvents;
_solutionEvents.Opened += _solutionEvents_Opened;
// save the BuildEvents object to get events working
_buildEvents = _applicationObject.Events.BuildEvents;
_buildEvents.OnBuildBegin += BuildEvents_OnBuildBegin;
_buildEvents.OnBuildDone += BuildEvents_OnBuildDone;
}
Open your solution and everything just works. Except for things that don’t because they’re to old like Silverlight 3. But there is always the round tripping feature.