Навсегда изменить строку подключения в app.config из кода позади

Мне нужна помощь с программой, которую я разрабатываю, я хочу, чтобы пользователь мог установить строку подключения к базе данных из формы, которую я разработал. Я видел много статей об этом, в том числе много ответов о переполнении стека, которые все работали, но ни один из них не записывает постоянное соединение в файл app.config, что означает, что когда приложение закрывается, строка соединения сохраняет свое прежнее значение (во время отладки), Я хочу знать, есть ли способ решить эту проблему.

Я уже пробовал это: Как я могу обновить app.config connectionstring Значение источника данных в C#?

И это то, что я сейчас использую:

http://www.codeproject.com/Questions/388444/How-change-connection-string-dynamically-in-csharp См. решение 2


person Blank EDjok    schedule 20.02.2014    source источник
comment
Попробуйте следующий ответ: stackoverflow.com/a/1357453/1661209   -  person Max    schedule 20.02.2014
comment
если эта проблема предназначена только для отладки, то это связано с тем, что файл конфигурации обновляется при сборке проекта, и эта проблема исчезнет при его развертывании.   -  person Milan Raval    schedule 20.02.2014
comment
Вам нужно будет переписать файл конфигурации и перезапустить приложение.   -  person Grant Thomas    schedule 20.02.2014
comment
@Milan Raval Интересно, значит, вы предполагаете, что когда приложение упаковано и развернуто на клиентской машине, как только он установит строку подключения, она НЕ изменится снова, даже если он перезапустит приложение?   -  person Blank EDjok    schedule 20.02.2014
comment
Одна из проблем с попыткой изменить app.config заключается в том, что у вас может не быть разрешения на это, если приложение установлено в защищенной папке, например Program Files.   -  person Dirk    schedule 20.02.2014
comment
Интересно, есть ли способ установить разрешения или доступ к папке, прежде чем я смогу это сделать, или он просто отобразит всплывающее окно с вопросом, следует ли предоставить доступ к приложению?   -  person Blank EDjok    schedule 20.02.2014
comment
@Blank EDjok: чтобы проверить, что вы можете сделать, запустите application.exe из папки отладки и посмотрите, относится ли изменение к делу или нет. Я также согласен с Дирком, что вы также должны позаботиться о разрешении.   -  person Milan Raval    schedule 20.02.2014
comment
Хорошо, спасибо всем за ваш вклад, я проверю это.   -  person Blank EDjok    schedule 20.02.2014


Ответы (1)


Предполагая, что это приложение Forms/Console с именем WindowsFormsApplication1:

При запуске приложения в Visual Studio в режиме отладки будет обновлен файл:

bin\Debug\WindowsFormsApplication1.vshost.exe.Config

Каждый раз, когда вы завершаете сеанс отладки, этот файл затем возвращается к тому, что содержится в файле app.config вашего проекта.

Есть причины такого поведения, которые у меня нет времени сейчас объяснять.

Когда вы запускаете свое приложение автономно, то есть не в Visual Studio, файл app.config, развернутый с двоичными файлами вашего приложения, будет файлом, который будет обновлен.

Например, я скопировал вывод моей папки bin\Release (за исключением любых файлов *.vshost.*) в другой каталог вне структуры проекта, запустил приложение и, конечно же, мои изменения конфигурации были сохранены в app.config.

person Kev    schedule 20.02.2014
comment
Ого!! Спасибо, теперь я понял, поэтому я не могу постоянно обновлять настройки в файле app.config моих проектов во время режима отладки. - person Blank EDjok; 20.02.2014
comment
Похоже, это так. В голове понимаю почему, но сейчас нет времени объяснять :) - person Kev; 20.02.2014