【问题标题】:PCL - can I target .NET 4.5 and ".NET 4.0 with BCL extensions"PCL - 我可以针对 .NET 4.5 和“带有 BCL 扩展的 .NET 4.0”
【发布时间】:2014-12-04 13:40:35
【问题描述】:

我有一个便携式类库项目,目前针对以下平台:

  • .NET Framework 4.5
  • Windows 8
  • Windows Phone Silverlight 8

我想添加对 .NET 4.0 的支持,但我目前使用一些 .NET 功能,这些功能通过包含“Microsoft BCL Portability Pack”在 .NET 4.0 中可用; CallerMemberName 属性、IProgress 接口和更新的 Task 类等功能。

有没有办法在 PCL 项目中为平台添加一些“条件”支持? IE。 “允许.NET 4.0,只要包含依赖XXXXX?”

【问题讨论】:

  • 不,非常个不同的参考程序集。
  • 不确定我是否完全关注你。但是,如果您让您的 PCL 无条件地以 .NET 4.0 为目标并引用 BCL Portability Pack,我认为您应该能够在 .NET 4.5 应用程序中安全地使用 PCL 库,因为 BCL 可移植性pack 会将特定目标上已经存在的类型的使用转发到该目标上的实际实现。
  • 考虑到 .NET 4 将在大约 15 个月内死掉(2016 年 1 月 12 日生命周期结束),support2.microsoft.com/lifecycle/search/… 我觉得任何向它提供支持的尝试都是浪费。当微软发布 BCL Portability Pack 时,他们显然只关注了一些不包括 PCL 的计划。因此,请专注于您可以控制的内容,并建议您的客户尽快升级到 .NET 4.5.2,因为只有 15 个月的时间。
  • 作为在工业领域工作的人,许多客户仍在使用 Windows XP(出于某种原因),我不得不不同意。尽管微软已经切断了对 Windows XP 的支持,但我仍然必须编写能够在其上运行的软件。 .NET 4.5 应用程序不能在 XP 上运行。然而,我仍然很喜欢 4.0 之后添加的一些功能。

标签: .net .net-4.0 .net-4.5 portable-class-library


【解决方案1】:

如 cmets 中所述,在 PCL 中以 .NET 4 为目标,并引用 Microsoft.Bcl 和可能的 Microsoft.Bcl.Async 包。

您可以考虑将 PCL 打包为 NuGet 包,并将这些包列为依赖项。这样,当您的 NuGet 包安装到项目中时,所需的 Microsoft.Bcl 包也将被安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多