试图制作一个跨平台的应用程序库,可以在UWP、Winforms、Wpf、Android和iOS上工作。
使用NetStandard2.0
由于跨平台选项,我一直在使用Xamarin表单来测试库,但我想做的是获取硬件信息,并模拟音频输出等设备。
我无法找到一种能够在所有平台/设备上工作的方法,只能针对特定的平台/设备。我也找不到一种方法来运行特定的代码,或者基于运行的平台使用特定的库。
针对多个框架不起作用,因为它们会导致所有其他文件中的错误。尝试创建单独的库,专门针对像UWP、Android和iOS这样的平台,但是当引用它们时,我得到了一个不受支持的错误:
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)
我能做什么?
发布于 2022-03-28 06:30:50
针对多个框架不起作用,因为它们会导致所有其他文件中的错误。尝试创建单独的库,专门针对UWP这样的平台,
平台特定的代码不能直接用于共享库中。用于为每个平台调用本机api。更好的方法是使用DependencyService进行处理。这是你可以参考的正式文件。
另一种方法是使用条件编译
例如
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;
}
}https://stackoverflow.com/questions/71642381
复制相似问题