从米格尔奥德伊卡萨 :
我们使用库轮廓,更适合用于移动设备,所以我们去掉那些没有必要的(如整个System.Configuration堆,就像Silverlight那样)的特点。
经过多年的.NET开发的,我习惯了在存储配置设置web.config
和app.config
的文件。
- 当使用单声道为Android,我应该在哪里把我的配置设置?
- 如果它的事项,我想存储不同的配置设置不同的构建配置为好。
从米格尔奥德伊卡萨 :
我们使用库轮廓,更适合用于移动设备,所以我们去掉那些没有必要的(如整个System.Configuration堆,就像Silverlight那样)的特点。
经过多年的.NET开发的,我习惯了在存储配置设置web.config
和app.config
的文件。
我可能会建议使用共享偏好和编译符号来管理不同的配置。 下面是你如何使用首选项文件来添加或更改基础上编译符号键的例子。 此外,你可以创建一个单独的喜好文件仅适用于特定配置。 由于这些键并非适用于所有配置,确保在使用之前要进行为他们检查。
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();
我们有正好在我们当前的项目同样的问题。 我的第一个冲动就是把配置在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);
}
}
}
通过一个单独的类我们称之为配置 ,使.NET开发人员是非常类似于使用的app.config文件。 可能不是最有效的解决方案,但它能够完成任务。
there's a Xamarin centric AppSetting reader: https://www.nuget.org/packages/PCLAppConfig pretty useful for continuous delivery (so a deployment server such as octopus allows to alter your config file for each environment with values stored on the cd server)
there's a Xamarin centric AppSetting reader available at https://www.nuget.org/packages/PCLAppConfig it is pretty useful for continuous delivery;
use as per below:
1) Add the nuget package reference to your pcl and platforms projects.
2) Add a app.config file on your PCL project, then as a linked file on all your platform projects. For android, make sure to set the build action to 'AndroidAsset', for UWP set the build action to 'Content'. Add you settings keys/values: <add key="config.text" value="hello from app.settings!" />
3) Initialize the ConfigurationManager.AppSettings on each of your platform project, just after the 'Xamarin.Forms.Forms.Init' statement, that's on AppDelegate in iOS, MainActivity.cs in Android, App in UWP/Windows 8.1/WP 8.1:
ConfigurationManager.Initialise(PCLAppConfig.FileSystemStream.PortableStream.Current);
3) Read your settings : ConfigurationManager.AppSettings["config.text"];
ITNOA
也许PCLAppConfig是帮助您创建和读取app.config
在Xamarin.Forms PCL项目或其他项目Xamarin。
对于不同的构建模式不同的配置,例如发布和调试,您可以使用配置变换的app.config
。