如何区分Compact Framework与Full Framework .NET程序集

时间:2011-04-06 07:14:44

标签: .net compact-framework windows-ce

有没有办法区分针对Compact Framework的.NET程序集和在Windows CE中运行的.NET程序集,而不是另一个?

我会说更多,除了CF缺少方法和类之外,编译方法有什么不同吗?

如果我的假设是正确的,那么定位在Windows CE中运行的.NET应用程序将始终在桌面Windows上运行,对吧?

2 个答案:

答案 0 :(得分:4)

区别如何?编程方式?通过在资源管理器中查看它?使用Reflector?

为CF编译的程序集是“可重定向”的,并且将在桌面框架提供的下运行您不使用任何CE特定的(P / Invoking coredll,使用WindowsMo​​bile程序集,SIP控件,等)。

在任何情况下,为桌面编译的程序集都不会在CF下运行。必须重新编译它们。

编译输出的一个主要区别是CF CLR不支持桌面上的所有操作码,因此桌面IL在CF下可能无效。什么阻止完整框架组件在CF下工作并不是必需的,但它是其中很大一部分。

答案 1 :(得分:3)

如果要确定给定程序集最初是否构建为以桌面或Compact Framework为目标,则可以查看程序集的公钥标记或它引用的程序集。来自MSDN文章Write Code Once For Both Mobile And Desktop Apps

  

请注意公钥标记   .NET Compact Framework程序集   从9开始,而桌面   等价物以B开头。您可以使用   那些信息可以快速确定   无论你正在部署什么或   引用是桌面或设备   框架组装。

关于桌面组件是否可以在CF上运行,反之亦然,ctacke在他的回答中解决了这个问题。 MSDN文章也值得一看,因为它提供了一些编写代码的示例和策略,可以在CF和桌面框架之间有效地共享。