6

我的目标是构建一个可以在 Windows Mobile 和“普通”桌面 Windows 上运行的 UI 应用程序。优先考虑的是它在 Windows Mobile 下“看起来不错”,而对于桌面 Windows,如果它变形也可以。在我投入几天时间尝试之前,我想知道这是否可能开始。这个问题有几个部分:

  1. .NET Compact Framework 是“普通”(请编辑).NET Framework 的子集吗?如果没有,MSDN 是否有任何关于 .NET Compact Framework 中的类的信息,但在“正常”(再次请编辑)框架中没有?

  2. 两个框架中共享类的行为是否相同?

  3. 是否可以为两个平台提供一个 Visual Studio 2005 解决方案/项目?如果是,如何设置?

  4. 还有其他意见和建议吗?有没有相关链接?

4

5 回答 5

10
  1. CF包含完整框架 (FFx) 的子集,但它不是纯子集。CF 中实际上有一些 FFx 中没有的东西,这使得它有点困难。除了最基本的情况外,CF 应用程序也使用 P/Invoke。从桌面到设备的这些调用永远不会相同,因此它们不是直接可移植的(尽管通过一点抽象,您可以拥有与平台无关的接口)。
  2. 在大多数情况下,行为是相同的。我见过一些情况并非如此,我记得一些事件顺序并不总是相同,所以请相信但要验证。
  3. 通过非常仔细地按摩配置是可能的,但我当然不推荐它。它很难维护并且非常脆弱。而是有两个项目文件,一个用于 CF,一个用于 FFx。无论如何,您可能会有代码文件差异。将代码文件作为链接添加到每个项目,以便它们都使用相同的物理源文件。我建议使用某种形式的CI来帮助确保它们始终构建。
  4. 查看Dan Moth关于共享代码资产的 MSDN 文章和博客条目。
于 2008-12-02T14:51:46.743 回答
6

PS 我在网上找到了这张海报——它会告诉你所有的 CF 课程。我从 Microsoft 订购了它,因为 Kinkos 想要 65 美元为我打印彩色!微软免费给我寄了几份——我所要做的就是问:

http://www.microsoft.com/downloads/details.aspx?familyid=7B645F3A-6D22-4548-A0D8-C2A27E1917F8&displaylang=en

我把它挂在我的隔间里,当我试图记住可以在哪些命名空间中找到类时,这是天赐之物。

于 2008-12-02T05:33:50.550 回答
3

很好的多部分问题:

  1. 完整框架和紧凑框架之间的差异
  2. 上面的文章链接到有关类行为如何不同的相关文档(在某些情况下肯定会有所不同)
  3. 非常简单!在类库中创建具有一组基本功能的单个解决方案,然后创建两个客户端项目(一个用于桌面应用程序,一个用于 Windows 移动应用程序)。最后,将类库的引用添加到两个客户端项目。
  4. 根据您正在处理的项目的广度,您可能需要查看模型视图控制器模式。这对你的项目来说可能有点多,但如果你想在项目之间共享 UI 行为,它可以成为救命稻草。

希望有帮助!

于 2008-12-02T05:26:05.650 回答
2

CF,通常包含来自常规框架的的子集- 但您不能直接从一个上执行代码。此外,除了作为一个子集之外,compact 中可能还有一些常规版本中没有的东西,例如特定于移动设备的 GUI 东西(软键等)——假设你正在编写一个 winform exe,而不是网页(这可能是获得兼容性的最简单方法)。

通过一些努力,可以共享逻辑代码,特别是实用程序 dll - 但它们需要不同的 csproj 文件(因为它们具有完全不同的编译时“目标”)。为了减少维护,您通常可以通过破解 csproj 使用通配符来作弊,例如

<ItemGroup>
  <Compile Include="..\protobuf-net\**\*.cs" />
</ItemGroup>

对于 UI,事情变得更加棘手。一般来说,期望是为不同的目标设备共享业务逻辑和单独的 UI。

于 2008-12-02T05:07:14.177 回答
1

1)。有一个紧凑的框架,所以是的;它是完整 .NET 框架的一个子集。我在办公室的墙上贴了一张海报,上面写着一大堆在 CF 中工作的课程......我不记得是否有任何纯粹的 CF,但我想有一定是一些。有几本关于这个主题的好书——我有 Paul Yao 的一本,Andy Wigley 的另一本——都可以在亚马逊上找到。

2)。据我所知,CF 类和完整框架类的工作方式相同,但需要针对不同的目标进行编译。

3)。我会冒险猜测,如果您只使用两者通用的类,您可以使用相同的解决方案,但我不知道您必须在多大程度上使其针对紧凑型设备和完整版本进行编译,我也不能完全肯定地说可以做到。我冒险猜测这个过程并不简单。

4)。去你当地的书店看看我提到的那两本书。就像我说的,我有 Paul Yao 的那个,它似乎涵盖了我能想象到的紧凑型设备所需的大部分内容。

于 2008-12-02T05:07:26.577 回答