我有一個引用另一個程序集(類庫)的Windows服務。在這個其他程序集中,我使用應用程序設置來存儲一些值。當我將所有需要的文件複製到服務器時,我可以在AssemblyName.dll.config文件中看到這些設置。更改.NET應用程序設置而不重新編譯
然而,當我在這個配置文件更改設置並重新啓動該服務不會有任何作用。即使我卸載/重新安裝服務,它仍會在運行時返回舊值。
配置文件:
<setting name="RecordLimit" serializeAs="String">
<value>300</value>
</setting>
代碼:
if (recordCount > Settings.Default.RecordLimit) //always 300
所以,即使我在配置文件中的值更改爲400,並重新啓動甚至重新安裝服務,該值始終是300製作我認爲這個值存儲在編譯後的代碼中並從中返回。
我在做什麼錯了,是否有可能對應用程序設置的更改總是需要重新編譯並重新安裝(我明白,我可以使用Save()
方法來更改代碼的設置,但這是一個Windows服務,所以使用此方法doesn似乎沒有道理)?
如果存儲在配置文件中這些設置沒有任何效果和設置存儲在編譯後的代碼,我可以安全地刪除這些配置文件?
如果這些設置可以不重新編譯我有什麼其他選擇保存設置,我可以更改,恕不recompling改變?
編輯:我剛剛刪除了AssemblyName.dll.config文件和代碼返回300,所以配置文件顯然是不相關的。
這是一個Windows服務,以便建立一個能與Windows服務進行通信,將需要Windows服務來揭露一些類型的公共界面的UI。但即使這是可能的,經歷所有麻煩以更改簡單設置也沒有多大意義......此外,此代碼是由服務可執行文件引用的程序集執行的,而不是來自服務可執行文件本身。 – 2012-07-05 21:28:10
對不起,我誤解了你,或者我沒有解釋我的意思是什麼。我的意思是服務運行的appname.exe具有自己的配置,我認爲(我可能是錯的)appname.exe.config可能會通過配置設置影響其任何引用的DLL設置。我並不想要一個用戶界面來操作,只需在appname.exe.config和服務重新啓動的記事本。對不起,如果我侮辱你的智力。 – 2012-07-05 21:32:34
啊我看到了,你提到它是作爲可執行文件運行的DLL – 2012-07-05 21:34:39