随着可移植类库的引入,开发人员可以发布一个跨多个平台兼容的库。不利的一面是 PCL 必须将自身缩减为在所有指定平台上兼容的最低通用类集。
如果您想发挥特定平台的优势和功能,(或者如果您想访问仅存在于某些平台中的类),我假设您必须执行以下操作之一:
- 发布一组“基础”类作为可移植类库,并附带构建在其上的特定于平台的库。
- 一个示例可能是 MVVM 库:将通用基类发布为单个可移植类库 - 名为“MyCustomMvvm.dll” - 并以“MyCustomMvvm.Extras.WPF.dll”和“MyCustomMvvm.Extras”的形式发布一些额外的平台功能.WP7.dll”等...或者:
- 为每个平台保留一个单独的项目,使用“链接”源文件和#if 语句有条件地编译特定于平台的功能。
- 对于此示例,所有库都将具有相同的文件名(“MyCustomMvvm.dll”),但每个平台都有一个单独的副本,使用解决方案中特定于平台的项目构建。
我的问题是:只有这两个选择吗?有没有明显“更好”的选择?