teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/06/03 07:21

投稿

退会済みユーザー
answer CHANGED
@@ -10,4 +10,45 @@
10
10
  Visual Studio でアプリケーション開発の際、自動的に App.config というファイルが生成され、それに接続文字列などの情報が保存でき、アプリを実行するときに使われる構成ファイルは App.config とは別に生成され、別の場所に保存されるので注意してください。詳しくは以下の記事を見てください。
11
11
 
12
12
  構成ファイルの保存場所
13
- [http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx](http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx)
13
+ [http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx](http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx)
14
+
15
+ **【追記】**
16
+
17
+ 下のコメント欄の 2021/06/03 15:48 の私のコメントで「上のコメントのレスは回答欄に追記します」と書いて件です。
18
+
19
+ > settings.settingsを編集するとapp.configが生成されるとあるんですが、これはどこに生成されてるんでしょうか…
20
+
21
+ そのあたりは先に紹介した記事「構成ファイルの保存場所」に書いたはずですが・・・
22
+
23
+ App.config は最初からプロジェクトに含まれているはずです。そこで例えば以下のように settings.settings を編集すると、
24
+
25
+ ![イメージ説明](8876c6f306ee95931923d7877b27dc69.jpeg)
26
+
27
+ その結果は以下のように App.config に反映されます。
28
+
29
+ ![イメージ説明](9e0f4a0d43bb37498fc3b728dd5d560c.jpeg)
30
+
31
+ アプリをビルドする際、生成される .exe ファイルと同じ場所に、App.config の内容をそのままコピーして <アプリケーション名>.exe.config という名前のファイルが作られます。実際にアプリが使うのはそれです。
32
+
33
+ settings.settings でスコープがユーザーになっている項目はプログラムで書き換えることができます。(ただし、スコープがアプリケーションとなっている項目はそのプロパティが読み取り専用なのでダメです。Settings.Designer.cs を見てください)
34
+
35
+ 例えば以下のように書き換えて保存すると、
36
+
37
+ ```
38
+ var secA = Properties.Settings.Default.SectionA;
39
+ secA.RemoveAt(1);
40
+ secA.Add("key2:new data");
41
+ Properties.Settings.Default.Save();
42
+ ```
43
+
44
+ その結果は C:\Users\<ユーザー名>\AppData\Local\<アプリケーション名> フォルダ下に user.config という名前で保存されます。
45
+
46
+ ![イメージ説明](0e75b3815fcf25f1a043fe897ed7db46.jpeg)
47
+
48
+ > このとき、「名前」部分を文字列で指定することは可能でしょうか?
49
+
50
+ それはできないと思います。「名前」部分は Settings.Designer.cs に定義されているプロパティなので、それを何とかする手段を質問者さんが見つけることができれば話は違うかもしれませんが・・・
51
+
52
+ 上に書いたように、中身を書き換えることはできるので、それで対応する他なさそうです。
53
+
54
+ ご自分でいろいろやってみればすぐわかると思いますのでやってみてください。