5

过去的建议是“不要在托管代码中编写进程内 shell 扩展”。

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

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

  1. 现在可以在托管代码中编写 shell 扩展了吗?
  2. 在托管代码中编写 shell 扩展可能存在哪些问题(如果有的话)?
  3. 在非托管代码中编写 shell 扩展的原因可能是什么?
4

3 回答 3

6

查看这篇 MSDN 文章:使用 .NET Framework 4(C#、VB.NET)编写 Windows Shell 扩展 - 第 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

于 2010-09-22T07:17:43.563 回答
3
  1. 好的,可以。
  2. 一个巨大的问题和时间浪费是您必须在托管代码中声明的大量 shell 接口、函数、结构等。您必须非常小心,因为即使单个参数的单个错误声明也可能导致崩溃、访问冲突、内存泄漏以及可能需要数小时才能追踪的情况。
  3. 唯一的原因是如果您更喜欢或被迫使用非托管语言。

查看EZNamespaceExtensions.Net,它消除了上面的 #2 以及开发一般命名空间扩展所需的时间(无论是托管还是非托管)。

于 2010-04-30T10:22:50.667 回答
2

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

于 2010-04-28T20:05:55.633 回答