环境:.Net 3.5 VB.net(C#也可以)
我编写了一个多项目 WinForms 应用程序,需要根据用户选择的客户端从配置文件的客户端部分加载几十个变量。还需要加载一些程序变量。到目前为止一切顺利,我将它们放入
app.config
文件中。
在
appSettings
部分我放置了主程序变量。例如
<appSettings>
<add key="LocalServerName" value="PHILDESKTOP" />
我为可选的创建了一个
ClientParameters
部分。例如
<ClientParameters>
<Cust1>
<setting name="ClientName" serializeAs="String">
<value>Customer Name 1</value>
</setting>
这是我的问题:
我使用 Click Once 进行部署,并且很难找到
app.exe.config
文件进行更改
我发现
app.config
文件不可写是有原因的。它在程序启动期间加载到内存中。
我发现我需要管理员才能在部署后添加/更新客户端部分参数。我想用
ListView
之类的东西来编程这种能力。
我认为我编写了糟糕的代码,必须迭代才能找到设置,请参见下文
Dim sectionName As String
sectionName = "ClientParameters/" + ClientCode
Dim section As System.Configuration.ClientSettingsSection = _
DirectCast(System.Configuration.ConfigurationManager.GetSection(sectionName), _
System.Configuration.ClientSettingsSection)
For Each setting As System.Configuration.SettingElement In section.Settings
Dim value As String = setting.Value.ValueXml.InnerText
Dim name As String = setting.Name
If name.ToLower = SettingName.ToLower Then
Return value
End If
Next
所以我想做的就是将
app.config
的客户端部分分开并制作类似 client.config
的东西。
我需要一些很好的示例 XML 读/写代码:
有人有一些好的链接或建议吗?
可以只使用内置设置吗? 这是教程。任何范围为用户的设置都可以使用
My.Settings
“命名空间”进行编辑。无需读/写 XML,一切都是强类型的。任何范围为应用程序的内容基本上都是只读值。
'Set value
My.Settings.FirstName = "Chris"
'Load value
Dim F = My.Settings.FirstName
'Persist values
My.Settings.Save()
这是一个 XY 问题。您正在寻求 Y 的解决方案,而“真正”的问题是 X。AppSettings 应该“易于”阅读。当您发现自己处于突然不再易于阅读的情况时,那么 AppSetting 对您来说就没用了。 不太确定更好的解决方案是什么,您的问题中没有很好的提示。在我看来,ClickOnce 是给你带来麻烦的原因。 W问题。
注意到@Chris Haas 的回答中的链接已损坏。但我没有足够的声誉来评论他的帖子(rip),所以我将添加这个答案以帮助以后可能需要这个答案的人。