【发布时间】:2009-10-10 07:10:00
【问题描述】:
如何编写可以为常规 .NET 3.5 Framework 或 .NET 3.5 Compact Framework 重新编译的 .NET 类库?
【问题讨论】:
如何编写可以为常规 .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 程序集。
【讨论】:
说真的,我不知道为什么最佳答案如此之高。您根本不需要两个单独的项目。此外,我不喜欢预处理器指令,它们很丑陋,并且在使用构建参数时需要有关项目的额外知识。将所有不兼容的点点滴滴都外包给一个接口(IPlaformServices 等)会更漂亮,或者你甚至可以问:
if(Environment.OSVersion.Platform == PlatformID.WinCE)
{
// winCE specific
}
else
{
// desktop specific
}
这两个都是比预处理器指令 IMO 更好的解决方案。
【讨论】: