4

随着可移植类库的引入,开发人员可以发布一个跨多个平台兼容的库。不利的一面是 PCL 必须将自身缩减为在所有指定平台上兼容的最低通用类集。

如果您想发挥特定平台的优势和功能,(或者如果您想访问仅存在于某些平台中的类),我假设您必须执行以下操作之一:

  1. 发布一组“基础”类作为可移植类库,并附带构建在其上的特定于平台的库。
    • 一个示例可能是 MVVM 库:将通用基类发布为单个可移植类库 - 名为“MyCustomMvvm.dll” - 并以“MyCustomMvvm.Extras.WPF.dll”和“MyCustomMvvm.Extras”的形式发布一些额外的平台功能.WP7.dll”等...或者:
  2. 为每个平台保留一个单独的项目,使用“链接”源文件和#if 语句有条件地编译特定于平台的功能。
    • 对于此示例,所有库都将具有相同的文件名(“MyCustomMvvm.dll”),但每个平台都有一个单独的副本,使用解决方案中特定于平台的项目构建。

我的问题是:只有这两个选择吗?有没有明显“更好”的选择?

4

1 回答 1

1

查看http://blogs.msdn.com/b/rxteam/archive/2012/03/12/reactive-extensions-v2-0-beta-available-now.aspx特别是“迈向便携式图书馆世界”部分。Rx 针对许多不同的运行时,因此它是一个很好的示例用例。他们通常会按照您的建议作为选项 1,并使用 NuGet 来管理大量分发。

NuGet 2.1 正在进行更改以帮助完成这项工作: http: //nuget.codeplex.com/discussions/391121

您的第二个建议是 MVVM light 如何按照http://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for-you 完成。 aspx除非没有理由将所有程序集命名为相同。

我不确定是否有可靠或有用的替代方案。

于 2012-09-28T18:51:03.103 回答