.net - 可移植类库与特定于平台的版本

标签 .net multiplatform portable-class-library

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

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

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

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

    最佳答案

    退房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除了没有理由将所有程序集命名为相同。

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

    关于.net - 可移植类库与特定于平台的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645626/

    相关文章:

    c# - 版本号 float 、十进制或 double

    c++ - 如何避免多平台qt代码中的specific#ifdef?

    android - Android 中的 SYSCALL_INLINE

    c - 自进程开始以来耗时

    c# - 如何使用 HttpClient 将带有 JSON 的 DELETE 发送到 REST API

    c# - Java 和 C# 正则表达式兼容吗?

    .net - FileInfo.IsReadOnly 与 FileAttributes.ReadOnly

    c# - 托管源代码管理?

    .net-assembly - 在 PCL 中获取程序集版本

    c# - Xamarin PCL - 根据用户输入进行 API 调用,如何抑制请求?