【问题标题】:VB.Net How do I read/write custom config fileVB.Net 如何读/写自定义配置文件
【发布时间】:2011-06-04 18:08:34
【问题描述】:

环境:.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 读/写代码:

  • 加载client.config文件
  • 选择特定的客户部分
  • 从该部分中的值加载我的客户端变量

有人有好的链接或建议吗?

【问题讨论】:

  • 您找到解决方案了吗?如果没有附加数据库,似乎很明显人们会想要一个带有应用程序的读/写配置文件。

标签: vb.net configuration-files


【解决方案1】:

我写了一篇关于阅读自定义配置部分的博客文章,它允许您编写一个全面的自定义 app.config 部分并从您的代码中访问它。这个过程不是我可以称之为直观的,但我详细介绍了它。一旦您为读取自定义部分设置了类模型,那么引用属性就很容易了。

http://www.endswithsaurus.com/search/label/app.config

【讨论】:

  • 抱歉,这个问题已经修复
【解决方案2】:

这是一个 XY 问题。您正在为 Y 寻求解决方案,而 真正的 问题是 X。AppSettings 应该易于阅读。当您发现自己突然无法阅读时,AppSetting 对您来说毫无用处。

不太确定什么是更好的解决方案,您的问题中没有很好的提示。在我看来,ClickOnce 是让您遇到麻烦的原因。 W 问题。

【讨论】:

  • 很公平.. 好主意。我认为是 ClickOnce 让它变得困难。不过,我想要一个单独的 custom.config 文件,我可以读/写。我之前用过.ini文件,比较简单。
【解决方案3】:

你可以只使用内置设置吗? Here's a tutorial。任何范围为用户的设置都可以使用My.Settings“命名空间”进行编辑。没有读/写 XML,一切都是强类型的。范围为 Application 的任何内容基本上都是只读值。

    'Set value
    My.Settings.FirstName = "Chris"

    'Load value
    Dim F = My.Settings.FirstName

    'Persist values
    My.Settings.Save()

【讨论】:

  • 是的,我可能会重新考虑这一点。用户变量确实是读/写的。可能是最简单的管理方法。想一想……也许我的思维方式停留在旧的 .ini 范式中。
  • 非常感谢@Chris Haas,这是用户范围的优秀教程。但是如果它是应用程序范围呢?我们如何在不重新运行应用程序的情况下更改其值?我的数据集(数据库)使用其连接字符串存储在应用程序范围内......叹息。 :(
猜你喜欢
  • 2016-03-27
  • 1970-01-01
  • 2017-01-27
  • 2021-11-08
  • 1970-01-01
  • 2012-06-18
  • 2012-01-11
相关资源
最近更新 更多