【问题标题】:The reason why Portable Class Libraries were created (in architectural meaning)?创建可移植类库的原因(在架构上)?
【发布时间】:2013-11-13 23:47:45
【问题描述】:

关于什么是 PCL like this 的文章非常多。

但是,从我发现的所有内容来看,他们大多只是这样说:

Portable Library Tools CTP 添加了新的“Portable Class Library” 项目模板到可用于创建类的 Visual Studio 运行在各种 .NET 平台上的 C# 和 VB 库,无需 重新编译。

但仔细阅读 this superb explanation 了解 .NET(和 Mono)的工作原理,我变得更加不清楚为什么需要 PCL。

因为如果我构建了一些程序集并且它包含 CIL 字节码(可以通过任何其他平台使用(如果相应的平台有 CLR 实现(就像 .NET 的主要思想一样))),那么有什么问题?为什么我们还需要 PCL?

【问题讨论】:

    标签: .net mono clr cil portable-class-library


    【解决方案1】:

    虽然 IL 可能相同,但可用的库却不同。如果您想以台式计算机、Windows 8 应用程序和 Silverlight 为目标,您需要确保您的代码使用所有这些地方实际存在的东西。

    可移植类库确保您只使用适用于您所选平台的那组库。

    您可能想阅读大约一年前关于此.Net Framework blog 的更多详细信息。

    【讨论】:

    • 所以,您的意思是,这些仅用于 VisualStudio,以确保在编译程序集时,该程序集(项目)中的代码仅使用可用于 PCL 的系统的库正在创建?
    【解决方案2】:

    如前所述,PCL 强制您仅使用您所针对的所有平台上存在的 API。

    此外,字节码是“可移植的”,但 .NET 程序集包含对其他程序集的引用,并且在 PCL 支持出现之前,对 .NET Framework API 的引用使用跨平台的不同程序集标识。 IE,对 System.dll 的 .NET Framework 版本的引用将具有与 Windows Phone 或 Silverlight 不同的版本号和强名称密钥。最重要的是,对于某些 API(例如 ICommand 和 HttpWebRequest),程序集的简单名称甚至都不相同。因此,您无法创建可移植到多个平台的程序集。

    请在此处查看我的答案以获取一些信息:https://stackoverflow.com/a/16349673/1509

    【讨论】:

    • 谢谢!但不幸的是不能投票给答案 - 还没有足够的声誉。 )
    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多