c# uwp portable-class-library

c# - ConfigurationManager y AppSettings en aplicación universal(UWP)



portable-class-library (3)

Me gustaría almacenar una clave de API en un archivo de configuración sin registrarlo en el control de fuente, y leer los datos en mi aplicación UWP.

Una solución común es almacenar la clave en el archivo .config (como app.config o web.config ) y acceder a él de esta forma:

var apiKey = ConfigurationManager.AppSettings.Get("apiKey");

Estoy trabajando en una aplicación de Windows universal (UWP) y no puedo acceder al espacio de nombres de ConfigurationManager que contiene el Administrador de ConfigurationManager .

¿Cómo puedo acceder a AppSettings en la aplicación UWP? Alternativamente, ¿cuál es la mejor manera de acceder a los datos de configuración en una aplicación UWP?


En mi caso de uso específico, necesitaba usar un archivo externo que el control de origen no rastrea. Hay dos formas de acceder a los datos desde los archivos de recursos o de configuración.

Una es abrir y analizar un archivo de configuración. Dado un archivo sample.txt con Build Action Content (no importa copiar en el directorio de salida ), podemos leerlo con

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

o

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

seguido por

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

Alternativamente, podemos usar los recursos . Agregue un nuevo elemento de recursos al proyecto, denominado resourcesFile.resw . Para acceder a los datos, utilice:

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

Escribí una respuesta más detallada en una entrada de blog Archivos de recursos personalizados en UWP


Estoy pensando que lo que llamas "ApiKey" es la clave estática que una API te da para generar un token de acceso. Si este es el caso, tal vez la mejor manera de lograrlo es crear una clase estática fuera del control de origen con ese valor dentro de él, algo como esto:

public static class MyCredentials { public static string MyApiKey = "apiKey"; }

Luego accedes fácilmente a ese valor desde tu código:

var myApiKey = MyCredentials.MyApiKey;

Si desea almacenar valores en un archivo de texto simple, tendrá que escribirlo / leerlo manualmente usando las clases StorageFile y FileIO .

En cambio, si "ApiKey" significa el token de acceso dinámico, entonces la mejor solución es usar ApplicationDataContainer como se indica en cualquier otro lugar.


No es necesario crear un archivo de configuración. UWP tiene una solución integrada para almacenar configuraciones / configuraciones locales. Por favor, consulte este tutorial:

https://msdn.microsoft.com/en-us/library/windows/apps/mt299098.aspx

Usando ApplicationDataContainer, podrá obtener un valor por clave:

Object value = localSettings.Values["exampleSetting"];