繁体   English   中英

Windows Shell /命名空间扩展的ATL还是C#?

[英]ATL OR C# for windows shell/namespace extenssion?

我有个问题,经过数小时的谷歌搜索和阅读文章,我了解到Windows中的命名空间扩展非常棘手 (至少在C ++中),现在我也看到了在C#中这样做的可能 ,但是microsft确实可以nt officaly确认使用.net进行命名空间扩展...虽然我已经看到了非常好的商业命名空间扩展框架,但没有一个是免费的...。

所以对我的问题:),我想开发自己的命名空间扩展,我拥有C ++ / C#知识和基本的COM / ATL,但是如果可以做到,我更喜欢c#,因此c#inteop可以完全完成工作而无需太多招数? 或者一个人应该在ATL中潜水以创建必要的COM对象...

谢谢!

通常,到目前为止, 在托管代码中编写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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM