В monodroid или monotouch, что я должен использовать вместо app.config для строк конфигурации?

Я хочу хранить строки разработки и строки создания и строки конфигурации в проекте monodroid. Обычно я сохраняю его как настройки приложения в файле web.config или app.config, но как мне это сделать в проектах monodroid и monotouch? Мне также хотелось бы, чтобы он автоматически переключал конфигурации между отладочными и релизными строками так же, как визуальная студия с файлами *.config. В приложении iOS я мог бы хранить их в plist, но я хотел бы использовать кросс-платформенное решение в моно.

Как я могу сделать это в monodroid или monotouch?

Ответ 1

Вы должны просто использовать статический класс с объявлениями #if.

Что-то вроде:

public static class Configuration {
#if DEBUG
    public const string ConnectionString = "debug string";
#else
    public const string ConnectionString = "release string";
#endif
}

Преимущество использования app.config заключается в возможности изменять эти настройки в файловой системе без перекомпиляции. На мобильном телефоне нет хорошего способа (особенно в iOS) для редактирования файла после его развертывания. Поэтому обычно лучше просто использовать статический класс и повторно развертывать, когда вам нужно изменить значения. Это также будет работать на всех платформах, потому что это всего лишь код С#, выполняющий эту работу.

Ответ 2

есть встроенный в Xamarin считыватель AppSetting на https://www.nuget.org/packages/PCLAppConfig это очень полезно для непрерывной доставки;

используйте ниже:

1) Добавьте ссылку пакета nuget в ваши проекты pcl и платформ.

2) Добавьте файл app.config в свой проект PCL, а затем в виде связанного файла во всех ваших проектах платформы. Для андроида убедитесь, что действие сборки установлено на "AndroidAsset", для UWP установите действие сборки в "Содержимое". Добавьте ключи/значения настроек: <add key="config.text" value="hello from app.settings!" />

3) Инициализируйте ConfigurationManager.AppSettings в каждом из ваших проектов платформы сразу после инструкции Xamarin.Forms.Forms.Init, которая находится на AppDelegate в iOS, MainActivity.cs в Android, приложение в UWP/Windows 8.1/WP 8.1:

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

3) Прочитайте свои настройки: ConfigurationManager.AppSettings["config.text"];