6

別のアセンブリ(クラスライブラリ)を参照しているWindowsサービスがあります。この他のアセンブリでは、アプリケーション設定を使用していくつかの値を保存しました。必要なすべてのファイルをサーバーにコピーすると、これらの設定がAssemblyName.dll.configファイルに表示されます。

ただし、この構成ファイルの設定を変更してサービスを再起動しても、変更しても効果はありません。サービスをアンインストール/再インストールしても、実行時に古い値が返されます。

構成ファイル:

   <setting name="RecordLimit" serializeAs="String">
     <value>300</value>
   </setting>

コード:

if (recordCount > Settings.Default.RecordLimit) //always 300

したがって、構成ファイルの値を400に変更してサービスを再起動または再インストールしても、値は常に300であるため、この値はコンパイルされたコードに格納され、コンパイルされたコードから返されると思います。

私が間違っていることと、アプリケーション設定の変更には常に再コンパイルと再インストールが必要になる可能性があります(Save()コードから設定を変更する方法を使用できることは理解していますが、これはWindowsサービスであるため、この方法を使用してもうまくいかないようです検出)?

構成ファイルに保存されているこれらの設定が効果がなく、設定がコンパイルされたコードに保存されている場合、これらの構成ファイルを安全に削除できますか?

再コンパイルせずにこれらの設定を変更できない場合、再コンパイルせずに変更できる設定を保存する必要がある他のオプションは何ですか?

編集:AssemblyName.dll.configファイルを削除したところ、コードから300が返されたため、構成ファイルは明らかに無関係です。

4

3 に答える 3

2

As far as I know how config files work, it has to be at the EXE level: appname.exe.config for services/apps and web.config for web sites/services.

See question/answers at Can someone provide a quick App.config/Web.config tutorial? for reference.

于 2012-07-05T21:29:57.690 に答える
0

DLLを参照するexeは、独自の構成の構成設定を操作できますか?

テストとして、設定をexe.configに追加してみてください。

于 2012-07-05T21:24:17.643 に答える
0

実際に使用されている .config.dll ファイルがC:\Users\Username\AppData (Win7 の場合) のどこかにあるのではないかと思います。そのフォルダーで AssemblyName.dll を検索してみてください。

于 2012-07-05T21:28:49.657 に答える