编译器无法在app.config中找到属性

时间:2018-06-22 15:36:36

标签: c# config

编译器无法在app.config中找到属性(他引发SettingsPropertyNotFoundException)。 这是代码:

class Program
{
    static void Main(string[] args)
    {
        ConfigurationFile settings = new ConfigurationFile();
        settings.SoundFile = "ring.wav";
        settings.BackgroundColor = Color.Red;
        settings.Save();
        Console.WriteLine("finished");
        Console.ReadLine();
    }
}
sealed internal partial class ConfigurationFile : global::System.Configuration.ApplicationSettingsBase
{
    public string SoundFile
    {
        get
        {
            return ((string) this["SoundFile"]);
        }
        set
        {
            this["SoundFile"] = value;
        }
    }

    public global::System.Drawing.Color BackgroundColor
    {
        get
        {
            return ((global::System.Drawing.Color) this["Background"]);
        }
        set
        {
            this["Background"] = value;
        }
    }

}

我首先认为我会选择除app.config文件中的其他名称,但它们是相同的。这是我第一次使用app.config,所以我想我做错了什么。如果有人可以帮助我,我会很好。

2 个答案:

答案 0 :(得分:0)

您不必以这种方式使用设置。如果您[右键单击项目->添加->新建项目->设置文件(Settings1.settings为默认名称)->配置属性),则可以像这样进一步使用它

static void Main(string[] args)
{

    Settings1.Default.Background = Color.Red;
    Settings1.Default.SoundFile = "ring.wav";
    Settings1.Default.Save();
    Console.WriteLine("finished");
    Console.ReadLine();
}

答案 1 :(得分:0)

您要使用的设置是与应用程序配置设置不同的项目设置。 另外,您还需要使用以下任一属性标记属性:

[System.Configuration.ApplicationScopedSetting]
public string SoundFile

//或

[System.Configuration.UserScopedSetting]
public string SoundFile

保存只会将更改保存在项目的“属性”部分下的Settings.settings中。

可以通过访问应用程序配置设置(您还需要在项目中添加对System.Configuration程序集的引用):

System.Configuration.ConfigurationManager.AppSettings["SoundFile"];

如果要在配置文件中使用ApplicationConfiguration,则可以执行以下操作:

    public string SoundFile
    {
        get
        {
            return ConfigurationManager.AppSettings["SoundFile"];
        }

        set
        {
            ConfigurationManager.AppSettings["SoundFile"] = value;
        }
    }

它不会将值保存到文件中,但会在当前会话期间保留更新的值。