2015-04-21 60 views
2

我有一个跨平台的解决方案(iOS和Android),它有一个公共共享项目,我尝试从中加载数据库文件。Xamarin:从共享项目加载数据库的资产路径

我试图获取,像这样的文件夹路径:

`Path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
` 

Path = System.IO.Path.Combine (Path, "database.db"); 

但文件不生成的路径存在。

我拖放数据库文件到iOS项目,以及共享项目,但它似乎并没有工作。

在iOS中,相同的操作可以使用来完成:

[[NSBundle mainBundle] pathForResource:"database" ofType:"db"] 

我该怎么做,对于一个共享类,如果可能的话?

+0

我使用共享的项目,而不是,因为它更符合我的要求。有没有办法在共享项目中实现功能? – Alterecho

回答

1

“Environment.GetFolderPath(Environment.SpecialFolder.Personal);”根本没有获得你的应用程序资源。 如果您需要用户修改数据,您应该将数据库(在您的应用程序资源中)复制到该文件夹​​(Environment.GetFolderPath(Environment.SpecialFolder.Personal)),并且该文件将在SQLite连接上打开。从这一点开始,资源文件夹中的db文件将不再有用,因为它不允许修改您的应用程序文件。

请注意,您只需要一次文件复制:即第一次您的应用程序运行

也就是说,使用你的数据库文件(或其他文件)在你的项目,你可以添加一个引用该文件(作为链接)并加载它,因为您将从每个特定平台加载任何资产。

参见以下链接获取更多信息有关如何加载资产:

IOS: http://developer.xamarin.com/recipes/ios/general/file_system/load_a_file/

的android:http://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/