我们使用更适合移动设备的库配置文件,因此我们删除了不必要的功能(如整个System.Configuration堆栈,就像Silverlight一样)。
经过多年的.NET开发,我习惯于将配置设置存储在web.config
和app.config
文件中。
答案 0 :(得分:12)
我可能会建议使用共享首选项和编译符号来管理不同的配置。下面是如何使用首选项文件根据编译符号添加或更改键的示例。此外,您可以创建仅适用于特定配置的单独首选项文件。由于这些密钥并非在所有配置上都可用,因此请确保在使用之前始终对它们进行检查。
var prefs = this.GetSharedPreferences("Config File Name", FileCreationMode.Private);
var editor = prefs.Edit();
#if MonoRelease
editor.PutString("MyKey", "My Release Value");
editor.PutString("ReleaseKey", "My Release Value");
#else
editor.PutString("MyKey", "My Debug Value");
editor.PutString("DebugKey", "My Debug Value");
#endif
editor.PutString("CommonKey", "Common Value");
editor.Commit();
答案 1 :(得分:3)
我们当前的项目遇到了完全相同的问题。
我的第一个冲动是将配置放在一个sqlite键值表中,但后来我的内部客户提醒我配置文件的主要原因 - 它应该支持简单的编辑。
因此,我们创建了一个XML文件并将其放在那里:
string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
使用以下属性访问它:
public string this[string key]
{
get
{
var document = XDocument.Load(ConfigurationFilePath);
var values = from n in document.Root.Elements()
where n.Name == key
select n.Value;
if(values.Any())
{
return values.First();
}
return null;
}
set
{
var document = XDocument.Load(ConfigurationFilePath);
var values = from n in document.Root.Elements()
where n.Name == key
select n;
if(values.Any())
{
values.First().Value = value;
}
else
{
document.Root.Add(new XElement(key, value));
}
document.Save(ConfigurationFilePath);
}
}
}
通过单例类我们调用 Configuration ,因此对于.NET开发人员来说,它与使用app.config文件非常相似。可能不是最有效的解决方案,但它可以完成工作。
答案 2 :(得分:1)
有一个以Xamarin为中心的AppSetting读者:https://www.nuget.org/packages/PCLAppConfig 对于持续交付非常有用(所以像octopus这样的部署服务器允许使用存储在cd服务器上的值来改变每个环境的配置文件)
在https://www.nuget.org/packages/PCLAppConfig有一个以Xamarin为中心的AppSetting阅读器 它对于持续交付非常有用;
按以下方式使用:
1)将nuget包引用添加到pcl和平台项目中。
2)在PCL项目中添加app.config文件,然后在所有平台项目中添加链接文件。对于Android,请确保将构建操作设置为“AndroidAsset&#39;”,对于UWP,将构建操作设置为“内容&#39;”。添加设置键/值:<add key="config.text" value="hello from app.settings!" />
3)在每个平台项目上初始化ConfigurationManager.AppSettings,紧跟在&#39; Xamarin.Forms.Forms.Init&#39;之后。声明,iOS上的AppDelegate,Android中的MainActivity.cs,UWP / Windows 8.1 / WP 8.1中的应用程序:
ConfigurationManager.Initialise(PCLAppConfig.FileSystemStream.PortableStream.Current);
3)阅读您的设置:ConfigurationManager.AppSettings["config.text"];
答案 3 :(得分:0)
ITNOA
也许PCLAppConfig可以帮助您在Xamarin.Forms PCL项目或其他Xamarin项目中创建和阅读app.config
。
对于不同构建模式(如发布和调试)中的不同配置,您可以在app.config
上使用Configuration Transform。