[英]ATL OR C# for windows shell/namespace extenssion?
通常,到目前为止, 在托管代码中编写Shell扩展一直是一个坏主意 。 一个进程只会加载一个版本的CLR,如果其他人首先选择了另一个版本,那么您就死定了。
这可能会在不久的将来发生变化,但是在这一点上,请坚持使用本机代码作为您的Shell扩展。
编辑:这是关于这个问题的一些官方词汇:
http://msdn.microsoft.com/zh-CN/magazine/ee819091.aspx
请注意有关以2.x及更高版本为目标的代码如何在同一过程中与4.0共存的非常精确的信息。 因此,尽管SxS是4.0功能,但它对2.x用户具有好处。
但是,有以下规定:
有了与其他任何运行时一起运行的多个运行时的能力,我们现在可以为编写托管shell扩展提供常规支持,甚至包括那些在计算机上使用任意应用程序在进程中运行的扩展。 我们仍然不支持使用.NET Framework 4之前的任何版本编写Shell扩展,因为这些版本的运行时不会在进程内相互加载,并且在许多情况下会导致失败。
因此,还有一个额外的问题: explorer.exe
进程不是托管shell扩展的唯一进程。 具有“文件打开”对话框的任何程序都可能需要加载外壳扩展。 因此,您的.NET 2.0-3.5扩展名将无法在任何.NET 1.x应用程序的“文件打开”对话框中加载。 对于类似打印机驱动程序的GUI组件这样的事情,这将是一个类似的故事,它也可以加载到显示标准“打印机”对话框的任何应用程序中。
因此,如果要开发托管Shell扩展,则从VS2010开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.