質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

9944閲覧

app.configの情報を書き換えたい

NextToYou

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/06/12 09:07

編集2019/06/12 09:13

前提・実現したいこと

app.configの情報を書き換えたい。

発生している問題・エラーメッセージ

値が変わらない

該当のソースコード

c#

1using System.Configuration; 2private void btnCommit_Click(object sender, EventArgs e) 3{ 4 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 5 config.AppSettings.Settings["SVName"].Value = txtServerName.Text; 6 config.Save(); 7 Close(); 8}

app.config

<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <appSettings> <add key="SVName" value="value1" /> </appSettings> </configuration>

試したこと

https://techbox.work/archives-77/

4.設定値の保存
を参考にしています

補足情報(FW/ツールのバージョンなど)

C#
Visual Studio 2015

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BluOxy

2019/06/12 09:10

app.configも見せてください。
guest

回答2

0

デバッグ実行しているなら、app.config は プロジェクトディレクトリの下 \bin\Debug に
xxxx.exe.config と名前を変えて存在してます。

そっちは変わっていると思いますよ。

投稿2019/06/12 09:33

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NextToYou

2019/06/12 09:37

すいません。今、確認したのですが変わっていませんでした
hihijiji

2019/06/12 09:49

Close();にブレークポイントを置いて、止まったら txtServerName.Text の中身を確認し、 その後 テキストエディタでxxx.exe.configを開いて確認してください。
NextToYou

2019/06/13 00:19

すいません、確認したところ変更されていました ただ、気になったのはアプリケーションを再起動しないと変更箇所は反映されないのですか?
hihijiji

2019/06/13 01:08

原則即座に反映されるはずです。 ただしアプリケーション内で別のところがconfigファイルをつかんでいたり、確認のためconfigを開いていたり、セキュリティソフトがつかんでいたりすると、反映が遅れたり例外を吐いたりはあります。
guest

0

ベストアンサー

値が変わらない

変更して保存しているなら変わっているはずです。見ているファイルが違うのかと。

以下のフォルダ、

C:\Users<ユーザー名>\AppData\Local<アプリケーション名>

下のファイルを見ても変わってませんか? 

例えば、アプリケーション名が WindowsFormsClient なら以下の画像の場所にある user.config ファイルを見てください。

イメージ説明

【追加情報】

(1) すべてのユーザーに適用するグローバル構成、(2) ローミング ユーザーに適用する構成、(3) 個々のユーザーに適用する個別構成によって格納場所が違うそうです。

それらのファイルパスは、順番に以下のようにして取得できますので試してみてください。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); Console.WriteLine(config.FilePath); config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming); Console.WriteLine(config.FilePath); config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); Console.WriteLine(config.FilePath);

自分の環境(Windows 10 Pro 64-bit) で .NET 4.6.1 のコンソールアプリ(名前: ConsoleApplication1)で上記のコードを試すと以下のようになります。surfe というのはユーザー名です。

C:\Users\surfe\Documents\Visual Studio 2015\CsProject\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe.Config C:\Users\surfe\AppData\Roaming\ConsoleApplication1\ConsoleApplication1.exe_Url_fsuii2m3i3nue4aqukkcueyeiokxmodm\1.0.0.0\user.config C:\Users\surfe\AppData\Local\ConsoleApplication1\ConsoleApplication1.exe_Url_fsuii2m3i3nue4aqukkcueyeiokxmodm\1.0.0.0\user.config

なお、(1) 以外は実際にファイルが存在しなくても上記のようになります。質問者さんの環境で何故見つからないかは不明ですが、エクスプローラーで探してみてはいかがですか。それでも見つからなければ、書き込めてない(上記 (3) のファイルが生成されていない)、もしくは (1) に書き込まれているということではないかと思います。

イメージ説明

投稿2019/06/12 11:30

編集2019/06/13 01:51
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NextToYou

2019/06/13 00:04 編集

返事遅くなりました 今確認したところ該当フォルダが見当たりませんでした… ※隠しフォルダは見えるようにしてあります
退会済みユーザー

退会済みユーザー

2019/06/13 01:41

追加情報を回答欄に書いておきます。
NextToYou

2019/06/13 01:58

1)の箇所にありました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問