GrabiCraft Ответов: 1

C# settingfile для консольного приложения


Поэтому я хочу сделать файл, который хранит определенную информацию, которую можно редактировать, например:
(lvl2 = false)
//Just imagine that the user just wanted to play level 2

if (lvl2 = false){
Console.Writeline("Sorry but you didn't unlock level 2 yet");

if (lvl2 = true){
Console.Writeline("You entered level 2...");
//Here the user gets redirected to level 2
}

Поэтому я подумал о файле настроек. Не имеет значения, является ли это XML или просто обычный метод project & gt;add attribute> configurationfile, я просто не понимаю, как извлечь из него данные.

Что мне нужно сделать, если я хочу проверить, является ли lvl2 = true из файла настроек?

Спасибо за каждый полезный ответ.

Что я уже пробовал:

Я пытался
lvl1 = ConfigurationManager.AppSettings.Get("lvl1");
и
using System;
using System.Configuration;
using System.Collections.Specialized;

namespace ConConfig
{
    class Program
    {
        static void Main(string[] args)
        {
            string sAttr;

            // Read a particular key from the config file            
            sAttr = ConfigurationManager.AppSettings.Get("Key0");
            Console.WriteLine("The value of Key0: " + sAttr);

            // Read all the keys from the config file
            NameValueCollection sAll;
            sAll = ConfigurationManager.AppSettings;

            foreach (string s in sAll.AllKeys)
                Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));
           Console.ReadLine();
       }
    }
}

Но это не сработало, и я получил код ошибки, что configurationManager недоступен в текущем контексте с CS0103. Я также поискал в интернете, но не нашел решения.

Это также, похоже, не решает проблему, так как я получаю ошибку, что свойства не находятся в текущем контексте.
using System;
using System.Configuration;
using System.Collections.Specialized;

namespace ConConfig
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Properties.Settings.Default.lvl2)
            {
                Console.WriteLine("Sorry but you didn't unlock level 2 yet");
            }
            else
            {
                Console.WriteLine("You entered level 2...");
            }

            Properties.Settings.Default.lvl2 = true;
            Properties.Settings.Default.Save();
        }
    }
}

1 Ответов

Рейтинг:
2

OriginalGriff

Самый простой способ-открыть свой проект в VS и дважды щелкнуть "свойства" на панели обозревателя решений.
На открывшейся странице нажмите кнопку" Настройки " слева, и вы получите пустую страницу, за исключением центрального сообщения: нажмите на сообщение.
В столбце" имя "поставьте" lvl2", установите" Type "в" bool", оставьте" Scope "в качестве" User "и введите" False "в столбце" Value".
Сохраните и закройте страницу.
Теперь в вашем консольном приложении вы можете писать:

if (Properties.Settings.Default.lvl2)
    {
    Console.Writeline("Sorry but you didn't unlock level 2 yet");
    }
else
    {
    Console.Writeline("You entered level 2...");
    }

И вы можете сохранить новое значение:
Properties.Settings.Default.lvl2 = true;
Properties.Settings.Default.Save();
Файл настроек находится в папке app/Bin/Release или app/Bin/Debug и является удобочитаемым XML-файлом.


GrabiCraft

Прежде всего спасибо за ответ.
Я сделал именно то, что вы объяснили, но я получаю ошибку, что свойства снова недоступны с кодом ошибки CS0103. У вас есть какие-нибудь идеи, как я мог бы решить эту проблему?
Спасибо.

OriginalGriff

Проверьте свой регистр: C# чувствителен к регистру, а "свойства" - это не то же самое, что "свойства"
Если это не так, скопируйте и вставьте свой код.

GrabiCraft

Спасибо, я обязательно попробую это сделать, но так как меня, к сожалению, нет дома, я не могу попробовать это до завтра. Другой ответ придет завтра.
Спасибо!

GrabiCraft

Вот картинка моего кода:
https://plus.google.com/107961560865850716097/posts/MbUpLbMS4WL

OriginalGriff

Фотография вашего экрана, сделанная на вашем телефоне, загруженная в google docs и размещенная ссылка... ах милый...
На вашей клавиатуре есть кнопка" PrtSc "или" Print Screen". Удерживая нажатой клавишу ALT, нажмите ее, и она скопирует текущий экран приложения в буфер обмена в виде растрового изображения. Таким образом, вы получаете гораздо лучшие изображения...
Но для кода выделите текст в VS и скопируйте его, а затем вставьте непосредственно в ответ - это гораздо более удобно, чем изображение вашего экрана.

Теперь убедитесь, что вы сохранили страницу настроек и что ваше свойство видно.

GrabiCraft

Хорошо я сделаю это когда снова буду дома

GrabiCraft

Код загружен. Просто идите под воду: этот тоже, похоже, не решил проблему.

OriginalGriff

Попробуйте изменить
Свойства.Настройки.Умолчанию.lvl2 = истина;
к
Свойства.Настройки.Default.lvl2 = !свойства.Настройки.Умолчанию.lvl2;
и запустить его несколько раз.

GrabiCraft

И тоже не работает. Хммм....