0

この質問は、読み込みが行われ、コードにConfigurationManager.AppSettings["MySettingHere"]..

..しかし、私の WinForms アプリはこのメソッドを使用しません。代わりに、プロジェクト設定ルートを使用します (つまりProperties.Settings.Default.MySettingName 、値を取得するために呼び出し、プロジェクトのプロパティを取得し、[設定] タブを選択して設定を編集します) ファイルとして App.config がプロジェクト/ソリューションのルートに存在します。しかし、Settings.settings と Settings.Designer.cs もあり、これらが使用され、データを取得するコンパイル済みコードに変換されると思います

基本的に、Visual Studio は、設定の読み込み/保存/値の取得プロセスの周りにタイプ セーフなラッパーを提供します。私がやりたいのは、デフォルトの MyExeName.config ファイルを取得するのではなく、読み込む設定ファイルのパスを提供することです。アプリケーションディレクトリから

4

2 に答える 2

0

デフォルトの構成をロードするのではなく、目的の場所からカスタム構成ファイルをロードしたい場合は、これを試してください。

: 1 つのプロジェクトに複数の App.config を含めることはできません。アプリは、既定でファイル App.config である YourExcecutable.exe.config という名前の構成ファイルを使用します。ただし、複数の構成ファイルを用意して、必要に応じてコードを使用して読み込むことができます。しかし、それらすべてを同時にロードし続けることはできません。必要なときにのみファイルを切り替えることができます。

System.Configuration.ConfigurationFileMap fileMap = new ConfigurationFileMap("path to new file"); 
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);

OR

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"Config file path");
于 2013-10-01T06:30:58.550 に答える
0

私がこれまでに見つけた唯一の解決策は、むしろ貧しい人の解決策です..

プロジェクトのプロパティ内で [設定] タブを使用すると、ソリューションは、プロジェクトの [プロパティ] ノードの下に Settings.Settings、Settings.Designer.cs を取得し、場合によってはプロジェクトのルートに app.config も取得します。これらのファイルへの編集は、VS 自体によって直接コピー/更新/同期されているようです。また、これらの設定へのデータ型アクセスを保証するために、バックグラウンドでいくつかのコードを維持します。Configmanager.AppSetings["propertyName"] に基づいている可能性が高いですが、VS を使用してプロパティを設定し、それが int (または何でも) であることを伝えると、VS は名前空間/クラス/メンバー チェーンを公開するラッパー コードを記述できます。 ProjectNamespace.Properties.Settings.Default.PROPERTYNAME

一見、このコードは、THE_EXE_NAME.exe.config という名前の設定ファイルに依存しており、EXE 自体と一緒に保存されています.. ..だから、使用したい設定ファイルを取得し、ディスクに保存されている設定ファイルの上にコピーします。 、新しいファイルから使用したい値をリロードする ProjectNamespace.Properties.Settings.Default.Reload() を呼び出します。これが理想的ではない理由は数え切れないほど考えられますが、これまでに思いついたのはそれだけです

于 2013-10-02T08:57:38.113 に答える