首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于应用平台的运行代码

基于应用平台的运行代码
EN

Stack Overflow用户
提问于 2022-03-28 04:22:40
回答 1查看 128关注 0票数 0

试图制作一个跨平台的应用程序库,可以在UWP、Winforms、Wpf、Android和iOS上工作。

使用NetStandard2.0

由于跨平台选项,我一直在使用Xamarin表单来测试库,但我想做的是获取硬件信息,并模拟音频输出等设备。

我无法找到一种能够在所有平台/设备上工作的方法,只能针对特定的平台/设备。我也找不到一种方法来运行特定的代码,或者基于运行的平台使用特定的库。

针对多个框架不起作用,因为它们会导致所有其他文件中的错误。尝试创建单独的库,专门针对像UWP、Android和iOS这样的平台,但是当引用它们时,我得到了一个不受支持的错误:

代码语言:javascript
复制
Project ****.UWP is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). 
Project ****.UWP supports: uap10.0.17763 (UAP,Version=v10.0.17763)

像这样的东西,每个项目(UWP,Android和iOS)

我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2022-03-28 06:30:50

针对多个框架不起作用,因为它们会导致所有其他文件中的错误。尝试创建单独的库,专门针对UWP这样的平台,

平台特定的代码不能直接用于共享库中。用于为每个平台调用本机api。更好的方法是使用DependencyService进行处理。这是你可以参考的正式文件

另一种方法是使用条件编译

例如

代码语言:javascript
复制
public static string DatabaseFilePath
{
    get
    {
        var filename = "TodoDatabase.db3";
#if SILVERLIGHT
        // Windows Phone 8
        var path = filename;
#else

#if __ANDROID__
        string libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
#else
#if __IOS__
        // we need to put in /Library/ on iOS5.1 to meet Apple's iCloud terms
        // (they don't want non-user-generated data in Documents)
        string documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal); // Documents folder
        string libraryPath = Path.Combine (documentsPath, "..", "Library");
#else
        // UWP
        string libraryPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
#endif
#endif
        var path = Path.Combine(libraryPath, filename);
#endif
        return path;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71642381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档