In-Proc SxS在托管代码中打开shell扩展?

时间:2010-04-28 19:18:15

标签: .net windows shell-extensions

以前的推荐是"Do not write in-process shell extensions in managed code."

但是对于.NET Framework 4和In-Process Side-by-Side,应该解决不在托管代码中编写shell扩展的主要原因。

话虽如此,我有三个问题。

  1. 现在可以在托管代码中编写shell扩展吗?
  2. 在托管代码中编写shell扩展可能存在哪些问题?
  3. 在非托管代码中编写shell扩展可能有什么原因?

3 个答案:

答案 0 :(得分:6)

查看此MSDN文章: 使用.NET Framework 4编写Windows Shell扩展(C#,VB.NET) - 第1部分 http://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-1.aspx

答案 1 :(得分:3)

  1. 是的,没关系。
  2. 一个巨大的问题和时间大概是你必须在托管代码中声明的大量shell接口,函数,结构等。您必须非常小心,因为即使单个参数的单个错误声明也可能导致爆炸,访问冲突,内存泄漏以及不需要数小时追踪的内容。
  3. 唯一的原因是您喜欢或被迫使用非托管语言。
  4. 查看EZNamespaceExtensions.Net,它消除了上面的#2以及开发命名空间扩展所需的时间(无论是托管扩展还是非托管扩展)。

答案 2 :(得分:2)

现在可以在.NET 4托管代码中编写shell扩展。您仍然应该避免在.NET 3.5或更早版本中编写shell扩展,因为这些早期版本不会相互支持进程内。