代码之家  ›  专栏  ›  技术社区  ›  Chris KL

如何编写一个适用于.NET 3.5紧凑框架和常规框架的类库?

  •  10
  • Chris KL  · 技术社区  · 15 年前

    如何编写一个.NET类库,我可以为常规.NET 3.5框架或.NET 3.5 Compact框架重新编译它?

    3 回复  |  直到 15 年前
        1
  •  14
  •   Matt Hamilton    15 年前

    不幸的是,这两个框架不是二进制兼容的*,但不要因此而停止。

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

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

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

    #if PocketPC
        // mobile-specific stuff here
    #else
        // desktop-specific stuff here
    #endif
    
    • 请注意,虽然您不能在移动平台上使用桌面框架二进制文件,但事实并非如此。紧凑框架可执行文件可以在桌面上运行。不过,我相当肯定桌面应用程序不能引用紧凑框架程序集(尽管我从未尝试过)。
        2
  •  5
  •   logicnp    15 年前

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

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

        3
  •  5
  •   Quibblesome    15 年前
    1. 为创建类库 紧凑的框架。
    2. 添加引用 从.exe到该库 项目(桌面或移动)
    3. 利润!

    说真的,我不知道为什么最重要的答案是如此之高。你根本不需要两个独立的项目。另外,我不喜欢预处理器指令,它们很难看,在处理构建参数时需要额外的项目知识。将所有不兼容的部分和部分外包到一个接口(iplaformservices或类似的接口)更漂亮,或者您甚至可以问:

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

    这两种方案都比IMO预处理器指令更好。