我怎样编写一个.NET类库,以便可以重新编译为常规的.NET 3.5框架或.NET 3.5紧凑框架?
很遗憾,这两个框架不是二进制兼容的*,但不要让这阻止你。
在解决方案中创建两个项目(一个普通的类库项目,一个紧凑框架的类库项目),然后通过单击“添加|现有文件”并在文件对话框上选中“添加链接”复选框,将一个项目中的所有文件添加到另一个项目中。
现在,您只需要维护一组源代码,但您的解决方案将同时构建两个DLL。
如果您有任何特定于桌面框架并且在紧凑框架上无法工作的文件中的代码,可以像这样在编译器指令中包装它(至少在C#中):
#if PocketPC
// mobile-specific stuff here
#else
// desktop-specific stuff here
#endif
说真的,我不知道为什么排名靠前的答案会如此受欢迎。您根本不需要两个独立的项目。我也不喜欢预处理器指令,它们很丑陋,并且在处理构建参数时需要额外的知识。将所有不兼容的部分外包到接口(例如IPlaformServices)中更加美观,甚至您可以直接询问:
if(Environment.OSVersion.Platform == PlatformID.WinCE)
{
// winCE specific
}
else
{
// desktop specific
}
在我看来,这两种方法比预处理指令更好。
> 这两个框架不是二进制兼容的 >
实际上,桌面版可以加载和运行CF程序集。