17

我想在 monodroid 项目中存储开发与生产连接字符串和配置字符串。我通常会将其作为应用程序设置存储在 web.config 或 app.config 中,但我应该如何在 monodroid 和 monotouch 项目中执行此操作?我还希望它能够在调试和发布版本之间自动切换配置,就像 Visual Studio 对 *.config 文件所做的那样。在 iOS 应用程序中,我可以将这些存储在 plist 中,但我想要一个单声道的跨平台解决方案。

我将如何在 monodroid 或 monotouch 中做到这一点?

4

2 回答 2

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# 代码在做这项工作。

于 2012-12-04T13:15:41.830 回答
6

在https://www.nuget.org/packages/PCLAppConfig上有一个以 Xamarin 为中心的 AppSetting 阅读器, 它对于持续交付非常有用;

使用如下:

1) 将 nuget 包引用添加到您的 pcl 和平台项目。

2) 在您的 PCL 项目中添加 app.config 文件,然后作为链接文件添加到您的所有平台项目中。对于 android,确保将构建操作设置为“AndroidAsset”,对于 UWP,将构建操作设置为“内容”。添加设置键/值:<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/WP 8.1 中的 App 上:

ConfigurationManager.Initialise(PCLAppConfig.FileSystemStream.PortableStream.Current);

3)阅读您的设置:ConfigurationManager.AppSettings["config.text"];

于 2016-08-15T03:51:58.880 回答