locked
FAQs: 基于桌面的工程能否转化为智能设备工程? RRS feed

  • 问题

  • 为了帮助大家更好地学习 Windows Mobile Development  技术,微软论坛技术支持团队编辑了一些列的 "VSD 常见问题及解答" 精华帖。

    本帖的主题是:基于桌面的工程能否转化为智能设备工程? 

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "Windows Mobile Development  常见问题及解答",请打开索引页面:
    http://social.msdn.microsoft.com/Forums/zh-CN/1729/thread/0b66fb9f-37a7-4d77-a43d-6fbd801b26fd

    2011年3月9日 2:35

答案

  • 首先,我们知道紧凑的框架是完整的.NET 框架的一个子集。.NET 框架精简版实际上并不是严格子集的.NET 框架 ;实际上添加了一些自己的成员。有四个特定于设备的程序集: System.Data.SqlServerCe System.NET.IrDA Microsoft.WindowsMobile.DirectX Microsoft.WindowsCE.Forms。桌面开发人员通常尝试把框架生成的程序集引用到移动设备应用程序上,这样是肯定不行的。即使您的桌面项目使用只有类型和成员,在.NET 框架精简版上,运行时您还将获得 TypeLoadException MissingMethodException的异常

     

    相关英文论坛帖子:

    http://social.msdn.microsoft.com/forums/en-US/Windowsmobiledev/thread/e2b185b7-c5d9-4a7c-9370-22ff6eafc0a0/ 

    http://forums.msdn.microsoft.com/en-US/vssmartdevicesvbcs/thread/110181dc-8a2d-416c-9f62-f4c6ed2092fb/ 

     

    第二,尽管桌面程序集不能再设备上被执行,可喜的是反之则可以。如果我们创建了一个智能设备项目然后生成它,其输出(EXEDLL)可以在桌面上被执行或者被其他桌面项目所引用。这是由于.NET Compact Framework 程序集是可以被重定向的。如果你用ILDASM打开它们,你会发现它们拥有System.Reflection.AssemblyNameFlags.Retargetable属性,这意味着在运行时,所有的引用于.NET Compact Framework的程序集都被重定向到相应的桌面版本。所以,他们实际运用的是桌面版本的Framework而不是智能设备的版本。

    注意,你不能使用智能设备相关的类库,比如Microsoft.WindowsCE.Forms

     

    相关参考信息:

    http://msdn.microsoft.com/en-us/magazine/cc163387.aspx


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月9日 2:36