2016-01-15 9 views
16

APIキーをソースコントロールにチェックインせずに設定ファイルに保存し、UWPアプリでデータを読みたいと思います。UniversalManager(UWP)アプリケーションのConfigurationManagerとAppSetting

一般的な解決策は、そのような.configファイル内のキー(例えばapp.configまたはweb.configなど)とアクセスも格納することです:

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

私はユニバーサルのWindows(UWP)アプリに取り組んでいるのとすることができますConfigurationManagerを保持するSystem.Configuration名前空間にアクセスしないでください。

UWPアプリでAppSettingsにアクセスするにはどうすればよいですか? また、UWPアプリケーションのコンフィギュレーションデータにアクセスする最も良い方法は何ですか?

+0

で、より詳細な答えを書いた:データ、使用にアクセスするには? – Robert

+1

いいえ、https://gyazo.com/b1a6d73eb324397be66b4d38b68dd964やオブジェクトブラウザでは利用できません –

答えて

11

私の具体的な使用例では、ソースコントロールによって追跡されない外部ファイルを使用する必要がありました。リソースファイルまたは構成ファイルからデータにアクセスするには、2つの方法があります。

1つは、設定ファイルを開いて解析することです。 ビルドアクションContent(出力ディレクトリにコピーは関係ありません)を使用してファイルsample.txtを考えると、我々は

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

または

var contents = await Windows.Storage.FileIO.ReadTextAsync(sampleFile); 
続い
var packageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; 
var sampleFile = await packageFolder.GetFileAsync("sample.txt"); 

でそれを読むことができます

リソースresourcesFile.reswという新しいリソース項目をプロジェクトに追加します。

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

は、私はあなたが参照としてSystem.Configurationを追加することができますブログの記事Custom resource files in UWP

+0

これはビルドアクションを設定するためにプロジェクトにファイルを追加する必要があるため、ソース管理からの要件をチェックせずに**解決する方法はありません。ソースから除外するのはかなり面倒ですコントロール。 –

+0

@GabrielRainhaこれは実際の質問の要件ではありません。慎重に読むと、OPはapp.configファイルを使用しているときに彼がすでに*これを行う方法を持っていることを示していることがわかります。 - したがって、彼は単にapp.configファイルの代わりに何を使用するかを知る必要があります。 - それは彼が私たちと彼の方法を共有していないことは残念です。 – BrainSlugs83

+0

アプリケーションのルートにある '.json'ファイルで例外が見つからないという問題がありました。そこで、私はそこに記載されているものに従っています:[Universal Windowsプラットフォームではファイルが見つかりませんでした](https:// stackoverflow。 com/questions/38776253/file-not-found-exception-in-universal-windows-platform?rq = 1) –

0

設定ファイルを作成する必要はありません。 UWPにはローカル設定/構成を保存するためのソリューションが組み込まれています。このチュートリアルを確認してください。

ApplicationDataContainerを使用して

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

、あなたがキーで値を取得することができます:

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

ありがとう@stratever。これは、実行時に作成されたデータを読みたい場合に有効です。私はアプリケーションにバンドルされているデータを使用する必要がありますが(ソース管理にはチェックされていません) –

+1

@stratever - これはアプリケーションの設定データ用ではありません。ユーザーの好みのようなものです。 – kdazzle

1

私は、あなたが「APIKEY」と呼ぶことは、静的な鍵であることを考えていますAPIを使用するとアクセストークンを生成できます。そして、あなたがから簡単にその値にアクセス

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

:このような場合は、多分これを達成するための最良の方法は、それの内側にその値を持つソースコントロールの外にこのような何かを静的クラスを作成することですコード:あなたの代わりにプレーンテキストファイル内の値を格納する場合

var myApiKey = MyCredentials.MyApiKey; 

あなたはStorageFileFileIOクラスを使用して手動で読み/それを記述する必要があります。

「APIKEYは」ダイナミックアクセストークンを意味している場合代わりに、その後、最良の解決策はstrateverが言うようにApplicationDataContainerを使用しています。

+1

@garoladに感謝します。 FileIO'クラスである。私はこのクラスを使用する答えを投稿しました。 –

関連する問題