【问题标题】:Xamarin Portable Library PCL Preprocessor PlatformXamarin 便携式库 PCL 预处理器平台
【发布时间】:2015-11-19 07:27:52
【问题描述】:

我正在尝试为跨平台 Xamarin.Forms 创建和使用 de Portable 库。但是当我中断代码时,平台的预处理器似乎没有设置。

#if WINDOWS_PHONE || __ANDROID__
  Debug.WriteLine("Passed");
#endif

逐步使用,我可以看到预处理器条件之间的所有代码都被跳过(在 Android 和 Windows Phone 上尝试过)。但是当我在启动项目中尝试同样的事情时,它会起作用。

在 Visual Studio 中,代码应在活动时突出显示,但它不在 PCL 中。

启动项目中定义的预处理器应该与库共享,不是吗?

【问题讨论】:

    标签: c# android xamarin cross-platform


    【解决方案1】:

    PCL 不能以这种方式工作。 试试这个:

    using Xamarin.Forms;
    ...
    if(Device.OS == TargetPlatform.Android)
        Debug.WriteLine("I'm on Android");
    else if(Device.OS == TargetPlatform.iOS)
        Debug.WriteLine("This is iOS");
    

    这里 (https://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/) 您可以找到相应的 Xamarin 文章。你想做的是 共享资产方法而不是 PCL 方法。

    【讨论】:

    • 当您需要为每个平台提供不同的程序集和引用时,是否可以创建平台就绪库?
    • PCL 库是平台就绪... 重点是您可以对所有平台使用相同的程序集。如果您需要为每个平台提供不同的参考/程序集,请将它们添加到特定于平台的项目中。如果您认为您的 PCL 内部的每个平台都需要不同的参考,那么我猜您的设计有问题。不幸的是,如果不知道你到底想做什么,我就不能更具体了。请澄清...
    • 我更改了我的代码并使用它现在可以工作的 .Net 程序集完成了所有工作。
    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    相关资源
    最近更新 更多