我開發了Windows服務。它使用一個配置文件MyService.exe.config,看起來像這樣(只用一個簡單的設置,Prop1
):編譯後手動添加到app.config中的讀取設置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyNamespace.MyService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<MyNamespace.MyService.Properties.Settings>
<setting name="Prop1" serializeAs="String">
<value>Foo</value>
</setting>
</MyNamespace.MyService.Properties.Settings>
</applicationSettings>
</configuration>
當我部署到客戶的生產環境,我需要手動添加上更多的設置配置文件,例如Prop2
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyNamespace.MyService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<MyNamespace.MyService.Properties.Settings>
<setting name="Prop1" serializeAs="String">
<value>Foo</value>
</setting>
<setting name="Prop2" serializeAs="String">
<value>Bar</value>
</setting>
</MyNamespace.MyService.Properties.Settings>
</applicationSettings>
</configuration>
現在,如果我開始這個代碼行的服務:
log.Debug(Properties.Settings.Default["Prop1"].ToString());
log.Debug(Properties.Settings.Default["Prop2"].ToString());
產生以下輸出:
Foo
Impossibile trovare la proprietà di impostazione 'Prop2'.
in System.Configuration.SettingsBase.GetPropertyValueByName(String propertyName)
in System.Configuration.SettingsBase.get_Item(String propertyName)
in System.Configuration.ApplicationSettingsBase.GetPropertyValue(String propertyName)
in System.Configuration.ApplicationSettingsBase.get_Item(String propertyName)
in ...
意大利語中的錯誤的意思是「無法找到設置屬性'Prop2'」。
如何在編譯後讀取添加到app.config的設置?
我想知道當應用程序已經部署時是否不可能向app.config添加新的設置,因爲每個設置都必須編譯並在Properties.Settings.Default
中靜態提供。那麼爲了達到我想要的效果我應該使用我管理的設置文件,比如重新發明輪子?
你改變了什麼配置?根目錄或bin文件夾中的一個? – xszaboj
我不知道你的意思。我更改了MyService.exe.config,它位於與MyService.exe相同的文件夾中。 – bluish
這應該是比......你改變配置後重新啓動服務嗎? – xszaboj