none
如何设置一个非默认的应用程序设置的命名空间? RRS feed

  • 问题

  • 新建一个WinForm或WPF应用程序,打开项目属性,转到设置页面,添加一项设置Name。如图。

    然后我们可以这样访问它:WindowsFormsApplication1.Properties.Settings.Default.Name。

    我的问题来了,我想要把这个Settings类放到我规定的命名空间,例如WindowsFormsApplication1.UI.Properties。

    尽管我可以修改Settings.Designer.cs文件,但这样的话,一方面在项目属性窗口中修改项目后,命名空间还是会变回原来的,另一方面,我修改app.config,把gqqnbig改成爱让一切都对了,程序代码取到的值还是gqqnbig。

    <configuration>
        <configSections>
            <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                <section name="WindowsFormsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
            </sectionGroup>
        </configSections>
        <userSettings>
            <WindowsFormsApplication1.Properties.Settings>
                <setting name="Name" serializeAs="String">
                    <value>gqqnbig</value>
                </setting>
            </WindowsFormsApplication1.Properties.Settings>
        </userSettings>
    </configuration>

    我用记事本打开过settings.settings:

    <?xml version='1.0' encoding='utf-8'?>
    <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WindowsFormsApplication1.Properties" GeneratedClassName="Settings">
      <Profiles />
      <Settings>
        <Setting Name="Name" Type="System.String" Scope="User">
          <Value Profile="(Default)">gqqnbig</Value>
        </Setting>
      </Settings>
    </SettingsFile>

    即使修改了GeneratedClassNamespace,在项目属性窗口中一修改,GeneratedClassNamespace又会恢复成WindowsFormsApplication1.Properties。

    所以我请想问怎么才能修改setting类的命名空间。谢谢。

    2012年7月15日 1:53

答案