【问题标题】:problem with windows forms application settingsWindows窗体应用程序设置问题
【发布时间】:2010-05-21 16:03:33
【问题描述】:

我使用 Visual Studio 为 Windows 窗体应用程序中的应用程序设置生成了一个类。调试时,应用程序设置不会填充值。为什么没有值?

这是生成的代码:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Unidata_Client.Properties {


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default {
            get {
                return defaultInstance;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("blah")]
        public string UnidataUsername {
            get {
                return ((string)(this["UnidataUsername"]));
            }
            set {
                this["UnidataUsername"] = value;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("blah")]
        public string UnidataPassword {
            get {
                return ((string)(this["UnidataPassword"]));
            }
            set {
                this["UnidataPassword"] = value;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("blah")]
        public string UnidataHost {
            get {
                return ((string)(this["UnidataHost"]));
            }
            set {
                this["UnidataHost"] = value;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("123")]
        public string UnidataPort {
            get {
                return ((string)(this["UnidataPort"]));
            }
            set {
                this["UnidataPort"] = value;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("blah")]
        public string UnidataAccount {
            get {
                return ((string)(this["UnidataAccount"]));
            }
            set {
                this["UnidataAccount"] = value;
            }
        }
    }
}

这里是 app.config 文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="Unidata_Client.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <Unidata_Client.Properties.Settings>
            <setting name="UnidataUsername" serializeAs="String">
                <value>blah</value>
            </setting>
            <setting name="UnidataPassword" serializeAs="String">
                <value>blah </value>
            </setting>
            <setting name="UnidataHost" serializeAs="String">
                <value>blah</value>
            </setting>
            <setting name="UnidataPort" serializeAs="String">
                <value>123</value>
            </setting>
            <setting name="UnidataAccount" serializeAs="String">
                <value>blah</value>
            </setting>
        </Unidata_Client.Properties.Settings>
    </userSettings>
</configuration>

这是我使用设置的方式:

 using (var session = UniObjects.OpenSession(Settings.Default.UnidataHost,
                int.Parse(Settings.Default.UnidataPort),
                Settings.Default.UnidataUsername,
                Settings.Default.UnidataPassword,
                Settings.Default.UnidataAccount,
                "udcs"))
            {
                .....
            } 

【问题讨论】:

  • 您没有指定其他详细信息,如果没有更多解释,任何人都无法提供任何信息。
  • 您能否发布有关如何访问设置的代码?另外,您可以发布您的 app.config 文件吗?
  • 当你说调试时未填充时,是指在调试器中单步执行还是在调试模式下运行应用程序时?
  • 我的意思是在调试模式下运行应用程序时。
  • 投反对票的人会删除反对票吗?我提供了尽可能多的信息。

标签: c# .net visual-studio


【解决方案1】:

您正在使用“usersettings”(设计器中的范围“用户”)。
更改(非默认)后,这些设置会存储在您的个人资料中的某个位置。
这些设置会覆盖应用程序目录中的设置

您能否尝试将设置更改为设计器中的“应用程序”范围并再次运行?

如果你有值,你可以确保用户设置在你的配置文件目录中被覆盖。

在 C:\Users\XX\AppData\Local\ApplicationName\Version\ 中查找文件 user.config

【讨论】:

  • 在VS2013中(其他版本不清楚),有一个小按钮叫Synchronizesee screenshot here
【解决方案2】:

您的 app.config 是否被复制并重命名为调试输出目录中的 MyApp.exe.config?

【讨论】:

  • 如果您在运行时附加了调试器,MyApp.vshost.exe.config 文件中是否存在设置?
猜你喜欢
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
相关资源
最近更新 更多