2011-01-20 96 views
3

我有一個包含兩個項目的解決方案。一個項目是一個Windows服務,它包含幾個用於執行各種功能的類。另一個項目是Windows窗體應用程序,用於執行服務根據需要完成的各種測試和執行任務。例如,服務將在特定的時間間隔執行幾項任務,但如果您想在時間間隔過去之前執行其中一項任務,則可以加載Windows窗體應用程序並立即執行其中一項任務。 Windows窗體應用程序(從這裏稱爲測試人員)引用Windows服務(從這裏稱爲服務)項目。當測試器加載時,它將從服務創建一個類的實例。每當按下按鈕執行任務時,它都會引用已創建的實例並調用該類的各種方法。該服務已使用應用程序設置進行配置,因此具有app.config。可以使用[ProjectName] .Properties.Settings.Default。[SettingName]訪問配置設置。當測試儀的配置設置在其自己的app.config(或發佈後的exe.config)上更改時,設置會刷新而不會出現問題。如果測試儀關閉,配置被修改,然後重新打開,新的設置將被填充。如果在設置上調用重新加載方法,則刷新配置時不會出現問題。該服務以相同的方式執行。配置設置可以被更新而沒有問題。跨多個項目的.NET App.Config問題

問題是,如果需要對服務進行配置更改,則當測試人員調用服務方法時,配置不會採用新設置。無論項目是用什麼設置,都將被使用。我無法讓測試人員認識到服務的app.config/exe.config已更改,並且應該重新加載並使用新配置,而不是在Visual Studio中構建項目時使用的任何配置。也許我對這個主題的教育不夠,但是在我看來,app.config在構建時會彙集到由Service創建的.exe文件中。

我已經嘗試封裝服務的Reload方法並調用它,並且它似乎沒有區別。

我有一個示例項目,執行如上所述在一個非常基本的級別。理想的目標是能夠即時修改exe.config文件或文件,並使Service和Tester都能毫無問題地接受它們。如果你想從編碼的角度看到我的意思,可以在這裏找到一個示例項目:example solution

任何幫助將不勝感激。謝謝你的時間。

更新

我設法找到解決的辦法,但我仍然好奇,如果有一個更好的辦法。通過使用兩個項目之間共享的app.config和使用配置管理器而不是應用程序設置,一切都按預期工作。如果可能,我更願意使用應用程序設置;但是它會使用共享的app.config並且配置管理器指向該app.config。

回答

0
+0

我試着玩弄ConfigurationManager和上面提到的功能,但它似乎沒有按照我需要的方式工作。我沒有使用配置管理器來獲取我的配置值,我正在使用應用程序設置,因此命名空間本身的using語句位於類的頂部,並且配置選項可以像下面這樣訪問:[ProjectName] .Properties.Settings。默認[SettingName] 謝謝你的迴應。你有任何其他的想法,或者我有可能誤解你的迴應嗎? – ctchristmas 2011-01-21 17:30:35

0

找到了解決辦法。必須將app.config添加到解決方案中,如上面在我的更新中所述。一旦這樣鏈接,您可以將設置文件添加到項目中,並將設置/配置添加到項目中,並將它們添加到解決方案設置文件中。這將隨着構建而移動並解決我遇到的問題。