C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 設定ファイル(UserSetting)について


(過去ログ 57 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■32572 / inTopicNo.1)  設定ファイル(UserSetting)について
  
□投稿者/ nyari (8回)-(2009/02/09(Mon) 21:54:18)

分類:[.NET 全般] 

ユーザー設定(UserSetting)について質問があります。

下記のサイトの、「別の設定のセットを使用する」を参考にして
ユーザ設定のファイルを独自に2つ追加してみました。

<http://msdn.microsoft.com/ja-jp/library/aa730869(vs.80).aspx#settingscs_topic5>

ところが、追加した設定のセットの項目を使用した際にエラーが発生してしまいます。
どなたか原因等ご存知の方がいらっしゃいましたらご教授お願いします。

[発生手順]
@プロジェクト作成時に自動で作成されるSettings.settingへは何も項目を登録しない。
Aプロジェクト-新しい項目の追加-設定ファイル-「formASettings.setting」を作成
BAにて追加した設定ファイルへ項目を追加(例:PosX, int, 0)
C実際のソースにて、
  Properties.formASettings.Default.PosX;
 と処理を追加し、設定ファイルに格納されているformASettingsのPosX参照時に例外が発生しています。
 エラーメッセージ「System.Windows.Forms.PropertyStore' に 'formASettings' の定義がありません。」

但し、手順@にてSettings.settingへ項目を追加すると正常に参照が可能です。

やはりデフォルトで作成されるSettings.settingを使用しないと正常に動作しないのでしょうか??

※Settings.settingへ全て設定項目を追加作成しようと思ったのですが、
 画面のサイズや位置など、複数画面にて同一項目名で別の保存値にしたかったため上記のように別の設定をセットするようにしました。

よろしくお願いします。


引用返信 編集キー/
■32586 / inTopicNo.2)  Re[1]: 設定ファイル(UserSetting)について
□投稿者/ nyari (9回)-(2009/02/10(Tue) 11:02:46)
自己レスです。

お騒がせしました。解決しました。

てっきり、コンパイル時に作成された「プロジェクト名.config」の値を参照+書込みしているのかと思っていたのですが
実際はそういうわけではなく、
C:\Documents and Settings\<ユーザー>\Local Settings\Application Data\…
に作成される「user.config」ファイルに作成されたファイルにアクセスしているのですね…
以前、Settingsへ試しに項目を追加して参照・書込み処理を行っていたため、「user.config」ファイルへSettingsの追加項目が残ったままになっていました。
その状態で、「プロジェクト.config」からSettingsの項目が削除されてしまっていたため、起動時の自動Loadが正常に行われていなかったようです。(user.configと「プロジェクト.config」にて整合チェックを行っているようです。)

そこで、「user.config」ファイルを一旦削除してみたところ、正常にLoad・参照が可能になりました。


わかりにくい説明ですが、これから同じことで悩まれるかたがいらっしゃるかもしれませんので
もっとよくご存知の方いらっしゃいましたらご教授お願いしますm(_ _)m
引用返信 編集キー/
■32588 / inTopicNo.3)  Re[1]: 設定ファイル(UserSetting)について
□投稿者/ biac (45回)-(2009/02/10(Tue) 11:07:46)
biac さんの Web サイト
No32572 (nyari さん) に返信
> 下記のサイトの、「別の設定のセットを使用する」を参考にして
> ユーザ設定のファイルを独自に2つ追加してみました。
>
> <http://msdn.microsoft.com/ja-jp/library/aa730869(vs.80).aspx#settingscs_topic5>

そこに書かれている通りに、 C# 2008 Exp. でやってみました。( "SpecialSettings" は "formASettings" に変えて。 )
ちゃんと出来ましたよ。
this.textBox1.Text = Properties.formASettings.Default.SettingForFormA;
とか、動作しました。

> [発生手順]
> @プロジェクト作成時に自動で作成されるSettings.settingへは何も項目を登録しない。
> Aプロジェクト-新しい項目の追加-設定ファイル-「formASettings.setting」を作成
> BAにて追加した設定ファイルへ項目を追加(例:PosX, int, 0)
> C実際のソースにて、
>   Properties.formASettings.Default.PosX;
>  と処理を追加し、設定ファイルに格納されているformASettingsのPosX参照時に例外が発生しています。
>  エラーメッセージ「System.Windows.Forms.PropertyStore' に 'formASettings' の定義がありません。」
>
> 但し、手順@にてSettings.settingへ項目を追加すると正常に参照が可能です。
>
> やはりデフォルトで作成されるSettings.settingを使用しないと正常に動作しないのでしょうか??

…あ、 再現できました。
なにが違うかと思ったら、 手順 (1) ですね。
Settings.settings になにもしない (自動生成されたまま) と、 追加の settings を参照しても設定値が取れませんね。 ( C# 2008 では、 例外は出ませんでした。 )
Settings.settings にダミーでいいから、 なにか設定を書いてあげると、 ちゃんと取れるようになりました。

ということで、 なにかひとつだけでも (実際には使わなくていいから)、Settings.settings に設定を入れておけばよさそうです。


※ この挙動は仕様 …なのかな? どうしてもということであれば Connect でフィードバックを上げてみてもよいかとは思いますが、 それほど発生する状況はなさそうだし、 簡単に回避できるので、 修正してもらえるのは望み薄かと。

※ なお、 Settings.settings に設定が無くても、 app.config の configSections - sectionGroup に、
 <section name="{プロジェクト名}.Properties.Settings" …
 の 1行が書いてあれば大丈夫みたいです。 (厳密に確認していませんが f(^^; )

引用返信 編集キー/
■32590 / inTopicNo.4)  Re[2]: 設定ファイル(UserSetting)について
□投稿者/ biac (46回)-(2009/02/10(Tue) 11:14:22)
biac さんの Web サイト
ぉおっと、 入れ違い f(^^;


No32586 (nyari さん) に返信
> そこで、「user.config」ファイルを一旦削除してみたところ、正常にLoad・参照が可能になりました。

これは良くある話ですね。

開発時は削除で構わないんですが、 バージョンアップしたものを配布するときにそうなると問題です。
ちゃんとファイルバージョンを変えておけば、 大丈夫ですけどね。

引用返信 編集キー/
■32665 / inTopicNo.5)  Re[3]: 設定ファイル(UserSetting)について
□投稿者/ nyari (10回)-(2009/02/12(Thu) 12:33:58)
No32590 (biac さん) に返信

ありがとうございました。

>開発時は削除で構わないんですが、 バージョンアップしたものを配布するときにそうなると問題です。
>ちゃんとファイルバージョンを変えておけば、 大丈夫ですけどね。

そうですね。
いざそのような時になったら、また同じ悩みにぶち当たりそうですが…


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -