【问题标题】:How do I determine which PCL profiles contain the library implementations that I need?如何确定哪些 PCL 配置文件包含我需要的库实现?
【发布时间】:2015-05-27 15:51:15
【问题描述】:

我想在我的可移植类库项目中调用 Thread.Sleep。这个方法是在我的 iOS 和 Android 项目的 Mono 库中实现的,所以理论上我应该只选择一个兼容的 PCL 配置文件。然而,事实证明这比应有的困难。

如何确定哪些 PCL 配置文件包含我需要的库实现,以及如何告诉 Visual Studio 引用该特定配置文件?

我在 MSDN 上找不到任何文档,它甚至承认存在 PCL 配置文件编号,更不用说如何选择特定编号了。我目前唯一的选择是手动引用配置文件文件夹中的 System.dll,但这感觉就像走进了雷区。任何帮助表示赞赏。

【问题讨论】:

  • 这根本不是 PCL 的工作方式。你选择你的目标,然后你会发现什么是支持的。选择任意目标是没有意义的。替代 Thread.Sleep() 的方法很多,可以使用 Task.Delay() 或 ManualResetEvent.WaitOne()。

标签: c# mono xamarin.forms portable-class-library


【解决方案1】:

This blog post 记录了自 VS2015 更新 3 起所有可用的 PCL 配置文件。

为了快速参考,以下是一些配置文件。

  • Profile7 - .NET Framework 4.5 和 Windows 8.0
  • Profile24 - .NET Framework 4.5 和 Silverlight 5.0
  • Profile47 - .NET Framework 4.5、Silverlight 5.0 和 Windows 8.0
  • Profile78 - .NET Framework 4.5、Windows 8.0、Windows Phone Silverlight 8.0
  • Profile158 - .NET Framework 4.5、Silverlight 5.0、Windows 8.0、 Windows Phone Silverlight 8.0
  • Profile255 - .NET Framework 4.5、Silverlight 5.0、Windows 8.0 和 Windows Phone 8.1
  • Profile344 - .NET Framework 4.5、Silverlight 5.0、Windows 8.0、 Windows Phone 8.1、Windows Phone Silverlight 8.0

顺便说一句,

  1. This Xamarin documentation 会让您了解 PCL 是什么。
  2. This SO answer 告诉如何更改 PCL 配置文件。

【讨论】:

    【解决方案2】:

    除非有人在所有提供的 PCL 配置文件中编写一个实用程序,如搜索引擎,否则没有办法这样做。

    您对“此方法在我的 iOS 和 Android 项目的 Mono 库中实现”的描述显示了一些误解,

    1. 它是 Xamarin 库,而不是 Mono。这两个品牌并不等同。
    2. 此方法可能在 Xamarin.iOS 和 Xamarin.Android 中可用,但由于 Microsoft 方面最初的粗鲁决定,未能在 PCL 中使用。只需牢记这一点,如果您稍后了解有关 PCL 如何在后台工作以及定义 PCL 配置文件的更多信息,您就会明白为什么。

    因此,如果您确实想使用所有位,则首选共享资产项目。

    更多信息可以在 Xamarin 中找到,

    http://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/

    【讨论】:

    • 我绝对不懂 PCL,感谢您提供的任何澄清。据我目前了解,VS 中的 Xamarin.iOS 和 Xamarin.Android 项目都引用了 Mono 库,并且在链接期间所有 PCL 引用都替换为 Mono。但是,我找不到任何关于构建过程中实际情况的文档/解释。这都是非常黑匣子。您能否指出一个描述 Xamarin 如何使用 PCL 构建跨平台应用程序的资源?
    • 添加了 Xamarin 的链接,还有更多来自它们的链接。
    • 我对 Xamarin 文档的那一页很熟悉,但我正在寻找更多技术性的东西。包含 PCL 参考和 MonoTouch 参考代表了 .NET 框架的两个冗余实现。在构建过程中如何解决这种冗余?是否包括两个实现?一个被另一个替换了吗?
    • 该技术细节可能会出现在诸如 CLR 之类的 C# 书籍中。或者您只是假设代码是针对 PCL 配置文件编译的,而在运行时实际类型来自 Xamarin.iOS 程序集。类型转发就是这个魔法的术语。
    • 有趣。因此,我的 iOS 项目中的 MonoTouch 引用实际上可能是类型转发到 PCL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多