Do not do this! Please, please don't.
You will break a lot of applications. Shell extensions must not use the .net framework (or any other similar framework), ever.
Here's an explanation why you must not do this.
Write your extension in C/C++, but not C#.
Update:
Even though as of .NET4 it's possible to have multiple framework versions in one process, it is still not recommended and not supported by Microsoft!
See this post about why:
[...] These problems led us to officially recommend against—and not support—the development of in-process shell extensions using managed code.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…