在UWP中外部化配置(密码,connectionString)

时间:2015-12-17 14:26:04

标签: config windows-10 uwp

我正在寻找一种在UWP应用程序中外化一些配置的方法。 应用程序需要连接到Alfresco服务器。我希望用户能够配置服务器的登录名,密码和URL。

我尝试将xml文件放在我的资产文件中,但是当安装该应用程序时,它位于C:\ Program Files \ WindowsApps中,用户无法轻松访问它。

有没有办法像app.config文件一样来实现这个目标?

2 个答案:

答案 0 :(得分:0)

可能使用已知的StorageFolder,如:

KnownFolders.DocumentsLibrary

如果您为特定扩展程序(如.config)的清单(Package.appxmanifest>声明>文件类型关联)添加文件类型关联,您的应用程序可以在文档文件夹中读取此类型的文件。用户也可以手动编辑这些文件。

请注意您在资产中(包中)中包含的所有文件都是只读文件。

如果您的用户有经验,则可以采用另一种方式:他们可以编辑本地存储中的文件(无需在清单中建立文件关联)。在这种情况下,您使用以下StorageFolder:

ApplicationData.Current.LocalFolder

用户可以将文件编辑到特定的目录中:

C:\Users\<UserName>\AppData\Local\Packages\<AppId>\AppData

答案 1 :(得分:0)

我遇到了一个非常类似的问题,我需要使用未被源代码管理跟踪的外部文件。有两种方法可以从资源或配置文件中访问数据。

一种是打开并解析配置文件。如果文件sample.txt包含构建操作 Content复制到输出目录并不重要),我们可以用

var uri = new System.Uri("ms-appx:///sample.txt");
var sampleFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);

var packageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
var sampleFile = await packageFolder.GetFileAsync("sample.txt");

接着是

var contents = await Windows.Storage.FileIO.ReadTextAsync(sampleFile);

或者,我们可以使用资源。向项目添加一个名为resourcesFile.resw的新资源项。要访问数据,请使用:

var resources = new Windows.ApplicationModel.Resources.ResourceLoader("resourcesFile");
var token = resources.GetString("secret");

我在博文Custom resource files in UWP

中写了更详细的答案