有没有办法区分针对Compact Framework的.NET程序集和在Windows CE中运行的.NET程序集,而不是另一个?
我会说更多,除了CF缺少方法和类之外,编译方法有什么不同吗?
如果我的假设是正确的,那么定位在Windows CE中运行的.NET应用程序将始终在桌面Windows上运行,对吧?
答案 0 :(得分:4)
区别如何?编程方式?通过在资源管理器中查看它?使用Reflector?
为CF编译的程序集是“可重定向”的,并且将在桌面框架提供的下运行您不使用任何CE特定的(P / Invoking coredll,使用WindowsMobile程序集,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和桌面框架之间有效地共享。