【问题标题】:Autocreate user.config file in deployed app在部署的应用程序中自动创建 user.config 文件
【发布时间】:2016-06-13 15:22:08
【问题描述】:

我正在为 Outlook 编写一个 VB.Net 插件(因此它的 VBA.NET)。这是对标准日历项目屏幕的补充。一切都很顺利。但我有第三种形式,有两个文本框,显示running assembly 的文件路径和user.config 路径的两个按钮"Open in Explorer..."

但是: user.config 文件一开始不存在。当我在第二种形式中更改设置并第一次保存时,会创建父目录及其本身。

我尝试使用My.Settings.save() 将用户设置保存在我的主表单的form_Initialization 方法上,但它不会生成奇怪的user.config 文件。这应该和我在第二种形式上所做的一样。

你能帮帮我吗?我需要 user.config 文件在第三个表单的开头。

My Forms (Image)

生成user.config 文件的代码:

Private Sub BtnSaveSettings_Click(sender As Object, e As EventArgs)
        If (CmbxDebugOption.Text <> "") And (CmbxOnBootActive.Text <> "") Then

            ' save active start option
            If CmbxOnBootActive.SelectedItem.ToString.ToLower = "ja" Then
                My.Settings.ActiveOnStart = True
            ElseIf CmbxOnBootActive.SelectedItem.ToString.ToLower = "nein" Then
                My.Settings.ActiveOnStart = False
            End If

            ' save debug option
            If CmbxDebugOption.SelectedItem.ToString.ToLower = "deaktiviert" Then
                My.Settings.AlwaysDebug = False
                My.Settings.OnetimeDebug = False
            ElseIf CmbxDebugOption.SelectedItem.ToString.ToLower = "nur einmal" Then
                My.Settings.AlwaysDebug = False
                My.Settings.OnetimeDebug = True
            ElseIf CmbxDebugOption.SelectedItem.ToString.ToLower = "immer aktiv" Then
                My.Settings.AlwaysDebug = True
                My.Settings.OnetimeDebug = False
            End If
            My.Settings.Save()
        End If

        ' Close Form
        Me.Close()
    End Sub

【问题讨论】:

    标签: vb.net clickonce my.settings user.config autocreate


    【解决方案1】:

    我为自己找到了解决方案。我在My.Settings 中创建了一个名为FirstRunAfterInstall 的变量,我在主窗体的第一次运行时将其设置为False。我还将其他变量设置为默认值,然后保存整个混乱。然后该文件将被写入您的硬盘。

    看起来像这样:

        If My.Settings.FirstRunAfterInstall Then
            My.Settings.FirstRunAfterInstall = False
            My.Settings.ActiveOnStart = False
            My.Settings.OnetimeDebug = False
            My.Settings.AlwaysDebug = False
            My.Settings.Save()
        End If
    

    My.Settings.Save()是最重要的部分!它刷新一些缓存。如果您忘记了这部分,更改将不会写入文件中。

    来自德国的问候,

    克里斯蒂安·哈斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多