【问题标题】:How should a mobile project reference/use classes in the full .net framework?移动项目应该如何引用/使用完整 .net 框架中的类?
【发布时间】:2009-12-01 03:26:29
【问题描述】:
我们的团队正在开发一个框架。在不同的解决方案中,我们有一个移动项目(以及其他“普通”.NET 项目)。该移动项目将受益于使用框架中的一些代码。但是,该框架是完整的 .NET 版本,而不是紧凑的框架。移动项目应该如何使用该框架代码?目前,我们的团队已经通过链接文件将框架中的许多文件添加到移动项目中。我们可以做到这一点,但我想知道是否有更好的方法。使用这种方法,我们必须在构建机器上采取一些额外的步骤,以确保在我们构建包含移动应用程序的解决方案时,这些链接文件可用。
另一种选择是维护两个版本的框架类;一个是完整的 .net 版本,另一个是紧凑的框架版本。但是维护重复的代码从来都不是好事。
【问题讨论】:
标签:
.net
mobile
reference
project
【解决方案1】:
维护两个版本的类将是一场管理噩梦。您可以从 .NET CF 项目中引用完整的 .NET 版本程序集,但无法保证所有必需的方法和程序集都可以在移动设备上使用。
您应该创建一个以 .NET CF 框架为目标的公共项目,并将两个项目/产品所需的所有类都放在其中,然后在您的移动项目和使用完整版本的其他项目中引用这个公共项目.NET 框架。
【解决方案2】:
我们正在进行 .NET Full 和 CF 开发。我们或多或少地做你正在做的事情,稍加调整。通常,一个项目需要两种解决方案:一种用于桌面应用程序(Full .NET),另一种用于移动应用程序(CF .NET)。
有时我们需要在两个应用程序之间共享代码。我们为该代码创建了一个单独的类库和一个以“Compact”结尾并包含来自完整 .NET 类库的“链接”文件的第二个类库。例如:
My.Desktop
My.Mobile
My.Common
My.Common.Compact
My.Desktop 引用My.Common.dll,My.Mobile 引用My.Common.Compact.dll。
还有一个提示。有时,My.Common 中的代码与 My.Common.Compact 中的代码不完全一样,因为 CF 缺少完整 .NET 中存在的大量代码。为了克服这个问题,我们使用带有 FULL_FRAMEWORK 指令的 #if 语句,该指令仅在 My.Common 中定义,我们确保未在 My.Common.Compact 中定义。