Question: I'm looking for a free code profiler (performance profiler, not a memory profiler) which works for VSTO applications (specifically Excel in my case, but I gather that if it works for one, it should work for all). 

I have tried Eqatec Profiler, but it can't seem to launch the application from the profiler (The Run app button is greyed out, which I'm gathering is because the VSTO application is compiled into a dll which runs in-process with Excel.exe).

If anyone has successfully used Eqatec or another free code profiler to profile a VSTO application, I'd be interested to hear how you did it.

Answer: 
What you're doing should be possible with [EQATEC Profiler](http://www.eqatec.com/tools/profiler).

When you're simply instrumenting one or more DLLs then there is no distinct "application to run": you simply have some instrumented DLLs, but the profiler doesn't know in what way you intend to use them.

However, the instrumented assemblies are (along with the runtime-module, EQATEC.Profiler.RuntimeFullNet.dll) always completely "self-contained", meaning that they perform the timing themselves as soon as the methods within them are used. So you simply need to have your VSTO app load the DLL as usual and voila, the DLL will itself start accumulating timing information and start listening for a connection from the profiler with which you can then take snapshots etc.

So to summarize:

1. Build you DLL and keep the profiler running
2. Have your VSTO app load the DLL (however you do that)
3. The profiler and instrumented DLL should now be connected (see the Run-tab)
4. From within the profiler you can now take snapshots

I hope this helps. If not then let me know.
Have you tried Microsoft's *CLR Profiler*?

* Check out *How To: Use CLR Profiler* at <http://msdn.microsoft.com/en-us/library/ms979205.aspx>.
* Download *CLR Profiler for the .NET Framework 2.0* is available at <https://github.com/MicrosoftArchive/clrprofiler>.

I have used it with great success many times.