【发布时间】:2012-09-20 16:05:00
【问题描述】:
随着Portable Class Library 的引入,开发人员可以发布跨多个平台兼容的单个库。这样做的缺点是 PCL 必须将自身缩减为在所有指定平台上兼容的最低通用类集。
如果您想发挥特定平台的优势和功能,(或者如果您想访问仅存在于某些平台中的类),我认为您必须执行以下操作之一:
- 将“基础”类集发布为可移植类库,并附带构建在其上的特定于平台的库。
- 一个例子可能是 MVVM 库:将通用基类发布为单个可移植类库 - 名为“MyCustomMvvm.dll” - 并以“MyCustomMvvm.Extras.WPF.dll”和“ MyCustomMvvm.Extras.WP7.dll”等... 或:
- 为每个平台保留一个单独的项目,使用“链接”源文件和#if 语句有条件地编译特定于平台的功能。
- 对于此示例,所有库都将具有相同的文件名(“MyCustomMvvm.dll”),但每个平台都有一个单独的副本,使用解决方案中特定于平台的项目构建。
我的问题是:只有这两个选项吗?有没有明显“更好”的选择?
【问题讨论】:
-
我认为可移植类库是最好和最干净的方法。但是,是的,这当然只适用于不使用平台特定功能的通用代码。
-
这在很大程度上取决于您的项目。你有很多平台特定的功能吗?在您的用例中,最低的类集是一个很大的限制吗?如果您想稍后针对其他未列出的平台,例如 monodroid/monotouch,该怎么办?
标签: .net multiplatform portable-class-library