I was wanting to write a simple windows shell extension to add to the context menu, and C# is the language I most use these days. Is it a decent choice for a shell extension? Are the interfaces easy to get to with it? Is there additional overhead that causes the menu to be slower to pop up?
Any one have good pointers for getting started?
At the risk of looking like a shill, EZShellExtensions is a wonderful (but non-free) framework for shell extension development in C#. You can write a simple context menu extension with about 20 lines of code and, best of all, never have to mess with COM interfaces. My company uses it (and their namespace extension framework) for a set of extensions currently in use by tens of thousands of customers and, for what it's worth, we've never had a problem with the CLR conflict described above.
Here's a quick sample to show how easy it is:
A Raymond's post: Do not write in-process shell extensions in managed code.
A recent follow-up: Now that version 4 of the .NET Framework supports in-process side-by-side runtimes, is it now okay to write shell extensions in managed code?
The bottom line is, no, it is not okay:
Guidance for Implementing In-Process Extensions
Version Conflicts
Performance Issues
Issues Specific to the .NET Framework
Acceptable Uses of Managed Code and Other Runtimes
SharpShell
SharpShell makes it easy to create Windows Shell Extensions using the .NET Framework.
The source code is hosted on https://github.com/dwmkerr/sharpshell - you can post questions and feature request here or there. Supported Extensions
You can use SharpShell to build any of the extensions below:
Projects that use SharpShell
1. Trello Context Menu
2. REAL Shuffle Player 2.0
Article Series at CodeProject