@Gatix

Как хранить настройки программы без внешних файлов (C#)?

Нужен способ как-то записать данные настроек программы без создания внешних файлов, настройки должны быть записаны раз и навсегда в программу (через передачу в параметр при вызове программы в консоли думаю реализовать). Думал о варианте эти данные настроек держать в самом исходном коде, но как можно в код программы ещё что-то записать, что бы после выполнения с определённым параметром билд выходил с нужными настройками прописанными в коде?
Edit: Слышал о такой вещи как Source Generator, подойдёт такое для моей задачи?
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
@Gatix Автор вопроса
Проблема решена с помощью Mono.Cecil, создаю в готовом билде класс конфига, и через другой билд, при помощи Mono.Cecil изменяю первый билд так что бы в конфиге хранились нужные данные
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
Griboks
@Griboks Куратор тега C#
Вы можете хранить настройки программы в совершенно разных местах. Но если вам не нравятся конкретно файлы, то просто скройте их (в свойствах аттрибут "скрытый").

Но не надо скрывать файлы настроек, потому что, очевидно, они потребуются пользователям.
Ответ написан
@Myclass
Не совсем понятно, кто вводит эти настройки? На каждом компьютере свои? Сколько таких компьютеров? Нельзя на уровне комплиляции создавать каждому компу свою версию exe-шника? Ведь так намного проще - разные виды создаются в одном месте. После каких-либо новых функций создаётся например 100 копий этого exe. Для каждого компа - своя. От-туда и раскидывается по компам уже в готовом формате. Такой процесс можно автоматизировать. И все разные конфигурации сохраняются тоже центрально. В файле или базе данных - на усмотрение.
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
Ответ написан
Комментировать
Adler_lug
@Adler_lug
Если сильно извернуться, то можно сделать так, что бы какие-то произвольные данные дописывались в оверлей самого запускаемого файла, а потом оттуда вычитывалось. Как это сделать ограничено только вашей фантазией.
Что-то динамически меняющееся так естественно не получится сохранять, т.к. это просто неудобно, но что-то такое, что бы раз сохранить и забыть можно.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var server = "https://ya.ru";
            var template = $@"namespace StsServerIdentity {{
    public class Settings
    {{
        public const string Server = ""{server}"";
        public const int Port = 80;
        public const string User = """";
        public const string Password = """";
    }}
}}
";
            Console.WriteLine(template);
        }
    }
}


Идея думаю понятная. Модифицируете под себя например добавив обработку аргументов и запускаете программу и последующий билд проекта в цикле
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы