【问题标题】:applicationSettings in external file外部文件中的应用程序设置
【发布时间】:2013-04-12 21:16:32
【问题描述】:

我一直在尝试使用在 http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource%28VS.85%29.aspx 上找到的一些代码将我的应用程序设置放在外部文件中,但无法使其正常工作。

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings">
          <section name="ConsoleApplication1.Settings" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <ConsoleApplication1.Settings configSource="externalSettings.config" />
    </applicationSettings>
</configuration>

externalSettings.config:

<ConsoleApplication1.Settings>
  <setting name="TestSetting" serializeAs="String">
    <value>Hello</value>
  </setting>
</ConsoleApplication1.Settings>

我正在尝试像您通常那样使用设置:

var test = ConsoleApplication1.Settings.Default.TestSetting;

【问题讨论】:

标签: .net configuration


【解决方案1】:

我确实遇到了同样的问题。 它已在配置中使用正确的命名空间解决

设置类:

namespace ConsoleApp1.Properties {


[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.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.ApplicationScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public string TestSetting {
        get {
            return ((string)(this["TestSetting"]));
        }
    }
}
}

用法:

var test = ConsoleApp1.Properties.Settings.Default.TestSetting;

配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <section name="ConsoleApp1.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />      
</sectionGroup>
</configSections>
  <applicationSettings>
    <Settings configSource="externalSettings.config" />
  </applicationSettings>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
</configuration>

externalSettings.config:

<ConsoleApp1.Settings>
<setting name="TestSetting" serializeAs="String">
 <value>Hello</value>
</setting>
</ConsoleApp1.Settings>

【讨论】:

    【解决方案2】:

    查看这篇文章

    AppSettings on a different .config file not being updated

    只需与您的解决方案进行比较

        <appSettings file="Settings.config">
        <add key="RestartApp" value="-1" />
      </appSettings>
    
    
      <appSettings>
        <add key="AppTitle" value="MVC Web Access" />
        <add key="DefaultWebpage" />
        <add key="CustomCSS" />
        <add key="TktsEmailTo" value="email@email.com" />
        <add key="EmailFrom" value="email@email.com" />
        <add key="EmailFromSMTP" value="mail.email.com" />
        <add key="EmailFromPW" value="fakePassword" />
      </appSettings>
    
    
      <appSettings file="Settings.config">
        <add key="RestartApp" value="-1" />
        <add key="AppTitle" value="New title" />
        <add key="DefaultWebpage" value="index.aspx" />
        <add key="CustomCSS" />
        <add key="TktsEmailTo" value="newemail@email.com" />
        <add key="EmailFrom" value="newemail@email.com" />
        <add key="EmailFromSMTP" value="mail.email.com" />
        <add key="EmailFromPW" value="NewFakePassword" />
      </appSettings>
    

    我用这种方法成功地将我的 appSettings 移动到另一个文件

    希望对你有帮助

    【讨论】:

    • 我正在尝试使用 applicationSettings 而不是 appSettings。
    • 我现在使用 appSettings 进行了测试,它确实有效,但是我不想将其标记为答案,因为我更喜欢使用 applicationSettings,因为它是类型安全的并且不需要类型转换。跨度>
    猜你喜欢
    • 2013-01-12
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多