如何在.NET Framework上编译库& .NET Compact Framework?

时间:2010-12-27 09:02:15

标签: c# compact-framework conditional-compilation

我正在开发一个技术库类,可以在两种类型的框架上使用(紧凑型或非紧凑型)。

开发此类库的最佳方法是什么?默认情况下使用.NET功能(对于XP Embedded)并在使用Windows CE(使用CF.NET)时进行限制?

感谢。

3 个答案:

答案 0 :(得分:4)

我通常通过在每个播放表单中使用单独的dll来实现这一点,因此我可以在可能的情况下使用可用的平台功能(通常都不是严格的子集/超集,并且如果您想要节拍性能等,则目标是交叉点过度限制)。

大多数功能都是通用,因此#if代码(具有特定功能的构建符号)的数量通常很少。

为了避免忘记添加项目文件的问题,我在csproj中使用递归通配符,因此所有.cs文件都会自动包含。

答案 1 :(得分:2)

我发现在.NET和.NET CF代码库之间共享库类有两种方法。

代码相同

库通常可以是相同的,特别是如果它们是具有计算的基本库,或者是相同的业务类。对于非UI库,通常就是这种情况,因为.NET CF主要是.NET的一个子集。

在这种情况下,您可以构建一个设备项目并将其包含在完整的Windows项目中。您将收到一条警告,指出您正在加载一个设备项目,但如果您没有使用任何特定于CF的代码,那就没关系了。

代码非常相似,但不同

在这种情况下,我创建了两个项目,因此创建了两个程序集。其中一个程序集我制作主要程序集并包含所有使用的文件。在第二步中,我将文件添加为链接以将它们包含在引用中,以便反映任何更新。然后我使用ifdef来处理它们可能不同的任何特殊情况。

答案 2 :(得分:1)

考虑使用预处理程序指令。

您可以为通用.NET和CF构建同一lib的2个版本。

喜欢:

#if (!COMPACT_FRAMEWORK)
            // some code only for general .NET 
#endif