我正在开发一个技术库类,可以在两种类型的框架上使用(紧凑型或非紧凑型)。
开发此类库的最佳方法是什么?默认情况下使用.NET功能(对于XP Embedded)并在使用Windows CE(使用CF.NET)时进行限制?
感谢。
答案 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