У меня есть приложение с заданной переменной, к примеру
string str = "example";
Само собой она без каких либо доп файлов храниться в exe-шнике программы вместе с присвоенным значением. Могу ли я изменять ее уже после компиляции? В частности я хочу сделать отдельную программу конфигурации, которая меняет в программе с переменной значения. И каждый раз программа открывается уже с заданными перемеренными, будто в первый раз.
Такого эффекта можно добиться и чтением ini файла с конфигом, то мне не нужны лишние файлы в папке с программой, только exe-шник.
Для вышеописанного необходима рекомпиляция, или можно как-то изменить тот самый string из вне?
PS: задача именно в изменении самой программы. Это значит, что она должна в итоге запускаться без каких либо дополнительных файлов и действий, как обычный exe.
Вы не должны менять константы в исполнимом файле. Дело в том, что вы не знаете, где и как такая константа будет использована. Например, компилятор C# обычно объединяет одинаковые константы в одну, так что изменения в одной константе могут привести к очень странным последствиям.
Пример:
static void Main(string[] args)
{
DoTerribleHack();
Console.WriteLine("привет");
}
static unsafe void DoTerribleHack()
{
string s = "привет";
fixed (char* p = s)
{
p[0] += '\x6';
p[2] += '\x16';
p[5] -= '\xe';
}
}
Программа выводит, как некоторые уже догадались,
хрювед
Поэтому я бы очень не рекомендовал менять ваш скомпилированный файл. Правильное место для конфигурации — дополнительный файлы, например, App.config.
Пример для App.config:
Сам файл:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
</startup>
<appSettings> <!-- эту часть вы добавляете: -->
<add key="greeting" value="привет" />
</appSettings>
</configuration>
В проект добавляете ссылку на System.Configuration.dll, и пишете:
var greeting = ConfigurationManager.AppSettings["greeting"];
Console.WriteLine(greeting);
Да, это больше одного файла.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не обрабатывается кнопка при ее нажатии, хотя скрипт к кнопке подключен, метод вызывается, но через breakpoint приложение не останавливает при...
Изменяю данные пользователя на сайте, user_'у присваиваются поля user'a, но изменения не вступают в силуЕсли же изменять поля пользователя по отдельности...
Как реализовать функцию загрузки всех файлов из X директории в Y директорию на ftp