繁体   English   中英

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

[英]How to write a class library that will work on .NET 3.5 compact framework AND regular framework?

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

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

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

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

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

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

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

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

  1. 为紧凑框架创建一个类库。
  2. 从.exe项目(桌面或移动)添加对该库的引用
  3. 利润!

说真的,我不知道为什么最佳答案是如此顶级。 您根本不需要两个单独的项目。 此外,我不喜欢预处理器指令,它们很难看,并且在使用构建参数时需要有关项目的其他知识。 将所有不兼容的零碎件外包给接口(IPlaformServices等)更加美观,或者您甚至可以问:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM