我想在monodroid项目中存储开发与生产连接字符串和配置字符串。我通常将它作为应用程序设置存储在web.config或app.config中,但我应该如何在monodroid和monotouch项目中执行此操作?我也希望它能像调试工作室使用* .config文件一样在调试和发布版本之间自动切换配置。在iOS应用程序中,我可以将它们存储在plist中,但我想要一个单声道的跨平台解决方案。
我如何在monodroid或monotouch中做到这一点?
答案 0 :(得分:21)
您应该使用带有#if
声明的静态类。
类似的东西:
public static class Configuration {
#if DEBUG
public const string ConnectionString = "debug string";
#else
public const string ConnectionString = "release string";
#endif
}
使用app.config
的好处是能够在不重新编译的情况下更改文件系统上的这些设置。在移动设备上,在部署文件后编辑文件并不是一种好方法(特别是在iOS上)。因此,只需使用静态类并在需要更改值时重新部署通常会更好。这也适用于所有平台,因为它只是C#代码完成工作。
答案 1 :(得分:5)
https://www.nuget.org/packages/PCLAppConfig有一个以Xamarin为中心的AppSetting阅读器 它对于持续交付非常有用;
按以下方式使用:
1)将nuget包引用添加到pcl和平台项目中。
2)在PCL项目中添加app.config文件,然后在所有平台项目中添加链接文件。对于android,请确保将构建操作设置为“AndroidAsset”,因为UWP将构建操作设置为“Content”。添加设置键/值:<add key="config.text" value="hello from app.settings!" />
3)在你的每个平台项目上初始化ConfigurationManager.AppSettings,就在'Xamarin.Forms.Forms.Init'语句之后,在iOS中的AppDelegate,Android中的MainActivity.cs,UWP / Windows 8.1中的App / WP 8.1:
ConfigurationManager.Initialise(PCLAppConfig.FileSystemStream.PortableStream.Current);
3)阅读您的设置:ConfigurationManager.AppSettings["config.text"];