В 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"];