2012-03-01 3 views
2

現在、私はApp1とApp2の2つのアプリケーションを持っています。他のプロジェクトのapp.configファイルにアクセスできない

App1にはapp.configファイルがあり、ここには文字列InstallDirが格納されています。私はProperties.Settings.Default.InstallDirを使ってApp1 fineからこれにアクセスできます。これはうまくいくが、私はApp2からこれにアクセスできる必要がある。

私はVSのアクセシビリティをInternalからPublicに変更しました。 App2からアクセスしようとすると、App1への参照を追加し、using App1;App1.Properties.Settings.Default.InstallDirを使用しますが、何も返されません。例外をスローしません。空の文字列を返します。

+0

コメントとして、この情報を別の設定ファイルやデータベースのようにアクセスすることができます。あなたが使っている設定の種類は、通常app.configの設定よりも揮発性が高いと感じます。 – dash

答えて

3

すべてのアプリケーションには、実行時に構成を読み取る独自のapp.configファイルがあります。 App2のApp1を参照して、App1.Properties.Settings.Default.InstallDir変数にアクセスできますが、App2のapp.configに対応する値がないため、実行時にnullを返します。

+0

ありがとうございます。私は少し混乱しています。だから私はApp2の設定ファイルに同じ値を持たずに、App2のApp1の値にアクセスできません。 –

+0

@BaliC、そうです、それは私が言っていることです。 –

2

あなたには、いくつかの(私は推測)は、2つのプロジェクト間設定オプションを共有する最初のもの(のはstaticクラスを言わせて)に設定のためのラッパーを作成し、2番目のプロジェクトから、それを使うにアクセスしたい場合。

+0

ありがとうございます。私は、InstallDirの価値を維持する必要があります。なぜなら、私は設定ファイルを使用する理由です。静的クラスの変数がアプリの終了後に何とか保持されない限り –

+0

@Bali:APPを「閉鎖」する方法は?あなたはEXEプロジェクトを参照していますか? – Tigran

+0

ええ、私はexeプロジェクトを参照していますので、アプリケーションを閉じたときに、設定ファイルに保存できるように、値を保存する必要があります。そのため、開くと再びアクセスできます。 –

0

あなただけでもあなたは、通常のファイルとしてそれを読んだりConfigurationManager.OpenMappedExeConfigurationを使用し、それは魔法のようにあなたのアクセス権を与えないだろう参照としてApp2のを追加し、別の設定ファイルを読み込む切り替えるために独自のコードを書くことができます。http://msdn.microsoft.com/en-us/library/ms134269.aspx

0

明示的にロードする必要がある別のファイルから値を読み取る場合、アプリケーションには1つの構成ファイルしかロードされません。

Using ConfigurationManager to load config from an arbitrary locationをご覧ください。

+0

現在、私のapp.configはexeでコンパイルされているので、別のファイルとしてコンパイルされていないので、別のファイルになるまでこれを使用できないと思いますか? –

関連する問題