如何编写一个可以在.NET 3.5紧凑框架和常规框架上工作的类库?

时间:2009-10-10 07:10:00

标签: .net compact-framework

如何编写可以为常规.NET 3.5 Framework或.NET 3.5 Compact Framework重新编译的.NET类库?

3 个答案:

答案 0 :(得分:14)

不幸的是,这两个框架不是二进制兼容的*,但不要让它阻止你。

在您的解决方案中创建两个项目(一个普通的类库项目和一个Compact Framework类库项目),并通过单击“添加”将所有文件从一个项目添加到另一个作为链接。现有文件“然后检查文件对话框中的”添加为链接“复选框。

现在您只需要维护一组源代码,但您的解决方案将同时构建两个DLL。

如果文件中有任何特定于桌面框架的代码,并且无法在紧凑框架上运行,则可以将其包装在编译器指令中(至少在C#中),如下所示:

#if PocketPC
    // mobile-specific stuff here
#else
    // desktop-specific stuff here
#endif
  • 请注意,虽然您无法在移动平台上使用桌面框架二进制文件,但情况恰恰相反。紧凑的框架可执行文件可以在桌面上运行。但是,我很确定桌面应用程序无法引用紧凑的框架程序集(尽管我从未尝试过)。

答案 1 :(得分:5)

  

>   这两个框架不是二进制兼容的   >

实际上,桌面版可以加载和运行CF程序集。

答案 2 :(得分:5)

  1. 为。创建一个类库 紧凑的框架。
  2. 添加参考 从您的.exe到该库 项目(桌面或移动)
  3. 利润!
  4. 说真的,我不知道为什么最佳答案如此顶级。您根本不需要两个单独的项目。此外,我不喜欢预处理器指令,它们很难看,并且在使用构建参数时需要有关项目的其他知识。将所有不兼容的零件外包给一个接口(IPlaformServices等)更加美观,或者您甚至可以问:

       if(Environment.OSVersion.Platform == PlatformID.WinCE)
       {
           // winCE specific     
       }
       else
       {
           // desktop specific
       }
    

    这两个都是比预处理器指令IMO更好的解决方案。