c # нет соответствующего app.config после выпуска

может кто-нибудь, пожалуйста, скажите мне, как обращаться с app.config? Он создал себя, когда я создал некоторые значения в app.Properties. Я установил файл кода в «CopyAlways». Но когда я компилирую приложение в режиме отладки или выпуска, отредактируйте config manualy (с помощью Notepad) и запустите приложение, оно ведет себя так же, как нет изменений в файле конфигурации. Я попытался изменить app.config, appname.exe.config и даже appname.vschost.exe.config.

Что еще более интересно для меня, так это то, что я могу создать приложение, а затем скопировать исходные файлы (файлы appname.exe и dll) без какого-либо файла конфигурации в любую новую папку и запустить приложение. Он подключается к серверу, несмотря на то, что нет конфигурации, где хранится IP.

Я нашел только вопросы об изменении app.config во время выполнения кода. Но этого я не хочу. У меня есть конфиг для данных, которые не меняют много. И. Настройки для пользовательских настроек (цвет записи в datagrid и т. Д.).

Я стараюсь, что конфиг читается каждый раз, когда приложение запускается. Должен ли я создать собственный файл конфигурации, который будет находиться в той же папке, что и exe, и будет читаться каждый раз при запуске приложения?

Только поддержка, которую я нашел в msdn, - это способ создания app.config.

1
nl ja de
являются ли эти настройки UserSettings или ApplicationSettings?
добавлено автор Jehof, источник
Я управляю ими trought Свойства на вкладке Настройки. Сфера применения - Пользователь. Но такая же ситуация возникает, когда я устанавливаю ее в приложение.
добавлено автор Martin Brabec, источник
Вы посмотрели на преобразования конфигурации приложения? Если для вашего типа проекта нет встроенной поддержки Visual Studio, я бы рекомендовал посмотреть Расширение медленного Cheetah .
добавлено автор oleksii, источник

2 ответы

Настройки приложения, которые находятся в UserScope, хранятся в Application.LocalUserAppDataPath (Обычно это C: \ Documents and Settings \ имя_пользователя \ Local Settings \ Application Data \ как базовый путь + следующая схема \ CompanyName \ ProductName \ ProductVersion ). Поэтому при запуске приложения пользователь user.config хранится в этой папке и используется для дальнейшего запуска вашего приложения.

Приложение app.config вашего приложения содержит только значения по умолчанию, если в пути выше не найдено user.config.

Откройте проводник и проверьте путь к Application.LocalUserAppDataPath, если есть файл .config вашего приложения. Если удалите его или измените настройки в этом файле.

0
добавлено
Итак, если я задаю область применения Application, она должна получить информацию из app.config, не так ли? Но даже если я устанавливаю область приложения, я все еще могу сделать новую сборку, скопировать exe и dll-файлы в новое место и начать и подключиться к серверу. Но IP-адрес сервера всегда извлекается из app.config (appname.Properties.Settings.Default.mysqlServer).
добавлено автор Martin Brabec, источник

вам не нужно копировать приложение app.config или устанавливать его как «CopyAlways».

Когда вы создаете визуальную копию студии, она автоматически переименовывает ее applicationName.exe.config

поэтому, если ваше приложение: MyApplication.exe, вы должны найти в корзине файл MyApplication.exe.config

Вы запутываете app.config с настройками приложения, которые хранятся в файле user.config внутри каталога UserProfile.

Обзор настроек приложения

Архитектура параметров приложения

Они предназначены для использования в качестве предпочтений пользователей в качестве фона, предпочтений в области просмотра и т. Д. И т. Д.

Вместо этого, если вы хотите легко изменить переменную config, вы должны использовать узел appSettings в app.config

    
    

и получить доступ к нему из вашего кода:

ConfigurationManager.AppSettings["ServerIp"]

ConfigurationManager.AppSettings

0
добавлено
Я нашел это. Но все, что я хочу сделать, это создать выпуск и скопировать это приложение на несколько компьютеров, где каждый компьютер будет иметь некоторые специальные настройки. И если иногда меняются аддоры сервера, я хочу перейти в папку приложения, найти конфигурацию, открыть ее в блокноте, отредактировать IP и сохранить. Когда приложение запустится после этого обновления, оно подключится к другому серверу. Я могу изменить любую возможную конфигурацию, но похоже, что приложение не зависит от любого файла конфигурации. Похоже, приложение делает свой собственный файл конфигурации, не видимый для меня.
добавлено автор Martin Brabec, источник
Так что я должен сам создать app.config? Я хотел использовать графический интерфейс из visual studio. Кстати, я не знаю, почему, но приложение не реагирует на изменения, сделанные этим графическим интерфейсом.
добавлено автор Martin Brabec, источник
Решаемые. При компиляции приложение создает собственную копию конфигурации и установленные значения, сохраняя где-то в самом exe. Затем, когда я копирую только файлы exe и dll для mysql, приложение запускается, и поскольку нет конфигурации, используются значения по умолчанию (в области приложений и пользователя). Если есть конфиг, приложение использует эти значения app.config для области приложения и user.config из LocalUserAppDataPath для пользовательской области.
добавлено автор Martin Brabec, источник
@MartinPotvrzenejBrabec вы пытались использовать ConfigurationManager.AppSettings?
добавлено автор giammin, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot